Antlr 动态调用在运行时更新规则
发送AT命令时,它通常由\r\n终止,但实际上,这实际上是两个“寄存器变量”S3和S4 默认情况下,S3='\r'和S4='\n',但用户可以在运行时使用命令ATSx更改它们= 我如何在我的Antlr lexer/解析器中处理这个问题 每个命令的形式为[parameters]S3S4,如果用户更改S3或S4的值,我如何处理Antlr 动态调用在运行时更新规则,antlr,antlr3,Antlr,Antlr3,发送AT命令时,它通常由\r\n终止,但实际上,这实际上是两个“寄存器变量”S3和S4 默认情况下,S3='\r'和S4='\n',但用户可以在运行时使用命令ATSx更改它们= 我如何在我的Antlr lexer/解析器中处理这个问题 每个命令的形式为[parameters]S3S4,如果用户更改S3或S4的值,我如何处理 提前感谢您提供的任何帮助。不,AFAIK没有动态更改lexer或parser规则的选项。当然,也有一些可能的解决方法,比如在更改寄存器变量时重新创建lexer/parser’
提前感谢您提供的任何帮助。不,AFAIK没有动态更改lexer或parser规则的选项。当然,也有一些可能的解决方法,比如在更改寄存器变量时重新创建lexer/parser’,但我想这不会很好
编辑 mawg撰写了
重新创建lexr&poarser(好吧,我想只有lexer)——你能在这方面做些什么吗
重写原始语法文件(只有lexer规则,正如您正确提到的)并动态重新编译它。请看:没有人知道吗?嘿,帮帮忙!!!!请…重新创建lexr&poarser(好吧,我想只有lexer)-你能解释一下吗?我正在命令集解析Hayes调制解调器。AT命令定义良好,我可以用lexer/parser规则完全覆盖它们。正如我所说的,每一行通常以\r\n结尾,但这些都在寄存器S3和S4中,用户可以更改这些寄存器。除了“blank”和\n之外,我从未见过任何东西,但理论上它们可能是任何东西。。。