`

ANTLR问题临时记录

 
阅读更多

 

基于ANTLR的LL(k)文法消解冲突方法研究

http://www.doc88.com/p-50258708609.html

 

ANTLR

1) token干扰ID(token的关键词不属于ID)

2) 字符串必须排除'\''和'\"'

CHAR_LIT: '\'' ( ~('\\'|'\r'|'\n') | '\\' ('t' | 'r' | 'n' | '\\' | '\"' | '\'') ) '\'' ;

STR_LIT

: '\'' ( ~('\\'|'\r'|'\n'|'\''|'\"') | '\\' ('t' | 'r' | 'n' | '\\' | '\"' | '\'') )* '\'' 

| '\"' ( ~('\\'|'\r'|'\n'|'\''|'\"') | '\\' ('t' | 'r' | 'n' | '\\' | '\"' | '\'') )* '\"' 

STR_LIT不同于CHAR_LIT的排除策略,否则导致永远都得不到右引号

3) 动作应该紧挨关注的别名变量(否则可能读到null)

 

优先级和结合方向(消除左递归)

http://www.antlr.org/wiki/pages/viewpage.action?pageId=4882458

 


add : mult ('+'^ mult)* ; // left association
mult : pow ('*'^ pow)* ; // left association
pow : atom ('^'^ pow)? ; // right association
atom : ID | INT | '('^ add ')'! ; // recursion
 

上面的^用于树解析器中指定根,一般可以省略。

~表示否定。

 

 

分享到:
评论

相关推荐

    antlr-2.7.7.jar和antlr-2.7.6.jar

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

    ANTLR

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它广泛应用于构建语言、工具和框架,包括SQL解析器、XML处理器以及各类编程语言的...

    antlr-2.7.7.jar

    - **社区支持**:由于是较老的版本,社区资源和文档相比ANTLR 4可能较少,遇到问题时可能需要更多自我探索。 在压缩包中,`antlr.LICENSE.txt`文件包含了ANTLR 2.7.7的许可协议信息,通常ANTLR遵循Apache License ...

    antlr-2.7.7.jar.zip

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR被广泛应用于各种编程语言的编译器和解释器的构建,它能生成Java、C#、Python...

    The Definitive ANTLR 4 Reference.pdf_antlr_

    6. **可视化调试**:ANTLR 4提供了一个名为ANTLRWorks的图形化调试工具,可以直观地查看解析过程,帮助开发者调试语法和解析问题。 7. **性能优化**:ANTLR 4通过使用优化的词法分析器和语法解析器,提高了解析速度...

    Antlr4 C++ 计算器

    ANTLR4 是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它广泛应用于构建语言、工具和框架,包括SQL、Java、C#、JavaScript、Python等。在本项目中,"Antlr4 C++ 计算器"是一个基于...

    开源项目-antlr-antlr4.zip

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR被广泛应用于构建语言、工具和框架,如SQL处理器、Java源码分析器、XML解析器...

    ANTLR入门 中英文

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

    antlr权威指南

    ANTLR(ANother Tool for Language Recognition)是一门强大的解析器生成器,主要用于读取、处理、执行或翻译结构化文本或二进制文件。它广泛应用于编程语言、配置文件、通信协议、标记语言等领域,能够自动生成词法...

    Antlr入门介绍小demo

    ANTLR 入门介绍小 demo ANTLR(ANother Tool for Language Recognition,另一个语言识别工具)是一种强大的解析器生成器,用于读取、处理、执行或翻译结构化的文本或二进制文件。ANTLR 广泛应用于 DSL(领域特定...

    antlr3最终手册

    手册强调了掌握ANTLR3对于职业发展的重要性,指出即使不具备编译器开发背景,也能通过学习ANTLR3来开发自己的领域特定语言,这对于提高工作效率和解决复杂问题具有重大意义。 ### Eclipse CDT项目与ANTLR3 Doug ...

    antlr入门 编译领域

    - 如果遇到问题,请确保已正确安装Java并设置好`CLASSPATH`。 #### 四、ANTLR语法简介 为了更好地理解ANTLR的工作原理和使用方式,下面通过一个简单的例子来介绍ANTLR的基本语法结构: ```antlr grammar My...

    antlr4-master 源码

    ANTLR4(ANTLR Version 4)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它广泛应用于构建语言、工具和框架,包括SQL解析器、配置文件解析器、DSL(领域特定语言)以及各种编程...

    antlr-2.7.7源码

    antlr 2.7.7源码,下载自:http://repo.spring.io/plugins-release/org/antlr/com.springsource.antlr/2.7.7/

    antlr 五分钟入门

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

    Antlr3.Runtime_C#_

    - **调试和性能优化**:由于ANTLR提供了丰富的错误处理和调试信息,开发者可以方便地定位和解决问题。同时,ANTLR 3.5版本可能会包含性能上的改进。 - **处理复杂语法**:ANTLR支持LL(*)和LR解析技术,能够处理复杂...

    The Definitive ANTLR 4 Reference.pdf

    通过阅读《The Definitive ANTLR 4 Reference》,开发者可以学习到ANTLR 4的各个方面,从而熟练地创建和维护自己的解析器,解决实际的编程问题。无论是语言设计者还是工具开发者,这本书都是一个不可多得的资源。

    java Antlr 4 语法文件合集

    Java Antlr 4 是一个强大的解析工具,用于生成解析器和词法分析器,它使得开发者可以轻松地处理各种语言的语法。Antlr 4 支持多种编程语言...同时,这个资源也可以作为参考,帮助解决在使用 Antlr 4 过程中遇到的问题。

Global site tag (gtag.js) - Google Analytics