自制编译器 青木峰郎 笔记 Ch7 JavaCC的action和AST
作者:互联网
7.1 JavaCC中的Action
javacc的规则中可以声明,定义,计算和返回变量。
返回的语义值类型 非终端符号名 参数列表
{
临时变量声明
}
{
规则{action}
}
e.g:
// #@@range/defstruct{
//设置返回类型为StructNode
StructNode defstruct():
{
//声明临时变量
Token t;
String n;
List<Slot> membs;
}
{
t=<STRUCT> n=name() membs=member_list() ";"
{
//返回
return new StructNode(location(t), new StructTypeRef(n), n, membs);
}
}
要注意写在action之后的token也完全可能因为之前的Lookahead被扫描进来了
这里获取非终端符号语义值的方法就是n=name(),相当于调用name对应的解析并且将返回的值赋给n。
t=
终端符号-Token
标签:返回,name,AST,Token,StructNode,编译器,action,青木,membs 来源: https://www.cnblogs.com/xuesu/p/14379293.html