Antlr的问题,请研究过的朋友进来看一看
目标:做一个伪代码翻译的工作,从sp(原生C和伪码)翻译成标准C.sp中非伪码的部分原封不动的照搬。用的Antlr V4。
sp:
int main()
{
int a = 0;
-Export()//伪码
return 0;
}
生成的标准c:
int main()
{
int a = 0;
MyExport();//翻译后
return 0;
}
g4:
prog: myStat* |
cppStat* ;
myStat : EXPORTFUNC;
cppStat : OtherLine ;
EXPORTFUNC : '-Export()';
OtherLine : OTHER* (NL|EOF);
fragment OTHER :~[\r\n]+ ;
问题:我的思路是把sp按照一行一行的分割,然后cppStat匹配源码,myStat匹配伪码。结果sp中"-Export()"匹配不到myStat,其他行能正确匹配。