【问题标题】:How to generate introductory recognizer using ANTLR3C?如何使用 ANTLR3C 生成介绍性识别器?
【发布时间】:2009-11-09 16:36:54
【问题描述】:

权威 ANTLR 指南从一个简单的识别器开始。使用语法逐字定位 C 运行时失败,因为 '%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 忽略 '%'?

【问题讨论】:

    标签: c antlr antlr3


    【解决方案1】:

    尝试转义你的 %:

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

    【讨论】:

    • 谢谢唐。最后得到以下内容: r : 'call' ID ';' {printf("invoke \%s\n", ($ID.text)->chars);} ;
    猜你喜欢
    • 2013-07-10
    • 2013-06-10
    • 2016-12-16
    • 2014-02-28
    • 2018-05-10
    • 2014-03-06
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多