javacc生成的代码的含义?

lingling1989r 2010-05-06 09:10:12
【描述】
听说javacc自动生成AST(抽象语法树)代码是用LL分析法写的,我想参考下,不过有的代码看不懂是什么意思:
比如: jj_la1[6] = jj_gen;
(这句话是在parser中写的各个产生式的方法中出现的语句。)

【我能理解范围】
1)LL分析过程:
若为终极符就匹配读入的token.
若非终极符,就和当前Token共同去ll驱动表中寻找对应的产生式,进行相对应的处理。
2)像这个:switch (jj_nt.kind)
这里的jj_nt.kind还能猜出应该是指的他的predict集合中预计的下一个token类型。

【问题】
jj_lal[6] =jj_gen;
我想知道这句话是要做什么用途的?谢谢。
...全文
151 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingling1989r 2010-05-08
  • 打赏
  • 举报
回复
【问题】
jj_lal[6] =jj_gen;
我想知道这句话是要做什么用途的?谢谢。
uwinb 2010-05-08
  • 打赏
  • 举报
回复
label_3:
while (true) {
switch (jj_nt.kind) {
case AT:
;
break;
default:
jj_la1[3] = jj_gen;
break label_3;
}
参照如上代码,大概猜测一下:jj_gen里记录了当前分析到的字符偏移位置,将她记录到jj_lal[3]中后再通过下面的break跳回到前面重新再来,但刚才分析过的字符丢弃,从接下来的字符继续进行,一般遇到空白分隔符会这样处理

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧