【发布时间】:2010-11-25 21:22:01
【问题描述】:
有什么方法可以在 YACC 项目中添加 2 个或多个操作数,使用 C 语言为 LISP 子集构建解析器,这是语法
“mod”和“let”不区分大小写,符号也不区分
P:
'('LET '('DEF_VARS')' BODY')'
|BODY
;
DEF_VARS:
DEF_VARS DEF
|DEF
;
DEF:
'('SYMBOL OPN')'
;
CUERPO:
BODY EXPR
|EXPR
;
EXPR:
'('OPER OPNS')'
;
OPER:
'+'
|'-'
|'*'
|MOD // %
|'/'
;
OPNS:
OPNS OPN
|OPN
;
OPN:
EXPR
|INT // [-+]?[0-9]+
|SYMBOL //[a-zA-Z][a-zA-Z0-9_]* //a variable
;
我想知道如何使用符号表和加、减、乘、除和取模、元素列表以及声明变量 我不知道如何在代码中使用符号表。
例如,这些句子对该语言有效:
(+ 30 -7 +3)
结果是 26
(* (+ 3 4) (- -5 2))
结果是-49
( lEt ((x(+ 1 2))(y x))(/ (mod x y) 3))
结果为 0
欢迎任何帮助。 提前致谢。
【问题讨论】: