antlr4 爬坑日记
发布日期:2022-02-24 11:35:59
浏览次数:11
分类:技术文章
本文共 1184 字,大约阅读时间需要 3 分钟。
antlr4 实现 json 编译器
这学期编译原理没怎么上过课,老师突然要我们做个编译器,看着挺高大上的,其实还是不难的,顺便把以前对编译的一些想法给强化了一下,闲话少说,下面进入正题:
- 下载安装
1.首先确定你的电脑中装好了java环境:
在cmd中输入java 与 javac就可以检测,然后下载 2.下载jdk:地址: 3.设置classpath,在命令行里输入: SET CLASSPATH=.;你的路径\antlr-4.0-complete.jar;%CLASSPATH% 4.设置快捷命令(这一步可以省略): 创建文件夹,在文件夹里新建两个bat文件: 里面内容如下: antlr4: java org.antlr.v4.Tool %* grun: java org.antlr.v4.runtime.misc.TestRig %* (这里实际上是设置一个快捷键,用antlr4或grun 代替后面的调用语句)- json语言的语法分析
实际上json就array与object两种对象
然后其中包含了对value ,string的一些理解,具体看下面这个链接 整合成代码如下: grammar JSON; json: object | array ; object: ‘{’ pair (‘,’ pair)* ‘}’ |’{’ ‘}’ ; pair : STRING ‘:’ value; array: ‘[’ value (‘,’ value)* ‘]’ | ‘[’ ‘]’; value: STRING |NUMBER |object |array |’true’ |’false’ |’null’ ; STRING: ‘”’ (ESC | ~[“\”])* ‘”’; fragment ESC : ‘\’ ([“\/bfnrt]|UNICODE); fragment UNICODE: ‘u’ HEX HEX HEX HEX; fragment HEX: [0-9a-fA-F];NUMBER: ‘-’ ? INT ‘.’ INT EXP ?
| ‘-’ ? INT EXP | ‘-’ ? INT; fragment INT: ‘0’|[1-9][0-9]*; fragment EXP: [Ee] [+-]? INT; WS : [\t\n\r] + ->skip;- 编译运行
首先将上面的语法代码存在JSON.G4文件里
然后在文件路径下运行以下的代码: 结果出现这些文件: 然后运行在命令行运行: grun JSON json -tokens [输入json句子] grun JSON json -tree [输入json句子] 然后得到所需的token流,以及语法树下面是对数组[1,‘u0049’,1.3e9]的测试结果
转载地址:https://blog.csdn.net/ImposterSyntrome/article/details/71506551 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年08月24日 13时02分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
用idea创建 HTML 文档
2019-05-24
HTML的背景颜色和背景图片
2019-05-24
HTML的超链接或热链接(重点)
2019-05-24
HTML中的列表和iframe 框架标签 (内嵌窗口)
2019-05-24
HTML的表单form(重点)
2019-05-24
HTML中元素的id属性和HTML中的div和span
2019-05-24
MySql数据库概述及数据准备
2019-05-24
MySql的常用命令
2019-05-24
MySql中的数据查询语言(DQL)一:简单查询、条件查询、排序数据
2019-05-24
MySql中的数据查询语言(DQL)二:分组函数/聚合函数/多行处理函数和分组查询
2019-05-24
MySql中的数据查询语言(DQL)三:连接查询
2019-05-24
MySql中的数据查询语言(DQL)四:子查询
2019-05-24
MySql中的数据查询语言(DQL)五:union和limit
2019-05-24
数据操作语言(DML)一:插入数据insert、修改数据update、删除delete
2019-05-24
数据操作语言(DML)二:常见函数
2019-05-24
数据定义语言(DDL):创建表create、修改表alter、删除表drop
2019-05-24
简单邮件的发送(纯文本)
2019-05-24
MySql的约束
2019-05-24
MySql的存储引擎
2019-05-24
MySql的事务(Transaction)
2019-05-24