mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
rename compiler2.parser to v.parser etc
This commit is contained in:
parent
98b81252b7
commit
14e9c3c7bb
@ -4,7 +4,7 @@
|
||||
module ast
|
||||
|
||||
import (
|
||||
compiler2.token
|
||||
v.token
|
||||
)
|
||||
|
||||
|
@ -2,7 +2,7 @@ module cgen
|
||||
|
||||
import (
|
||||
strings
|
||||
compiler2.ast
|
||||
v.ast
|
||||
)
|
||||
|
||||
struct Gen {
|
||||
@ -10,13 +10,13 @@ struct Gen {
|
||||
|
||||
}
|
||||
|
||||
pub fn gen(program ast.Program) {
|
||||
pub fn gen(program ast.Program) string {
|
||||
mut g := Gen{out:strings.new_builder(100)}
|
||||
for expr in program.exprs {
|
||||
g.expr(expr)
|
||||
g.writeln('')
|
||||
}
|
||||
println(g.out.str())
|
||||
return (g.out.str())
|
||||
}
|
||||
|
||||
pub fn (g &Gen) save() {
|
@ -4,10 +4,10 @@
|
||||
module parser
|
||||
|
||||
import (
|
||||
compiler2.scanner
|
||||
compiler2.ast
|
||||
compiler2.token
|
||||
compiler2.table
|
||||
v.scanner
|
||||
v.ast
|
||||
v.token
|
||||
v.table
|
||||
)
|
||||
|
||||
struct Parser {
|
@ -1,9 +1,9 @@
|
||||
module parser
|
||||
|
||||
import (
|
||||
compiler2.ast
|
||||
compiler2.cgen
|
||||
compiler2.table
|
||||
v.ast
|
||||
v.cgen
|
||||
v.table
|
||||
|
||||
)
|
||||
|
||||
@ -55,25 +55,45 @@ fn test_cgen2() {
|
||||
|
||||
fn test_cgen() {
|
||||
//if true { return }
|
||||
s := [
|
||||
input := [
|
||||
'2 + 3',
|
||||
'2+2*4',
|
||||
//'(2+2)*4',
|
||||
'x := 10',
|
||||
//'x := 10'
|
||||
'a := 12',
|
||||
]
|
||||
output := [
|
||||
'2 + 3',
|
||||
'2 + 2 * 4',
|
||||
//'(2 + 2) * 4',
|
||||
'int x = 10;',
|
||||
'int a = 12;',
|
||||
]
|
||||
//expr := parse_expr('3 + 7 * 2')
|
||||
//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,
|
||||
//parse_expr('2 * 2'),
|
||||
//]
|
||||
for s in input {
|
||||
e << parse_expr(s, table)
|
||||
}
|
||||
program := ast.Program{exprs:e}
|
||||
cgen.gen(program)
|
||||
res := cgen.gen(program)
|
||||
println('========')
|
||||
println(res)
|
||||
println('========')
|
||||
lines := res.split_into_lines()
|
||||
mut i := 0
|
||||
for line in lines {
|
||||
if line == '' {
|
||||
continue
|
||||
}
|
||||
println('"$line" "${output[i]}"')
|
||||
assert line == output[i]
|
||||
i++
|
||||
if i >= output.len {
|
||||
break
|
||||
}
|
||||
}
|
||||
//cgen.save()
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ module scanner
|
||||
|
||||
import (
|
||||
os
|
||||
compiler2.token
|
||||
v.token
|
||||
// strings
|
||||
)
|
||||
|
@ -4,7 +4,7 @@
|
||||
module scanner
|
||||
|
||||
import (
|
||||
compiler2.token
|
||||
v.token
|
||||
)
|
||||
|
||||
fn test_scan() {
|
Loading…
Reference in New Issue
Block a user