antlr idea 入门_ANTLR:入门
antlr idea 入门
:)
所以,我们开始…。
什么是ANTLR?
•另一个语言识别工具,是一种语言工具,它提供了一个框架,用于从包含动作的语法描述中构造识别器,解释器,编译器和翻译器。
目标语言是什么?
•动作脚本,Ada
• C
• C#; C#2 •C#3 •D •Emacs ELisp •目标C •Java •Java脚本 •Python •Ruby •Perl6 •Perl •PHP •奥伯龙 •斯卡拉 ANTLR支持什么?
•树木建造
•错误恢复
•错误处理 •树木漫步 •翻译 它支持什么环境?
ANTLRWorks是ANTLR的IDE。 它是图形语法编辑器和调试器,由Jean Bovet使用Swing编写。
可以使用ANTLR吗?
•““ REAL””编程语言
•特定领域的语言[DSL]
谁在使用ANTLR?
•编程语言:Boo,Groovy,Mantra,Nemerle,XRuby等。
•其他工具:HIbernate,Intellij IDEA,Jazillian,JBoss Rules,Keynote(Apple),WebLogic(Oracle)等。
您在哪里可以找到ANTLR?
您可以随时在这里关注http://www.antlr.org
•下载免费和开放源代码的ANTLR和ANTLRWorks
•文档,文章,Wiki,邮件列表,示例…。 您可以在这里找到所有东西!
划船...。
- 基本条款
• Lexer :将字符流转换为令牌流。
• 解析器 :令牌过程,可能会创建AST
• 抽象语法树(AST) :解析的输入的中间树表示,比令牌流更易于处理。 它也可以多次处理。 • 树解析器 :它处理AST • 字符串模板 :一个库,支持使用带有占位符的模板来输出文本
- 一般步骤
•在一个或多个文件中编写语法
•编写字符串模板[可选]•使用ANTLRWorks调试语法
•从语法生成类 •编写使用生成的类的应用程序 •提交符合语法的应用程序文本
再远一点...。
让我们写一个简单的语法,其中包括
•Lexer
•解析器 Lexer:将输入流分成令牌 让我们以“ int a,b;”形式的C中的简单声明类型为例。 或“ int a;” 和浮动。 如我们所见,我们可以编写lexer如下:
//TestLexer.g
语法TestLexer;
ID:('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..' 9'|'_'|'。'|'a'..'z'|'A'..'Z')*; COMMA:','; 分号:';'; 数据类型:“ int” | '浮动';
如我们所见,这些是要转换为令牌的字符。 因此,现在让我们编写一些规则来处理生成的这些令牌,并可能相应地创建一个解析树。
//TestParser.g
语法TestParser;
选项{语言:Java;} decl:DATATYPE ID(','ID)*;
在语法上运行ANTLR只会生成词法分析器和解析器,TestParser和TestLexer。 为了在某些输入上实际尝试语法,我们
需要使用main()方法的测试装置,如下所示:
// Test.java
import org.antlr.runtime.*;
public class Test {public static void main(String[] args) throws Exception {// Create an input character stream from standard in
ANTLRFileStream input = new ANTLRFileStream("input"); // give path to the file input
// Create an ExprLexer that feeds from that stream
TestLexer lexer = new TestLexer(input);
// Create a stream of tokens fed by the lexer
CommonTokenStream tokens = new CommonTokenStream(lexer);
// Create a parser that feeds off the token stream
TestParser parser = new TestParser(tokens);
// Begin parsing at rule decl
parser.decl();
}}
在下一篇博客文章中,我们将看到如何创建AST并在树上走动。
祝您学习愉快! :)
参考: ANTLR入门: JCG合作伙伴 Swathi V的基础知识 , 网址为* Techie(S)pArK *博客。
翻译自: https://www.javacodegeeks.com/2012/06/antlr-getting-started.html
antlr idea 入门
antlr idea 入门_ANTLR:入门相关推荐
- antlr idea 入门_ANTLR入门:构建简单的表达语言
antlr idea 入门 这是该系列的第一篇文章. 本系列的目的是描述如何创建有用的语言和所有支持工具. 在本文中,我们将开始研究一种非常简单的表达语言. 我们将在语言沙箱中构建它,因此我们将其称为 ...
- Android自动化测试-从入门到入门(5)AdapterView的测试
在之前的文章中,我们简单介绍了Espresso的使用.通过onView()方法我们可以快速定位到界面上我们需要测试的目标元素.整体来说,onView()比较适用于UI比较简单的情况,在不需要过于复杂的 ...
- Android视频录制从不入门到入门系列教程(一)————简介
一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...
- 【新手上路】语法入门算法入门题单
作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...
- 数论基础,从入门到入门
数论基础,从入门到入门 文章目录 数论基础,从入门到入门 一.常用算法 1.素数筛法 2.线性筛 3.快速幂 4.矩阵快速幂 5.辗转相除法/欧几里得算法 6.扩展欧几里得 7.中国剩余定理/CRT ...
- ActiveMQ入门-amq入门
ActiveMQ是什么 ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线. ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS ...
- BIOS从快速入门到入门1------浅谈BIOS
眨眼间,从一个刚毕业的萌新小白,到现在的BIOS工程师,做了快2年半的x86服务器BIOS,勉强可以算是入门了.踩了很多坑,加了N多班,其中的辛酸和快乐,可能只有自己知道. 先不谈BIOS,我就个人经 ...
- GLOG从入门到入门
GLOG从入门到入门 1 C++日志需求 任何可用的工程代码,都无法保证不出bug.因此,日志系统对于工程代码非常重要.对于像耳东小白这样的初级程序员(感谢某高级程序员大佬赐予"初级程序员& ...
- eselasticsearch入门_ElasticSearch入门 附.Net Core例子
原标题:ElasticSearch入门 附.Net Core例子 1.什么是ElasticSearch? Elasticsearch是基于Lucene的搜索引擎.它提供了一个分布式,支持多租户的全文搜 ...
最新文章
- act转MP3格式工具
- dim private public static_C++ 强制类型转换操作符 static_cast
- 产品经理的每日反省清单
- 9.JAVA之GUI编程列出指定目录内容
- Redis学习笔记(4)-List
- 【Linux系统编程】同步和互斥的概念
- BootStrap笔记-加载效果的实现
- 推荐系统走向下一阶段最重要的三个问题
- 让你在面试前先写需求的公司是什么公司
- [生存志] 第6节 第一篇 以史为鉴 明朝事的读后心得
- PTA 愿天下有情人都是失散多年的兄妹 (二叉树遍历)
- 技术人如何才能做好绩效管理提升团队绩效?
- Linux centOS 修改欢迎界面
- 机器学习基本模型与算法在线实验闯关
- AMD CPU 历史表
- 小白玩转自媒体推广引流今日头条开通原创视频
- 计算机游戏act动作游戏,传统动作类游戏有哪些_好玩的ACT游戏盘点
- Android studio 生成ARR包
- MATLAB 输入和输出参数
- c语言double ave,[编程入门]结构体之成绩统计2-题解(C语言代码)