我试图在不调用内置 eval 函数的情况下复制球拍中的 eval 函数。我目前正在使用一个简单的数学词法分析器和解析器
$(define simple-math-lexer
(lexer
((re-+ number10) (token-NUM (string->number lexeme)))
("-" (token--))
("+" (token-+))
;; recursively calls the lexer which effectively skips whitespace
(whitespace (simple-math-lexer input-port))
((eof) (token-EOF))))
(define simple-math-parser
(parser
(start exp)
(end EOF)
(error void)
(tokens a b)
(precs (left - +))
(grammar
(exp ((NUM) $1)
((+ exp exp) (+ $2 $3))
((- exp exp) (- $2 $3))))))
目前我不确定如何为解析器实现乘法。任何建议或帮助链接将不胜感激。