【问题标题】:Unable to match a simple assignment in ANTLR4无法匹配 ANTLR4 中的简单分配
【发布时间】:2017-04-13 14:37:39
【问题描述】:

我有一个要匹配的输入模式:

identifier=apple-packs/apple-packages-extension/albama_togo_air_extension

我在 ANTLR4 中的语法定义如下所示: 语法 MyDSL;

@lexer::members {
    public static final int WHITESPACE = 1;
    public static final int COMMENTS = 2;
}
locationReference
    : ID '=' genericstring ';';

ID:LETTER (LETTER | [0-9])*;
genericstring:(.)+?;

面临的问题: 第 1:16 行令牌识别错误:'-' 第 1:22 行令牌识别错误:'/' 第 1:28 行令牌识别错误:'-' ... 我想我的语法无法通过解析器规则匹配特殊字符: 通用字符串:(.)+?; 我也理解了“。”表示任何字符。

【问题讨论】:

  • 我错过了“;”在输入字符串中。问题应为:identifier=apple-packs/apple-packages-extension/albama_togo_air_extension;
  • 即使是“;”添加问题仍然存在

标签: antlr antlr4


【解决方案1】:

在词法分析器规则中,. 匹配任何字符。在解析器规则中,. 匹配任何标记。

注意,token recognition 错误是由词法分析器产生的;在这种情况下,因为词法分析器没有匹配 - 的规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2018-09-27
    • 2022-12-09
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多