0
如何在ANTLR中编写以下BNF语法?ANTLR语法字符串的长度前缀的语法
literal = "{" number "}" CRLF *CHAR8
; Number represents the number of CHAR8s
例如{6}\r\nLENGTH
应该被映射到"LENGTH"
字符串。
下面的工作?
literal:
| '{' ('0'..'9')+ '}\r\n'
{
// C# Code for Lexer
Text = Text.Trim();
int n = int.Parse(Text.Substring(1,Text.Length-2));
Text = "";
for(int i=0;i<n;i++){
input.Consume();
}
}
;
我得到这个作为Lexer规则工作,但问题是我得到不匹配的标记,我没有得到作为文字的标记。
会在2个步骤中做到这一点的解决方案是否可以吗?例如通过两次检查,左边的数字和右边的字符串长度相同。 – user7116
我没有得到你,我不太了解ANTLR,我刚刚看到它生成的C#,并基于我写的这个,问题是,它有几个方法,如LeaveRule等,我想知道什么是我最后声明? LeaveRule()应该被调用或不。 –
@ SwDevMan81为什么C#被从这里删除? ANTLR语法的目标语言是C# –