1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/compiler2/parser/parser_test.v

80 lines
1.2 KiB
V
Raw Normal View History

2019-12-22 04:34:37 +03:00
module parser
2019-12-24 20:54:43 +03:00
import (
compiler2.ast
compiler2.cgen
compiler2.table
2019-12-24 20:54:43 +03:00
)
2019-12-22 04:34:37 +03:00
fn test_parser() {
2019-12-26 12:02:38 +03:00
//if true { return }
2019-12-22 04:34:37 +03:00
//expr := ast.IntegerExpr {val:10}
//expr := ast.BinaryExpr{}
// print using walk
//expr := parse_expr('3 + 7')
//println('\n')
2019-12-24 20:54:43 +03:00
text_expr := [
'1 += 2',
'1.2 + 3.4',
'4 + 4',
'1 + 2 * 5',
'(2 * 3) / 2',
'3 + (7 * 6)',
'2 ^ 8 * (7 * 6)',
'20 + (10 * 15) / 5', // 50
2019-12-26 12:02:38 +03:00
'(2) + (17*2-30) * (5)+2 - (8/2)*4', // 8
'2 + "hi"',
'x := 10'
]
2019-12-26 12:02:38 +03:00
table := &table.Table{}
for s in text_expr {
// print using str method
x := parse_expr(s, table)
println('source: $s')
println('parsed: $x')
println('===================')
}
2019-12-22 04:34:37 +03:00
}
/*
fn test_cgen2() {
s := '2 + 3
5+7
//x := 100
'
table := &table.Table{}
prog := parse_file(s, table)
cgen.gen(prog)
println('done')
}
*/
2019-12-22 04:34:37 +03:00
2019-12-26 12:02:38 +03:00
fn test_cgen() {
//if true { return }
s := [
'x := 10',
//'x := 10'
]
2019-12-24 20:54:43 +03:00
//expr := parse_expr('3 + 7 * 2')
2019-12-26 12:02:38 +03:00
//expr2 := parse_stmt('a := 3 + "f"')
mut e := []ast.Expr
table := &table.Table{}
for ss in s {
//expr2 := parse_expr('x := 10')
//program := ast.Program{
e << parse_expr(ss, table)
//exprs: [
//expr2,
2019-12-24 20:54:43 +03:00
//parse_expr('2 * 2'),
//]
2019-12-24 20:54:43 +03:00
}
program := ast.Program{exprs:e}
2019-12-24 20:54:43 +03:00
cgen.gen(program)
//cgen.save()
}