使用ANTLR v4.9.3,我创建了以下语法…
grammar G ;
start : s EOF ;
s : 'ba' a b ;
a : 'b' ;
b : 'a' ;
考虑到上述语法,我认为下面的派生是可能的…
start→s→'ba' a b→'ba' 'b' b→'ba' 'b' 'a' = 'baba'
但是,我的Java测试程序指出,在试图解析字符串baba时会发生语法错误。
字符串baba不应该使用语法G 生成
我将Antlr4与python3运行时结合使用。在我试图解析的语言中,有许多操作(大约50个)接受OPNAME [ parameter1, parameter2, parameter3 ]格式中固定数量的参数。
我以前有一种语法,有这样的规则:
statement: OP1 '[' NUM ']'
| OP2 '[' NUM ',' NUM ']'
| OP3 '[' NUM ',' NUM ',' NUM ']'
| OP2o
我正在尝试基于现有的Java语法构建自己的解析器。
即使我使用了来自Java7的语法,也可以生成解析器,并使用antlr-4.9.3- TestRig提供的代码:
1 public class Test {
2 public static void main() {
3 test
4 int b = 1;
5 }
6 }
我得到以下错误:
第4行:8输入'test\n int‘没有可行的替代方案
因此,由于某种原因,它将不正确的"test“行与正确的"int”行连接起来。此外,当它应该指向"test“(第3行)时,它还
我开始学习ANTLR。其目的是将字符串“转换”为SQL语句。
我想做的事情有一个简单的例子:
如果我收到字符串"name = A and age = B" -- ANTLR --> "select * from USERS where name = 'A' and age = 'B'"
我一直在阅读一些关于ANTLR的信息,下面是一些例子,但这些只是将输入的字符流(源文件)转换为AST。但是,如何使用ANTLR来翻译输入消息,并使用已翻译的输出?
你能给我一些高光或告诉我在哪里可以找到一些有关这方面的信息?
我正在使用Ecl