首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将语法从Antlr2转换为Antlr4后输入不匹配

将语法从Antlr2转换为Antlr4后输入不匹配
EN

Stack Overflow用户
提问于 2014-03-27 16:28:53
回答 1查看 117关注 0票数 0

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

代码语言:javascript
复制
            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. '

在AntlrWorks中检查相同的语法和输入也会像预期的那样工作--它会找到第一个没有错误的标记。

来自TestParser.tokens ANY_WORD=28

输入文件是

代码语言:javascript
复制
Begin parsing now

Antlr文件是

代码语言:javascript
复制
   start : ANY_WORD+;

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

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

回答 1

Stack Overflow用户

发布于 2014-03-27 19:26:30

issue tracker for the C# target.

  • I上的
  1. This parsing刚刚尝试重现此问题,配置了C#目标as described in the Readme instructions for the latest version of the project,并在第一次尝试时正确解析。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22681998

复制
相关文章

相似问题

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