词法分析器Antlr

  一、我们都知道编程语言在执行之前需要先进行编译,这样就可以把代码转换成机器识别的语言,这个过程就是编译。

  那么它是怎么编译的呢?

  Java在JVM虚拟机中进行编译,javascript在Js引擎中编译。 

  编译的过程一般是三个步骤:

    1.分词/词法分析(Tokenizing/Lexing)

  这个过程会将由字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token)。

    2.解析/语法分析(Parsing)

  这个过程是将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表程序语法结构的树。这个树被称为抽象语法树。

    3.代码生成

  将AST转换为可执行代码的过程被称为代码生成。这个过程与语言、目标平台等信息相关。

  二、Antlr 是一个基于 Java 开发的功能强大的语言识别工具,Antlr 以其简介的语法和高速的运行效率在这类工具中出类拔萃。

  在 Antlr 中通过解析用户自定义的上下文无关文法,自动生成词法分析器 (Lexer)、语法分析器 (Parser) 和树分析器 (Tree Parser)。

  来源:《你不知道的javascript》、IBM中文社区http://www.ibm.com/developerworks/cn/java/j-lo-antlr/

时间: 2024-12-24 22:13:48

词法分析器Antlr的相关文章

开源解析器--ANTLR

序言 有的时候,我还真是怀疑过上本科时候学的那些原理课究竟是不是在浪费时间.比方学完操作系统原理之后我们并不能自己动手实现一个操作系统:学完数据库原理我们也不能弄出个像样的DBMS出来:相同,学完编译原理之后我们好像就仅仅能看着一大堆符号,表和下推自己主动机发呆,然后带着极其虔诚的心向从事编译器实现工作前辈致敬,先前些许对某些编译器小Bug不满的心情从此不翼而飞. 早在数年前我做一个有关DBMS的模拟试验的时候,当中就有一部分要求对SQL语言的WHERE语句进行编译,提取出实用的形式,并保证运算

atitit.词法分析的实现token attilax总结

atitit.词法分析的实现token attilax总结 1. 词法分析(英语:lexical analysis)跟token 1 1.1. 扫描器 2 2. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类 2 2.1. 操作符(运算符 )::: 3 2.2. 4.界符:":"分号,"{}"大括号,单引号,双引号 3 3.  如何进行词法分析? 3 3.1. 使用Fsm状态机(自动机) 3 4. 词法分析器框架选型 4 4.1. 语法

atitit.java解析sql语言解析器解释器的实现

1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的基本的流程,词法分析,而后进行语法分析,语义分析,构建sql的AST 1 3. 词法分析器 2 4. 语法分析器--ANTLR 2 5. Eclipse插件,,ANTLR Studio 3 6. 一个基于javacc实现的解析器JSqlParser0.7(yr2011), 3 7. 样例代码-----解析sql表格列的名称and类型 3 8. }Sql的历史 4 9. 解析select语句 4 10. zql,

Antlr v4入门教程和实例

1 重逢ANTLR 最早知道ANTLR是当年学习Apache Derby数据库源码时,在看到SQL解析那一层时,第一次看到编译原理在实际项目中的应用,惊叹之余也只能望而却步.之前也根据网上一些资料尝试了一下,看介绍说ANTLR v4更加易用了,于是又好奇地试用一下.以下入门介绍主要参考ANTLR作者写的<The Definitive ANTLR 4 Reference>. 1.1 ANTLR全景 当我们实现一种语言时,我们需要构建读取句子(sentence)的应用,并对输入中的元素做出反应.如

Atitit.antlr实现词法分析

1.1.  antlrworks-1.4.3.jar   wizard1 1.2. 词法的类型 id,int,float ,comment,str,char,white space2 1.3. 3.1词法文件的规定3 1.4. 3.2字符编码定义4 1.5. 最后需要考虑的词法的定义5 1.5.2. 文法可视化5 1.6. 或者使用antlrworks生成需要的词法分析器6 1.6.2. 查看每一个标识符的代码7 1.6.3. 表达式验证7 1.7. 获取tokens9 1.8. Token的含

atitit.词法分析原理&#160;词法分析器 (Lexer)

atitit.词法分析原理 词法分析器 (Lexer) 1. 词法分析(英语:lexical analysis)1 2. :实现词法分析程序的常用途径:自动生成,手工生成.[1] 2 2.1. 词法分析程序的功能2 2.2. 如何描述词素3 2.3. 单词token3 2.4. Token的类型,根据程序设计语言的特点,单词可以分为五类:关键字.标识符.常量.运算符.界符.以4 2.5. 词法分析的第一阶段即扫描器4 2.6. 词法分析的第二阶段评估器(Evaluator)5 2.7. 例如C语

Atitit 发帖机系列(8) &#160;词法分析器v5 版本新特性说明)

Atitit 发帖机系列(8)  词法分析器v5 版本新特性说明) v5  增加对sql单引号的内部支持.可以作为string 结构调整,使用递归法重构循环发..放弃循环发. V4 java dsl词法分析 使用循环 V3 sql的词法分析 atitit..sql update语法的词法分析,与语法ast构建 - V1版   anno 解析器 基于fsm设计模式 V2 Atitit.antlr实现词法分析?-?attilax /AtiPlatf_ee/src/com/attilax/fsm/Ja

ANTLR#1:描述一个简单计算器

ANTLR是什么鬼?引用官网的说明, What is ANTLR? ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It's widely used to build languages, tools, and framewo

ANTLR v4学习笔记

由于毕设会使用到ANTLR这个工具来实现一个关于出租车领域指标计算的语言,所以就开始学习ANTR这个工具,使用的是ANTLR4,做一些简单的翻译和体会的记录吧. ANTLR是一个强大的语法生成器,你可以使用它来阅读,处理,执行或者翻译结构化的文本或者二进制文件.它在研究和工程中被广泛使用,来建立各种语言.工具和框架. ANTLR自动为你所描述的语言创建语法树,用来展示输入的语句如何与语法匹配,并且自动生成语法树的追踪器用来对树的节点执行特定的代码. 为了实现一门语言,我们需要建立一个可以读句子并