ANTLR入门笔记

ANTLR是一个强大的语言识别工具,用于构建词法分析器、解析器和编译器。它通过.g4文件定义语法规则,lexer处理词法规则,将输入分解为单词,而parser则对这些单词进行语法解析。fragment关键字用于标识仅对其他词法规则起作用的私有规则。ANTLR的工作流程涉及词法分析和语法解析,生成的核心标记用于构建解析树。博客深入探讨了ANTLR的关键概念和常见模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

ANTLR, 语言识别的另一个工具(ANother Tool for Language Recognition ),(前身是PCCTS)是一种语言工具,它提供了一个框架,可以通过包含 Java,C++,或 C#动作(action)的语法描述来构造语言识别器,编译器和解析器。

关键概念

  • 前端:定义语法规则,antlr通过g4文件来定义
  • lexer:词法解规则,就是将一个句子多个字符进行组装分成多个单词的规则
  • parser:语法解析,对分词后的整个句子进行解析,可以对每个分词单元做出自定义的处理,从而来实现自己的语法解析功能。

g4文件

g4文件是antlr生成词法解析规则和语法解析规则的基础。该文件是我们自定义的,文件名后缀需要是.g4。

rule

rule是antlr生成词法语法解析的基础。包括了lexer与parser,每条规则都是key:value的形式,以分号结尾。lexer首字母大写,parser小写。

Tokens

词法原子单元会生成一个tokens文件,文件里为每个原子单元定义了一个序号(记号)

fragment词法规则

ANTLR文法中语法规则是在词法规则基础上建立的。但不一定每个词法规则都会被语法规则直接使用。这就象一个类的公有成员和私有成员,公有成员是对外公开的会被外界直接调用。而私有成员不对外公开是由公有成员间接调用的。在词法规则中那些不会被语法规则直接调用的词法规则可以用一个fragment关键字来标识,fragment标识的规则只能为其它词法规则提供基础。

//正确用法
a : INT;
INT : DIGIT+;
fragment DIGIT : '0' .. '9';

//错误用法
a : DIGIT;
INT : DIGIT+;
fragment DIGIT : '0' .. '9';

工作流程

核心标记

常见模式

核心词法规则总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大大大碗面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值