我找到了Delphi的antlr3 delphi语法,我正在尝试直到转换为antlr4。但是我有一个奇怪的问题,我不明白。我已经用Antrl4 Delphi Grammar创建了一个仓库
大多数认为似乎都可以使用,但是如果我有一个简单的单元,则有以下内容:
unit TestParser;
interface
procedure Dim(var dd: string; const Dim1: Integer; const Dim2: Integer); overload;
implementation
procedure Dim(var dd: string; const Dim1: Integer; const Dim2: Integer); overload;
begin
//do something
end;
end.
找到第一个过程关键字时,将在Interfacedecl中调用procdecl。但是,一旦我到达var和/或const,它就会打破procdecl并启动varsection/构造,而不是完成procdecl
我必须承认我是Antlr的新手,因此任何帮助都将不胜感激。
整个问题取决于变量名称 dd
。
看来,由于某种原因,解析器将其误认为是十六进制数字。将名称更改为123
。
更改名称后,就不会误认为它是一个数字(例如,添加范围G-Z的字符),一切都很好。但是为什么会发生这种情况,我无法解释。
btw:谢谢Delphi.g4。