高级计算器与 SQL 解析:功能、实现与应用
高级计算器的表达式语法与规则
高级计算器的表达式语法是之前示例的适度扩展版本。新增了用于处理六个比较运算符的 CMP 规则,通过 CMP 的值来区分具体的运算符,同时还有用于创建赋值节点的赋值规则。对于内置函数(由保留名称 FUNC 标识)和用户函数(由用户符号 NAME 标识),分别有不同的规则。
- 表达式列表(explist)规则 :构建用于函数调用实际参数的表达式的抽象语法树(AST)。
- 符号列表(symlist)规则 :为函数定义中的虚拟参数构建符号的链表。这两个规则都是右递归的,以便按所需顺序轻松构建列表。
以下是顶级计算器的语法规则:
calclist: /* nothing */
| calclist stmt EOL {
printf("= %4.4g\n> ", eval($2));
treefree($2);
}
| calclist LET NAME '(' symlist ')' '=' list EOL {
dodef($3, $5, $8);
printf("Defined %s\n> ", $3->name); }
| calclist error EOL { yyerrok; printf("> "); }
;
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



