当前位置: 首页 > 知识库问答 >
问题:

语法从Antlr2转换到Antlr4后的不匹配输入

尉迟浩思
2023-03-14

我有一个现有的语法,我正在使用C#输出将其转换为Antlr4。它在第一个标记上失败,消息不匹配的输入'BEGIN'需要any_word。奇怪的是,当我打印出令牌以查看它被识别为什么令牌时,它表明它已经正确地识别了它。

            string text = File.ReadAllText(fi.FullName);
            var fs = new Antlr4.Runtime.AntlrInputStream(text);
            var lexer = new TestLexer(fs);
            var tokens = new Antlr4.Runtime.CommonTokenStream(lexer);
            tokens.Fill();
            var tokenList = tokens.GetTokens();
            yRLogger.Info("Printing tokens");
            foreach(IToken tok in tokenList)
            {
                Logger.Info(tok.ToString()); //prints [@0,13:17='Begin',<28>,1:13] 28 In TestLexer.tokens, 28 corresponds to ANY_WORD

            }
            var parser = new TestParser(tokens);
            parser.start(); //throws 'mismatched input 'Begin' expecting ANY_WORD. '
Begin parsing now
   start : ANY_WORD+;

   ANY_WORD
: 
~('\r'|'\n'|' '|'\t'|'\u000C')+
;

    WS  : (' '|'\t'|'\u000C') -> skip 
;

共有1个答案

濮阳
2023-03-14

>

  • 这属于C#目标的问题跟踪程序。

    我只是试图重现这个问题,按照项目最新版本的自述文件说明中的描述配置了C#目标,并且在第一次尝试中解析工作正常。

  •  类似资料:
    • 我是ANTLR的新手。我想写一个语法来解析下面的输入: 语法如下:: 当我尝试使用语法解析上述输入时,它会引发以下异常:: 第1行:0不匹配的输入'commit a1b2c3d4',应为'commit' 我已经引用了ANTLR4:不匹配的输入链接,但仍然不清楚发生了什么。

    • 我刚开始使用ANTLR4。我试图为一个简单的程序编写语法规则,但我很难让它工作。 null 任何帮助都很感激!

    • 问题内容: 我有以下几行代码 我认为第3行和第4行执行相同的任务,然后为什么编译器在第4行显示错误“类型不匹配:无法从long转换为int” 请帮忙。 问题答案: 这是因为复合赋值运算符会进行隐式转换。 从JLS复合分配运算符: 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 对于二进制运算符,则必须显式进行强制转换。进行第四项作业: 它会工作。这就是您的复合赋值表达

    • 问题内容: 我正在使用ZXING库在JAVA中创建QR码生成器程序。该程序是 编译该程序时,出现类型不匹配错误, 在这条线 请帮忙!!! 问题答案: 我自己从未使用过该库,但是阅读错误消息时,我会假设您必须要以字节为单位存储字节的问题。问题将是一个字节由多个位组成,因此您不能仅通过一位表示一个字节。 将编码数据存储到ByteMatrix中,然后阅读以下内容: 使用zxing进行QR码编码和解码 完

    • 但它抱怨说: 如何同时解决这两个错误?

    • 我创建了一个AsyncTaskLoader: 在我的活动课上,我有这样的内容: