在运行时动态更新规则

时间:2009-12-03 06:23:23

标签: antlr antlr3

当发送AT命令时,它通常由\ r \ n终止,但事实上,这些实际上是两个'寄存器变量'S3和S4。

默认情况下,S3 =='\ r'和S4 =='\ n',但用户可以使用命令ATSx =

在运行时更改这些内容

如何在我的Antlr词法分析器/解析器中处理它?<​​/ p>

每个命令的格式为AT [参数] S3S4,如果用户更改S3或S4的值,我该如何处理?

提前感谢您的帮助......

1 个答案:

答案 0 :(得分:1)

不,没有动态更改词法分析器或解析器规则AFAIK的选项。当然,有一些解决办法可能就像在更改寄存器变量时重新创建词法分析器/解析器一样,但是它不会很漂亮,我猜......


修改

  

mawg写道

     

重新创建lexr&amp; poarser(好吧,只有词法分析器,我猜) - 你能解决这个问题吗?

重写原始语法文件(正如您正确提到的那样只有词法分析器规则)并在运行时重新编译它。请参阅:http://java.sun.com/javase/6/docs/api/javax/tools/JavaCompiler.html