代码之家  ›  专栏  ›  技术社区  ›  colgur

如何使用antlr3c生成引导识别器?

  •  1
  • colgur  · 技术社区  · 15 年前

    最终的Antlr指南从一个简单的识别器开始。将语法逐字用于目标c-runtime失败,因为“%s”对antlr有意义:

    $ cat T.g
        grammar T;
    
    options {
        language = C;
        }
    
    @parser::includes
    {
        #include <stdio.h>
    }
    
    /** Match things like "call foo;" */
    r : 'call' ID ';' {printf("invoke %s\n", $ID.text);} ;
    
    ID: 'a'..'z'+ ;
    
    WS: (' '|'\n'|'\r')+   {$channel=HIDDEN;} ; // ignore whitespace
    
    $ java org.antlr.Tool T.g
    error(146): T.g:13:19: invalid StringTemplate % shorthand syntax: '%s'.
    

    在这种情况下,如何告诉Antlr忽略“%”?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Don Wakefield    15 年前

    尝试逃避你的百分比:

    r : 'call' ID ';' {printf("invoke \%s\n", $ID.text);} ;