ANTLR使用入门

  1. 简介

简介

ANTLR是一个有力的用于读,处理,执行,翻译结构化文本或者二进制文件的解析生成器。它被广泛的使用在编译语言,工具和框架中。通过一个语法,ANTLR可以生成一个能够编译和走通编译树的解析(parser)。

  1. 使用入门

  1. 安装Java环境。Antlr是使用Java开发的,所以这个是需要的。

到这个地方下载Antlr工具包antlr-4.1-complete.jar。我这里用的是版本4.

  1. 把包放在/usr/local/lib路径下,并设置alias环境变量.

 

这里顺便把CLASSPATH环境变量设置,为以后编译用。

export CLASSPATH=.:/usr/local/lib/antlr-4.1-complete.jar:$CLASSPATH

 

alias antlr4='java -jar /usr/local/lib/antlr-4.1-complete.jar'

alias grun='java org.antlr.v4.runtime.misc.TestRig'

  1. 编辑文件Hello.g4

// Define a grammar called Hello

grammar Hello;

r  : 'hello'ID ;         // match keyword hello followed by an identifier

ID : [a-z]+ ;             // match lower-case identifiers

WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines

  1. 运行程序antlr4 Hello.g4。生成parserlexer.
  1. 编译antlr生成的代码

javac*.java

  1. 运行程序

$ grun Hello r -tree

hello parrt

^D

(r hello parrt)

(That ^D means EOF on unix; it's ^Z in Windows.) The -tree option prints the parse tree in LISP notation.

结果有下列几种输出(还有未列出):

-tokens prints out the token stream.

-tree prints out the parse tree in LISP form.

-gui displays the parse tree visually in a dialog box.

-psfile.ps generates a visual representation of the parse tree in PostScript and

stores it in file.ps. The parse tree figures in this chapter were generated

with -ps.

  1. In Big Picture

  1. 一些概念

Interpreter:解释执行

Translator:翻译程序,由一种语言翻译为另一种语言

Parser / syntax analyzers:根据语法等识别程序

Syntax:句法

Grammar:语法

 

Separate stages 分割语句

根据单词读入语句,然后和字典中的单词做对比。

Lexical analysis / simply tokenizing 分词

Lexer:词法分析程序

posted @ 2013-09-29 14:12  借的浮生半日闲  阅读(2355)  评论(0编辑  收藏  举报