【问题标题】:How to parse and split alphabet characters and numbers from a string using ANTLR grammar如何使用 ANTLR 语法从字符串中解析和拆分字母字符和数字
【发布时间】:2013-03-06 16:17:23
【问题描述】:

我有一个语法可以分别解析字母字符和数字:

grammar Demo;

options
{
  language = C;
}

program : process+
        ;

process :  Alphanumeric {printf("\%s",$Alphanumeric.text->chars);}
        ;

Alphanumeric : (Alphabet | Number)+
             ;


fragment Alphabet : ('a'..'z')+
                  ;

fragment Number : ('0'..'9')+
                ;

假设输入是 'a10' 或 'b10',printf 语句会显示 a10 或 b10,但我想拆分字母字符和数字,即 a 和 10 必须分开拆分,因为我需要将 'a' 与其他字符串进行比较,并将数字,即 'a' 或 'b' 等旁边的数字保存到表格中。

准确地说,a10 必须拆分 -> a 用于比较,10 用于存储,我应该能够分别获取字母和数字。

如何定义这样的语法?

【问题讨论】:

    标签: antlr antlr3 antlrworks antlr2


    【解决方案1】:

    您需要将AlphabetNumber 分别暴露给您的解析器,这意味着它们应该是词法分析器中的顶级规则(而不是fragment 规则)。结果Alphanumeric也将成为解析器规则:

    alphanumeric : (Alphabet | Number)+
                 ;
    
    Alphabet : ('a'..'z')+
             ;
    
    Number : ('0'..'9')+
           ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2013-03-12
      • 1970-01-01
      相关资源
      最近更新 更多