Parsing ANTLR模板化规则
我正在使用ANTLR 4解析SQL子集,目前,我面临一个问题。 我需要一个具有以下结构的谓词规则:Parsing ANTLR模板化规则,parsing,antlr,antlr4,Parsing,Antlr,Antlr4,我正在使用ANTLR 4解析SQL子集,目前,我面临一个问题。 我需要一个具有以下结构的谓词规则: predicate : expr relation expr | between_clause | predicate OR predicate | predicate AND predicate | '(' predicate ')' ; 这里的问题是一个expr规则。有不同类型的谓词,expr应该是不同的,但是前面提到的整个结构都保留了
predicate
:
expr relation expr
| between_clause
| predicate OR predicate
| predicate AND predicate
| '(' predicate ')'
;
这里的问题是一个expr
规则。有不同类型的谓词,expr
应该是不同的,但是前面提到的整个结构都保留了下来
我想以某种方式对谓词
规则进行参数化,以便为不同的谓词类型自动实例化多个规则(上面的规则替换了特定的expr
类型)
在ANTLR 4中可能吗
另外,我有两种选择:
- 复制粘贴
规则并手动替换不同的谓词
规则expr
- 在
规则中有所有可能的备选方案,并验证在目标语言代码中只有一种类型用于特定谓词expr
expr
的不同替代品的确切差异
第二种方法导致在语法层面上接受大量不正确的谓词
语法中总是有你无法避免的错误类型,必须在单独的阶段处理。例如,键入错误或未声明的变量错误。因此,让语法接受错误的程序一点也不奇怪