rename compiler2.parser to v.parser etc
parent
98b81252b7
commit
14e9c3c7bb
|
@ -61,4 +61,4 @@ fn on_test(sender voidptr, p eventbus.Params) {
|
||||||
assert p.get_string("eventbus") == "vevent"
|
assert p.get_string("eventbus") == "vevent"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_test_2(sender voidptr, p eventbus.Params){}
|
fn on_test_2(sender voidptr, p eventbus.Params){}
|
||||||
|
|
|
@ -96,4 +96,4 @@ fn unmarshall_array<T> (s T, m voidptr) array_T {
|
||||||
|
|
||||||
fn unmarshall_map<T> (s T, m voidptr) map_T {
|
fn unmarshall_map<T> (s T, m voidptr) map_T {
|
||||||
return *(*map_T(m))
|
return *(*map_T(m))
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,4 +11,4 @@ fn test_log_factorial() {
|
||||||
assert fact.log_factorial(12) == math.log(479001600)
|
assert fact.log_factorial(12) == math.log(479001600)
|
||||||
assert fact.log_factorial(5) == math.log(120)
|
assert fact.log_factorial(5) == math.log(120)
|
||||||
assert fact.log_factorial(0) == math.log(1)
|
assert fact.log_factorial(0) == math.log(1)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
module ast
|
module ast
|
||||||
|
|
||||||
import (
|
import (
|
||||||
compiler2.token
|
v.token
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ module cgen
|
||||||
|
|
||||||
import (
|
import (
|
||||||
strings
|
strings
|
||||||
compiler2.ast
|
v.ast
|
||||||
)
|
)
|
||||||
|
|
||||||
struct Gen {
|
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)}
|
mut g := Gen{out:strings.new_builder(100)}
|
||||||
for expr in program.exprs {
|
for expr in program.exprs {
|
||||||
g.expr(expr)
|
g.expr(expr)
|
||||||
g.writeln('')
|
g.writeln('')
|
||||||
}
|
}
|
||||||
println(g.out.str())
|
return (g.out.str())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (g &Gen) save() {
|
pub fn (g &Gen) save() {
|
|
@ -4,10 +4,10 @@
|
||||||
module parser
|
module parser
|
||||||
|
|
||||||
import (
|
import (
|
||||||
compiler2.scanner
|
v.scanner
|
||||||
compiler2.ast
|
v.ast
|
||||||
compiler2.token
|
v.token
|
||||||
compiler2.table
|
v.table
|
||||||
)
|
)
|
||||||
|
|
||||||
struct Parser {
|
struct Parser {
|
|
@ -1,9 +1,9 @@
|
||||||
module parser
|
module parser
|
||||||
|
|
||||||
import (
|
import (
|
||||||
compiler2.ast
|
v.ast
|
||||||
compiler2.cgen
|
v.cgen
|
||||||
compiler2.table
|
v.table
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -55,25 +55,45 @@ fn test_cgen2() {
|
||||||
|
|
||||||
fn test_cgen() {
|
fn test_cgen() {
|
||||||
//if true { return }
|
//if true { return }
|
||||||
s := [
|
input := [
|
||||||
|
'2 + 3',
|
||||||
|
'2+2*4',
|
||||||
|
//'(2+2)*4',
|
||||||
'x := 10',
|
'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')
|
//expr := parse_expr('3 + 7 * 2')
|
||||||
//expr2 := parse_stmt('a := 3 + "f"')
|
//expr2 := parse_stmt('a := 3 + "f"')
|
||||||
mut e := []ast.Expr
|
mut e := []ast.Expr
|
||||||
table := &table.Table{}
|
table := &table.Table{}
|
||||||
for ss in s {
|
for s in input {
|
||||||
//expr2 := parse_expr('x := 10')
|
e << parse_expr(s, table)
|
||||||
//program := ast.Program{
|
|
||||||
e << parse_expr(ss, table)
|
|
||||||
//exprs: [
|
|
||||||
//expr2,
|
|
||||||
//parse_expr('2 * 2'),
|
|
||||||
//]
|
|
||||||
}
|
}
|
||||||
program := ast.Program{exprs:e}
|
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()
|
//cgen.save()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ module scanner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
os
|
os
|
||||||
compiler2.token
|
v.token
|
||||||
// strings
|
// strings
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
module scanner
|
module scanner
|
||||||
|
|
||||||
import (
|
import (
|
||||||
compiler2.token
|
v.token
|
||||||
)
|
)
|
||||||
|
|
||||||
fn test_scan() {
|
fn test_scan() {
|
Loading…
Reference in New Issue