0

在 antlrworks 2 中编码来自 antlr v4 的所有示例时,我总是在解析规则警告中得到隐式声明。对于我的简单规则,例如:

type
  : 'Integer'
  | 'Character'  
  | 'Real'       
  | 'String'     
  | 'Short'      
  | 'Long'       
  | 'Double'        
  | 'Signed'        
  | 'Unsigned'   
  | 'Boolean'    
  | structTag    
  | enumTag      
  | declarator   
  ;

任何人都可以给我解决该警告的解决方案,例如上面的最后解决方案。感谢

4

1 回答 1

1

警告是通知您,您将无法在代码中知道您type是否是标识符、字符、真实等,因为您尚未将命名令牌类型分配给相应的令牌。您可以通过为每个标记创建命名词法分析器规则来解决此警告:

INTEGER : 'Integer';
CHARACTER : 'Character';

添加这些新定义后,您不必更改type规则,但添加定义后,您将能够检查令牌类型是否是解析器结果处理代码的一部分INTEGERCHARACTER作为解析器结果处理代码的一部分。

于 2013-06-04T03:13:33.330 回答