**ANTLR学习笔记一:概念理解 **
一、什么是ANTLR。
ANTLR是ANother Tool for Language Recognition的缩写,
意为“另一种语言识别工具”,读作Antler。
它是一种解析器程序的代码生成器(作用类似于YACC),
使用LL(*)方法,即从输入字符串的左到右,
用候选项的最左符号匹配输入(即与所有以终结符开头的候选项匹配),
每次向前(右)看n个符号(好像计算机下棋那样)。
二、ANTLR的特点
ANTLR作为一种编译器的制作工具,具有很多有用的功能和特点。
- 使用语法(.g文件)作为输入,生成语言识别器的代码。
- 支持生成各种语言的代码(只需修改与实现语言相关的部分)。
- 自身用Java实现。
- 使用上下文无关语法。
(即语法的所有产生式/规则的左侧总是非终结符,
简单说就是,一个被识别的非终结符无论放在什么地方,
都可以用已有的方式推导) - 语法基于EBNF(扩展的巴科斯范式)。
这意味着,在ANTLR中既可以使用BNF元语言符号
冒号(:)表示推导,
竖线(|)表示或,
也可以使用扩展的元语言符号如
星号(*)表示出现0次或以上。
问号(?)表示出现0次或1次。
加号(+)表示出现1次或以上。
关于EBNF更多介绍可