`
wankunde
  • 浏览: 162291 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ANTLR使用入门

    博客分类:
  • Hive
阅读更多
  • 简介

简介

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:词法分析程序

分享到:
评论

相关推荐

    antlr4入门例子

    在这个“antlr4入门例子”中,我们将会探讨如何使用ANTLR4创建一个简单的解析器来处理“hello world”这样的语句。"hello-antlr4"可能是项目或者示例代码的名称,它可能包含以下组件: 1. **ANTLR4 Grammar**:首先...

    ANTLR入门 中英文

    在《ANTLR入门》中,Terence Parr向读者介绍了ANTLR的基本概念,包括如何定义语法规则、如何生成解析器和词法分析器,以及如何使用生成的解析器进行实际的解析工作。书中的实例和练习帮助初学者快速掌握ANTLR的使用...

    ANTLR实现计算器 ANTLR入门

    标题和描述提到的“ANTLR实现计算器 ANTLR入门”意味着本文档将介绍如何利用ANTLR工具来实现一个简单的计算器。ANTLR(Another Tool for Language Recognition)是一个强大的语法分析器生成器,它能够帮助开发者创建...

    antlr 五分钟入门

    这篇"ANTLR 五分钟入门"的博客可能介绍了如何快速上手使用ANTLR。通常,这样的教程会包含以下内容: 1. **ANTLR简介**:简述ANTLR的基本概念,如解析器、词法分析器的作用,以及ANTLR在软件开发中的应用。 2. **...

    antlr入门 编译领域

    ### ANTLR 入门与编译领域应用 #### 一、引言 ANTLR(ANother Tool for Language Recognition)是一款强大的语法解析工具,主要用于编译原理的学习和实践,特别是词法分析和语法分析方面。它是由Terence Parr教授...

    Antlr入门介绍小demo

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

    ANTLR入门详细教程定稿.pdf

    ANTLR入门详细教程定稿.pdf

    Antlr入门详解

    Antlr入门详解 中国知网论文:ANRLR安装、使用、文法详解

    Antlr入门详细教程

    - 使用Antlr的`antlr.Tool`命令,可以将`.g`文法文件转换为Java源代码。生成的文件包括Lexer类(如`L.java`)、Parser类(如`P.java`)以及Token类型文件(如`PTokenTypes.java`和`PTokenTypes.txt`)。 - Token...

    antlr-v4jar包和使用教程

    "antlr4_getting-started.md" 是ANTLR 4的入门教程,它通常会指导用户如何安装ANTLR、创建语法文件、生成解析器和词法分析器,并如何在Java项目中使用它们。教程可能涵盖如何运行ANTLR工具将语法文件转换为Java源...

    ANTLR之Hello World

    ANTLR之"Hello World",是ANTLR的入门。

    收集的一些antlr资源

    Antlr入门详细教程.doc 利用ANTLR生成C 描述的分析程序.htm 使用 Antlr 处理文本.htm 使用 Antlr 开发领域语言.htm 强悍的ANTLR Lexer.htm a little madness » Blog Archive » ANTLR By Example Part 1 The ...

    编译器的编译器antlr的教程

    ANTLRWorks是ANTLR的一个集成开发环境,特别适合新手入门。你可以通过ANTLRWorks: 1. 创建语法文件:在ANTLRWorks中,你可以直观地定义语法规则,生成相应的词法和解析器代码。 2. 调试语法文件:ANTLRWorks提供了...

    java-antrl-example.rar_ANTLR JAVA_Antlr Rewrite_ant_antlr_antrl

    描述中提到的“ANTLR 编译器入门范例”表明这个资源是针对新手的教程材料,它包括了超过20个不同的示例,覆盖了大约200个文件。这些样本通常会涵盖ANTLR的基础用法,如定义语法规则、生成解析器、处理输入、构建抽象...

    antlr_2.7.6.jar.zip

    5. **使用ANTLR**:使用ANTLR需要编写语法规则(Grammar)文件,这些文件定义了ANTLR应该识别的语言结构。ANTLR会根据这些规则生成解析器和词法分析器的Java代码,然后这些代码可以集成到用户的项目中,处理特定的...

    antlr_intro.zip_antlr

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。...如果你是初学者,这个入门实例会是一个很好的起点,帮助你掌握ANTLR的精髓。

    antlr4cs:ANTLR 4的原始,高度优化的C#目标

    :warning: 从4.5.0-alpha003版本开始,不再需要用户安装Java运行时才能使用ANTLR 4编译.NET应用程序。但是,安装Java将大大提高代码生成过程的性能。 强烈建议使用此功能,尤其是在将后台代码生成用于IntelliSense...

Global site tag (gtag.js) - Google Analytics