小编Eri*_*ton的帖子

antlr 文字字符串匹配:我做错了什么?

我已经使用antlr 3天了。我可以解析表达式、编写侦听器、解释解析树...这是梦想成真。

但后来我尝试匹配文字字符串“foo%”,但失败了。我可以找到很多声称可以做到这一点的例子。我都试过了。

所以我创建了一个小项目来匹配文字字符串。我一定是在做一些愚蠢的事情。

grammar Test;

clause
  : stringLiteral EOF
  ;

fragment ESCAPED_QUOTE : '\\\'';
stringLiteral :   '\'' ( ESCAPED_QUOTE | ~('\n'|'\r') ) + '\'';
Run Code Online (Sandbox Code Playgroud)

简单测试:

public class Test {

    @org.junit.Test
    public void test() {
        String input = "'foo%'";
        TestLexer lexer = new TestLexer(new ANTLRInputStream(input));
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        TestParser parser = new TestParser(tokens);
        ParseTree clause = parser.clause();
        System.out.println(clause.toStringTree(parser));

        ParseTreeWalker walker = new ParseTreeWalker();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

Running com.example.Test
line 1:1 token recognition error at: 'f'
line 1:2 token …
Run Code Online (Sandbox Code Playgroud)

string-literals antlr4

5
推荐指数
1
解决办法
2638
查看次数

标签 统计

antlr4 ×1

string-literals ×1