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

ANTLR4-不断得到一个不匹配的输入错误

史默
2023-03-14

我刚开始使用ANTLR4。我试图为一个简单的程序编写语法规则,但我很难让它工作。

$int a;
$string b;
$int num;
    null
SEPARATION : [ \t\r\n\u000C]+;

fragment 
STARTING_CHARACTER : [a-zA-Z];
fragment 
CHARACTER : [a-zA-Z0-9_];
TERMINATE_CHARACTER : ';';

fragment
TYPE_OR_VAR_IDENTIFIER : STARTING_CHARACTER CHARACTER*;
NAMESPACED_TYPENAME : TYPE_OR_VAR_IDENTIFIER;
IDENTIFIER : TYPE_OR_VAR_IDENTIFIER;

type : '$' NAMESPACED_TYPENAME;

declaration_statement : SEPARATION? type SEPARATION IDENTIFIER SEPARATION? TERMINATE_CHARACTER;

statement : declaration_statement;

任何帮助都很感激!

共有1个答案

洪鸿
2023-03-14

经过一些额外的搜索,终于发现了一个解决方案。看起来这是一个类似的问题

简单antlr4文法中的不匹配输入错误

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

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

  • 我试图用ANTLR创建一个lexer/parser,它可以解析中间分散有标记的纯文本。这些标记由打开({)和关闭(})括号表示,它们表示可以计算为字符串的Java对象,然后在原始输入中替换该字符串,以创建排序的动态模板。 这里有一个例子:{player:name}向你问好!{player:name}应该被玩家的名字替换,并导致输出,即Mark say hi!为了那个叫马克的玩家。 现在我可以很好地

  • ANTLR4.5给了我一个“不匹配的输入”String[]'期待'String'“,但我不明白为什么'[]'被包含在令牌中。 我已经把语法精简到最低限度,以显示问题: 我就是搞不清楚出了什么问题。

  • 我对Scanner有一个问题,因为它似乎采用输入值类型并强制用户下次输入值为相同类型。我找不到此代码不起作用的任何原因,并给我一个InputMismatchException,因为我已经编写了一百万次这样的代码并且没有问题。 这个问题不仅仅是register()方法的问题,而是整个程序的问题,例如下面的代码: 如果其中一种方法(如 register)要求用户输入字符串,则 int user=inp

  • 所以我在学习java,两天来我一直在寻找这个问题的解决方案。我尝试了所有的十进制分隔符,并试图设置语言环境,结果发现它不起作用。 代码: 输出和错误