热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

antlr4forlinux,ANTLRv4安装以及试用ForLinux

ANTLR简介ANTLR—AnotherToolforLanguageRecognition,Antlr本身是使用Java开发的,它为包括Java,Py

ANTLR 简介

ANTLR—Another Tool for Language Recognition,Antlr 本身是使用 Java 开发的,它为包括Java,Python,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架。

Antlr 使用上下文无关文法描述语言, 它允许我们定义识别字符流的词法规则和用于解释Token流的语法分析规则。然后,ANTLR将根据用户提供的语法文件自动生成相应的词法/语法分析器。用户可以利用他们将输入的文本进行编译,并转换成其他形式.

ANTLR 安装

安装有两种:一种手动使用命令行安装与执行,第二种则是借助强大的Eclipse的插件安装。 Eclipse插件安装,官网给出了很详细的教程

连接如下:

Eclipse+Antlr V4 这里就不说了。

无论那种方式,执行的过程原理都没有变。

首先说明下配置的环境:

Ubuntu 14.04 32bit

Antlr V4

jdk 1.7

安装jdk

ANTLR是用Java编写的,所以在你开始之前需要先安装Java。ANTLR v4需要Java 1.6 以上版本。安装的具体过程可以参考网上教程,挺多的。这里我安装都是jdk 1.7 版本

命令行安装

下载ANTLR v4,截止到2015.6,官网最新的为antlr-4.5-complete.jar ,可以使用如下的shell命令下载:

curl -O http://www.antlr.org/download/antlr-4.5-complete.jar

或者直接到[][http://www.antlr.org/download.html] 处下载,

之后,拷贝到/usr/local/lib 目录下供使用。

添加环境变量

修改环境变量如下:直接修改gedit ~/.bashrc:找到CLASSPATH 行,直接再后面追加下面的变量, 完成保存之后, 执行source ~/.bashrc 生效。

:/usr/local/lib/antlr-4.5-complete.jar

修改快捷命令

下面的两个命令也是最常用的,这里设定别名来方便使用。

同样在直接修改gedit ~/.bashrc 找到alias 再后面加上下面两行就可。完成保存退出,执行source ~/。bashrc 即可

$ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.5-complete.jar:$CLASSPATH" org.antlr.v4.Tool

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

样例测试

命令行测试

在我们的工作目录比如说 ~/workspace 下建立一个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

这个语法很简单,只识别hello 后面接小写字母组成的字符串。

然后开始编译:

$cd workspace

$antlr4 Hello.g4 #这一步会自动生成几个java文件,下一步编译java

$javac Hello*.java

可以ls 一下该目录,会发现有这么几个文件

HelloBaseListener.class HelloLexer.java HelloParser.class

HelloBaseListener.java HelloLexer.tokens HelloParser.java

Hello.g4 HelloListener.class HelloParser$RContext.class

HelloLexer.class HelloListener.java Hello.tokens

表示已经编译完成,可以使用前面重命名的命令grun 来测试,,命令格式: grun file.g4 -r [option] 其中常用的参数有这三个:

-tokens #打印出token流 -tree #用LISP表单打印出解析树 -gui #在对话框中可视化地展示解析树

测试如下:

$grun Hello r -tree

hello world#输完执行命令之后, 在这里输入一个字符串

^D#由于程序会一直等待用户输入,所以这里使用 ctrl +D 结束输入

(r hell world)#输出结果

#----------------------------#

我们也可查看创建的tokens:

grun Hello r -tokens

hello world

^D

[@0,0:4=&#39;hello&#39;,<1>,1:0]

[@1,6:10=&#39;world&#39;,<2>,1:6]

[@2,12:11=&#39;&#39;,,2:0]

#-------------#

[“1,6:10 = ‘world’,<2>,1:6]表明第二个token(索引从0开始),从字符位置6到10(从0开始),有文本world,是第二个标记(ID),位置是在第一行(行数从1开始),在第6个字符处(位置是从零开始计算,tabs也算作一个独立的字符)。

最后可以测试语法规则的图示形式

grun Hello r -gui

hello world

^D

这时,会弹出一个窗口:

0818b9ca8b590ca3270a3433284dd417.png

到现在可以修改.g4 文件来作其他的语法分析了。

推荐参考antlr 4权威指南, 毕竟antlr 4 在3的基础上变化不小,尽量参考新的资料。



推荐阅读
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • Eclipse项目重新编译指南:提升开发效率的关键步骤
    在Eclipse中,可以通过以下步骤来提高项目的编译效率:首先,在“Project”菜单中选择“Clean”选项,然后在弹出的对话框中选择需要清理的项目,并点击“OK”。完成清理后,重新运行或调试项目以确保代码的最新状态。此外,定期清理项目有助于消除编译错误和缓存问题,从而提升开发体验。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • 如何在WAMP环境中更改默认的www根目录路径
    在WAMP环境中更改默认的www根目录路径,可以通过编辑Apache配置文件实现。具体步骤如下:打开D:\WampServer\bin\apache\apache2.2.22\conf\httpd.conf文件,找到并修改DocumentRoot和指令,将路径更改为新的根目录位置。保存文件后重启WAMP服务,即可生效。此方法适用于需要自定义项目部署路径的开发者。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 在腾讯云服务器上部署Nginx的详细指南中,首先需要确保安装必要的依赖包。如果这些依赖包已安装,可直接跳过此步骤。具体命令包括 `yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel`。接下来,本文将详细介绍如何下载、编译和配置Nginx,以确保其在腾讯云服务器上顺利运行。此外,还将提供一些优化建议,帮助用户提升Nginx的性能和安全性。 ... [详细]
author-avatar
为你空手的执着
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有