C#上的Vhdl解析器

时间:2011-08-23 22:30:47

标签: c# parsing antlr vhdl

我需要制作一个vhdl解析器。我决定从他们的网站http://www.antlr.org/grammar/1202750770887/vhdl.g使用antlr解析器生成器和vhdl语法。 检查语法时遇到问题并出现此错误:

  

以前的令牌定义永远不能匹配,因为之前   令牌匹配相同的输入:LETTER,INTEGER,DIGIT ......

如果有人之前使用过这个,请告诉我语法是否不正确或者我是否正在做其他错误的事情。

1 个答案:

答案 0 :(得分:2)

来自vhdl.g

BASIC_IDENTIFIER
   :   LETTER ( '_' | LETTER | DIGIT )*
   ;

...

LETTER  
  :  'a'..'z' | 'A'..'Z'
  ;

LETTER,INTEGER和DIGIT看起来都应该是一个片段,因为它们永远不会被解析器规则调用。

fragment LETTER 
  :  'a'..'z' | 'A'..'Z'
  ;
编辑:正如Bart所说,由于BASIC_IDENTIFIER在语法中列在LETTER之前并涵盖了LETTER所做的所有情况,因此词法分析器永远不会创建任何LETTER令牌。这就是导致警告的原因。