Arithmetic evaluation: Difference between revisions
m
→{{header|EasyLang}}
Line 1,346:
.
subr init0
err = 0
.
Line 1,359:
.
proc ast_print nd . .
write "AST:
for i to len
write " ( "
write
write
write
write " )"
.
print " Start: " & nd
.
func node .
return len
.
#
Line 1,381:
if tok$ = "n"
nd = node
ntok
elif tok$ = "("
Line 1,399:
while tok$ = "*" or tok$ = "/"
nd = node
ntok
ndx = nd
.
Line 1,411:
while tok$ = "+" or tok$ = "-"
nd = node
ntok
ndx = nd
.
Line 1,424:
.
func eval nd .
if
return
.
le = eval
ri = eval
a$ =
if a$ = "+"
return le + ri
Line 1,454:
4 * 6
4.2 * ((5.3+8)*3 + 4)
2.5 * 2 + 2 * 3.14
</syntaxhighlight>
|