首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANTRL4解析错误

ANTRL4解析错误
EN

Stack Overflow用户
提问于 2019-03-21 11:33:10
回答 1查看 74关注 0票数 0

在学习ANTRL4时,我试图解析非常基本的模式,它可以有一个或多个数字

Abc.g4

代码语言:javascript
复制
grammar Abc;

@header {
    package antlr4;
}

fragment DIGIT : [0-9]+;

log : DIGIT;

主要方法

代码语言:javascript
复制
public class OwnParser extends AbcBaseListener
{


    public static void main(String args[])
    {
        String javaClassContent = "9";
        AbcLexer abcLexer = new AbcLexer(CharStreams.fromString(javaClassContent));

        CommonTokenStream tokens = new CommonTokenStream(abcLexer);
        AbcParser parser = new AbcParser(tokens);

         ParseTree tree = parser.log();

        ParseTreeWalker walker = new ParseTreeWalker();
        OwnParser listener= new OwnParser();

        walker.walk(listener, tree);
    }
}

但当我执行时,上面写着:

第1行:0标记识别错误:'9‘ 第1行:1“”处缺失的数字 规则输入:

我漏掉了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2019-03-21 13:30:32

输入9上有一个错误,因为您没有定义任何与9匹配的lexer规则。事实上,您根本没有定义任何lexer规则。请注意,您只将DIGIT定义为一个片段,并且片段不生成标记。

您还应该得到语法中的警告“语法中标记数字的隐式定义”。

如果从fragment的定义中删除DIGIT关键字,这两个问题都会消失。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55279529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档