永发信息网

如何用 ANTLR 4 实现自己的脚本语言

答案:1  悬赏:70  手机版
解决时间 2021-11-07 05:51
如何用 ANTLR 4 实现自己的脚本语言
最佳答案
在 ANTLR 里,我们写的规则,会生成解析器的代码,这个解析器,会把目标脚本,解析成一个抽象语法树。这颗抽象语法树上,越是靠近叶子节点的地方,结合优先级越高,越是靠近根的地方,结合优先级越低,根据这个特点,我们就可以让 ANTLR 帮我们完成以上的规则:
addExpression
: mulExpression (('+' | '-') mulExpression)*
;
mulExpression
: primaryExpression (('*' | '/') primaryExpression)*
;
primaryExpression
: Decimal
| '(' addExpression ')'
;

上面展示的 ANTLR 规则,在 primaryExpression
中,包括两个可选项,要么是数字,要么是括号表达式,是最高优先级,然后是 mulExpression,优先级最低的是 addExpression
。括号表达式内,是一个 addExpression ,所以,这是一个循环结构,可以处理无限长的四则运算式,比如
1+2*3-(4+5)/6+7+8,会被解析为如下的语法树:
addExpression : 1 + child1_1 - child1_2 + 7 + 8
child1_1 mulExpression : 2 * 3
child1_2 mulExpression : child1_2_1 / 6
child1_2_1 addExpression : 4 + 5
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想在网上卖毛笔要怎么做,才能在网络上卖东西
旧岁采得枝头细雪 今朝飘落胭脂梨叶什么意思
瓦和电的多少度之间怎么换算啊
研究生发表论文必须发在相关专业的期刊上吗
麻团和米饭哪个热量高
牛掌怎么煮更香又脆?
xbox360 如何辨别 9.6A10.83A
2017年四川声乐录取分数线
老婆为什么总对自已的老公性冷淡
UID排序是不是按注册顺序排个的?
苹果是单位一!梨有九十九个,梨比苹果多七分
净界法师:为什么佛菩萨不强调感应神通
设考试成绩的全距为100分,如果六十分以下为一
一个.net程序员应所具备的知识?
可以用哪些办法量出树干一周的长
推荐资讯
在数学三角函数中,为什么说,终边相重的角相
求算出此图的平整场地工程量,求式子
我在普陀丰庄这里 这旁边哪里有酒吧 档次不要
买凶伤人哪里有?
两千亿中国币等于多少英镑
隆鼻第十天,鼻孔一大一小,正常吗
小孩子眼球破裂会怎么样
定制酒定制的都是什么酒
好奇,李现和黄景瑜,直男们会觉得哪个更帅
我女朋友出国了,有没有好诗送给他
中国有哪些著名的错别字?
很喜欢全身涂金粉银粉~脸上身上眼睛里都涂的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?