`

ANTLR问题临时记录2

 
阅读更多

1. 方便ANTLRWorks的输出显示(output)的做法:

 

WS:使用$channel=HIDDEN;屏蔽空格,

 

NEWLINE:不要使用skip(),并且把它添加到stat的推导分支中

 

 

stat
:NEWLINE
;

WS: (' '|'\t'|'\u000C') {$channel=HIDDEN;} /*{skip();}*/ ;
NEWLINE: ('\r')? '\n' /*{skip();}*/ ;

 

2. 关于antlr预测语法(谓词)使用方法的讨论

 

see:

ANTLR predicates

https://wincent.com/wiki/ANTLR_predicates

 

如何用谓词实现限制次数的循环符号读取

http://stackoverflow.com/questions/3056441/what-is-a-semantic-predicate-in-antlr

 

3. 使用k选项

如果使用k选项

 

options {

  k = 3;

}

消除LL(*)歧义,则需要添加EOF到主入口,如

 

startup

: chunk EOF

;

否则读到输入的最后时会产生错误输出(因为此时不能向前看n个符号)。

 

4. 比较运算符

 

不可以写成:

 


comp_expr
: expr '==' expr
| expr '!=' expr
| expr '>' expr
| expr '>=' expr
| expr '<' expr
| expr '<=' expr
;
 

 

但可以写成:

 


comp_expr
: expr
('==' expr
| '!=' expr
| '>' expr
| '>=' expr
| '<' expr
| '<=' expr
)
;
 

 

(TODO)

 

分享到:
评论

相关推荐

    ANTLR

    2. **ANTLR的安装与配置**:介绍如何在不同的开发环境中安装ANTLR库,如在Java、Python等环境下的设置步骤。 3. **语法规则定义**:详细解释ANTLR语法文件的结构,如如何定义关键字、标识符、运算符等词法单元,...

    antlr-2.7.7.jar

    - **AST构造**:ANTLR 2的AST构造机制比较基础,没有ANTLR 4那样强大的树遍历和重写功能。 - **性能**:ANTLR 2的解析速度可能不如ANTLR 4快,且内存消耗可能较高。 - **社区支持**:由于是较老的版本,社区资源和...

    antlr3.1.3+java2python

    在这个特定的项目“antlr3.1.3+java2python”,我们看到的是ANTLR 3.1.3版本与一个用于将Java代码转换为Python代码的工具的结合。 ANTLR 3.1.3是ANTLR的第三大主要版本中的一个小版本,发布于2008年。它支持LL(*)...

    The Definitive ANTLR 4 Reference, 2nd Edition.epub

    The Definitive ANTLR 4 Reference, 2nd Edition epub

    antlr-2.7.7.jar和antlr-2.7.6.jar

    在实际开发中,如果项目已经使用了ANTLR,并且没有遇到重大问题,通常会继续使用已知稳定版本,如antlr-2.7.6.jar。但如果需要利用ANTLR的新特性或解决已知问题,可以尝试升级到antlr-2.7.7.jar。 在使用ANTLR时,...

    antlr-2.7.7.jar.zip

    2. **生成解析器和词法分析器**:ANTLR工具会根据语法规则文件生成相应的解析器和词法分析器类。对于Java,这些类将被包含在生成的jar文件中。 3. **运行解析器**:在你的应用程序中,你可以使用生成的解析器类来...

    开源项目-antlr-antlr4.zip

    2. **语法分析**:ANTLR将这个语法文件转换成解析器和词法分析器的源代码。解析器处理输入的语句,词法分析器则将输入分解成一个个的标记(tokens)。 3. **目标语言生成**:ANTLR支持多种目标语言,包括Java、C#、...

    The Definitive ANTLR 4 Reference.pdf_antlr_

    2. **自动错误恢复**:ANTLR 4具有内置的错误恢复机制,当输入不匹配预期的语法时,它可以尝试恢复解析,继续处理剩余输入,而不是立即停止。 3. **LL(*)和预测LL(*)解析**:ANTLR 4使用预测LL(*)算法,这是一个...

    Antlr入门介绍小demo

    2. 可扩展性:ANTLR 支持多种语言,适合产品语言的迭代,而正则表达式不易扩展。 3. 广泛应用:ANTLR 支持多种语言,包括 Java、C#、Python、JavaScript、Go、C++、Swift、PHP、Dart 等。 与 GraphQL 的比较 ANTLR...

    antlr权威指南

    2. **生成解析器和词法分析器**:ANTLR 工具会根据提供的语法文件生成相应的解析器和词法分析器代码,支持多种编程语言,如 Java、C#、Python 和 JavaScript 等。 3. **词法分析**:词法分析器读取输入文本,将其...

    ANTLR入门 中英文

    ANTLR,全称ANother Tool for Language Recognition,是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化...通过阅读《ANTLR入门》,你将能够理解和运用ANTLR来解决各种解析问题,提高你的编程技能和效率。

    ANTLR_V2资料汇总

    `ANTLR2 Introduction.url`和`jGuru ANTLR FAQ Index By Topic.url`是两个链接,分别指向ANTLR_v2的入门介绍和jGuru网站上的ANTLR FAQ索引,这些都是在线资源,用户可以通过这些链接获取更多实时更新的信息和支持。...

    antlr入门 编译领域

    2. **ANTLR的功能特点**: - **文法描述**: ANTLR的核心功能是接收文法描述,生成相应的词法分析器和语法分析器。 - **支持的语言**: ANTLR能够生成Java、C++、C#等多种编程语言的解析代码。 - **抽象语法树**: ...

    antlr4-master 源码

    2. **Parser(语法分析器)**: 语法分析器接收词法分析器产生的Token流,并根据语法规则生成抽象语法树(AST)。ANTLR4的`.g4`文件中`parser`部分定义了语法规则。 3. **AST(抽象语法树)**: AST是解析过程中的...

    antlr 五分钟入门

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化...如果你有更多关于ANTLR的问题,或者需要深入学习,可以参考ANTLR的官方文档,以及在线社区和教程资源。

    ANTLR-v3.ppt

    ANTLR v3 对于语法错误和潜在问题给出了更精确的警告,比如无限左递归和非确定性决策,并提供最小的示例输入序列,帮助开发者快速定位问题。 10. **递归警告(Recursion Warnings)** 当解析器遇到可能的无限左...

    java Antlr 4 语法文件合集

    2. **词法分析(Lexical Analysis)**:Antlr 4 通过词法分析器(Lexer)将输入的字符流分解为一系列的标记(Token)。这些标记对应于特定的词法规则,如关键字、标识符、数字等。在语法文件中,你可以定义词法规则...

    antlr中文文档预览版

    2. **语法分析(Syntactic Analysis)**:词法分析产生的token流接着被语法分析器(parser)处理,按照预先定义的语法规则进行解析,构建出抽象语法树(AST)。这一步骤用于验证输入是否符合语法规则,同时生成AST以...

Global site tag (gtag.js) - Google Analytics