`
庄表伟
  • 浏览: 1152016 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ANTLR学习心得——准备工作与第一个例子

阅读更多
二、准备工作
 
  我这里的介绍,只针对Java程序员,非java程序员,同样可以很方便的使用ANTLR,比如:C#、C++、Python。只是我这里就不多讲了。
 
  这是一篇介绍给C++程序员的教程,但是里面使用VC++ 6.0做为开发IDE的,下次我有时间了,再去研究研究Dev-C++去
 
  要开始使用ANTLR,需要下载以下内容:
  antlr-2.7.5.exe:把这个exe文件放在硬盘里的某一个地方,然后设置添加一个PATH,以后就可以在任意目录下,使用这个工具了。
  antlr-2.7.5.tar.gz:这是antlr最新的源代码,慢慢研究。
  Eclipse SDK 3.1:这个总是要的吧。
 
  解压缩antlr-2.7.5.tar.gz。有两个目录特别值得关注,一个是anltr,里面是antlr的源码,你可以在Eclipse里建一个Antlr项目,将这里的源码导入进去,以后慢慢研究。另外一个是examples目录,里面有四种语言的例子,我们只需要关系java的例子就可以了。
 
三、Hello World
 
  ANTLR-LexerExample,这可以算是ANTLR中,最简单的一个例子了。我们试着在Eclipse里跑一遍。
 
  在Eclipse里新建一个项目,比如就叫Simple。下载这个simple.g文件,放在Simple的src目录下。然后在DOS窗口下,执行“ANTLR simple.g”命令。
 
  回到Eclipse项目窗口,刷新项目,你会发现多了两个个java程序,SimpleLexer.java;SimpleLexerTokenTypes.java,还有一个文本文件:SimpleLexerTokenTypes.txt。
 
  再新建一个测试类Main.java。
 
import java.io.*;
public class Main {
   public static void main(String[] args) {
      SimpleLexer simpleLexer = new SimpleLexer(System.in);
      while(true) {
         try {
           simpleLexer.nextToken();
         } catch(Exception e) {}
      }
   }
}

 

  运行这个程序,然后在控制台随便输入一些字符、数字之类的东西,最后以“.”结尾。这个程序就会打印出一些内容来了。比如,你可以输入:

 

This Lexer recognises strings and numbers: hello 22 goodbye 33.

  程序就会输出:

Found alpha: This
Found alpha: Lexer
Found alpha: recognises
Found alpha: strings
Found alpha: and
Found alpha: numbers
Found alpha: hello
Found numeric: 22
Found alpha: goodbye
Found numeric: 33

  并且结束。如果你不输入最后的“.”,那么就还能继续使用这个程序。

  这是怎么弄的呢?让我们来看看那个simple.g文件。

class SimpleLexer extends Lexer;

options { k=1; filter=true; }

ALPHA   : ('a'..'z'|'A'..'Z')+
        { System.out.println("Found alpha: "+getText()); }
        ;

NUMERIC : ('0'..'9')+
        { System.out.println("Found numeric: "+getText()); }
        ;

EXIT    : '.' { System.exit(0); } ;

 

  class SimpleLexer extends Lexer;

  表明我们想定义一个词法分析的类,SimpleLexer。

  options的内容我们先跳过,下次再说。

  ALPHA、NUMERIC、EXIT是SimpleLexer声明的,它能够认识的三种词。字母、数字和结束符。当词法分析器,发现了一个以上的,连续的,大小写英文字母的时候,它就认为自己遇到了字母;如果发现了一个以上连续的数字0~9时,它就认为自己遇到了数字,EXIT也同理可知。

  {}中的代码,则是告诉词法分析器,在发现了某种词之后,可以做的动作。

 

  最终生成的SimpleLexer.java;SimpleLexerTokenTypes.java,各位可以自己去看看,研究一下。

 

(未完待续)

分享到:
评论

相关推荐

    antlr4入门例子

    1. **ANTLR4 Grammar**:首先,你需要定义一个ANTLR4语法文件(通常以.g4为扩展名)。这个文件会描述你想要解析的语言结构。例如,对于"hello world",你可能会定义一个简单的语法规则,如`prog : HelloWorld ;`,...

    antlr 例子集 v3版

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

    ANTLR和Soot的完整例子

    在实验的第二步,你需要实现一个自定义的ASTVisitor,遍历ANTLR生成的语法树。ASTVisitor模式允许你对每个节点执行特定操作,比如在访问到某个语句或表达式时,可以转换为Jimple三地址代码。Jimple是Soot使用的内部...

    antlr3.12--工具+JAR+例子

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR被广泛应用于各种语言和系统的开发,包括编程语言、配置文件、协议、查询语言...

    antlr4应用例子

    基于antlr4的语义action和属性的编译器前端例子

    antlr-2.7.7.jar.zip

    这个"antlr-2.7.7.jar.zip"文件是ANTLR的一个特定版本——2.7.7的Java版本,包含ANTLR库的jar文件。 ANTLR的工作原理基于上下文无关语法(Context-Free Grammar,CFG),它可以解析符合给定语法的输入,并生成抽象...

    用Antlr 分析布尔表达式的例子

    用antlr分析处理布尔表达式的例子,包括:语法定义.g文件;生成的词法分析和语法分析器;带有图形界面的分析器调用代码。 其中带有GUI的分析器ParserFrame,可以用于任何.g文件生成的词法、语法分析器,只要通过改变...

    ANTLR

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

    antlr.jar.zip

    描述"antlr.jar"直接指出了这个压缩包解压后的主要内容——ANTLR的Java实现,即一个名为"antlr.jar"的文件。这个JAR文件包含了ANTLR解析器生成器的全部Java代码,开发者可以将其引入到Java项目中,利用ANTLR的能力来...

    The Definitive ANTLR4Reference 学习笔记

    ANTLR(Another Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它被广泛应用于编程语言、协议、表达式、脚本和其他语言的定义。ANTLR 4是ANTLR系列...

    Antlr4 C++ 计算器

    1. **语法定义**:首先,你需要为你的语言编写一个语法规则文件(通常为.g4扩展名),在这个例子中可能是`calculator.g4`。这个文件定义了计算器所能识别的表达式结构,例如数字、运算符和括号等。 2. **语法生成**...

    ANTLR指南(v3.0)第1~5章WORD版

    ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个...第一章Hello World 第二章 编译原理基础知识 第三章 词法分析 第四章 语法分析 第五章 嵌入文法的Actions

    编译原理学习框架antlr4

    ANTLR4(ANTLR Version 4)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它广泛应用于构建语言、工具和框架,包括SQL解析器、Java代码分析器以及各种语法权限控制系统。ANTLR4支持...

    antlr入门 编译领域

    在这个例子中,我们定义了一个简单的语言文法,其中包括词法规则、语法规则和选项。ANTLR根据这些规则生成词法分析器和语法分析器。 #### 五、总结 ANTLR是一款非常实用的工具,尤其适用于编译原理的学习和实践。...

    antlr_2.7.6.jar.zip

    8. **学习ANTLR**:学习ANTLR通常从安装和创建第一个语法开始,逐步掌握如何定义语法规则、生成解析器以及在Java程序中使用这些解析器。有许多在线教程和书籍可以帮助初学者入门。 9. **版本升级**:尽管ANTLR ...

    ANTLR指南(v3.0)第1~5章HTML版

    ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个...第一章Hello World 第二章 编译原理基础知识 第三章 词法分析 第四章 语法分析 第五章 嵌入文法的Actions

    开源项目-antlr-antlr4.zip

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

    Antlr入门介绍小demo

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

Global site tag (gtag.js) - Google Analytics