Delphi语法的ANTLR4问题



我找到了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。

相关内容

  • 没有找到相关文章

最新更新