Arithmetic evaluation: Difference between revisions

m
(Added 11l)
Line 67:
Dict[String, Symbol] symbol_table
Array[String] tokens
AV tokeni = -1
ASTNode token_node
 
Line 78:
:token_node.symbol = :symbol_table[‘(end)’]
R
AV token = :tokens[:tokeni]
:token_node.symbol = :symbol_table[I token.is_digit() {‘(number)’} E token]
I token.is_digit()
Line 86:
ASTNode t = :token_node
advance()
AV left = t.symbol.nud(t)
L rbp < :token_node.symbol.lbp
t = :token_node
Line 101:
F symbol(id, bp = 0) -> &
I !(id C :symbol_table)
AV s = Symbol()
s.id = id
s.lbp = bp
Line 130:
 
F nud_parens(ASTNode self)
AV expr = expression()
advance(‘)’)
R expr
1,481

edits