Beaver解析代码反向生成语法文件
背景
Beaver是一款LALR的语法生成工具,现在有一个反编译项目的需求,需要将Beaver语法文件编译后的代码反向生成语法文件的需求,不去评论需求多么傻逼,直接干
设计
语法文件 --编译--> Beaver对象 --组建--> 解析代码
- 整个Beaver过程是以上流程,我们需要将这个过程反向
- 解析代码的读取应该与运行时是相同的【误解】
- 那么重点和工作量应该只剩下Beaver对象去组建字符流
实践
- 发现通过代码实现反向第二步有些复杂,需要对java语言进行解析
- 于是采用人工去分析生成的解析代码,手动反方向去组建语法文件,能够实现head terminal syntax几个模块,但是名字间调用存在问题
- 发现Beaver解读每个rule 生成状态机,将状态机、终结符、非终结符都存起来放到ParsingTable里面,已经失去语义了,手工逆向无法实现
结论
放弃
Beaver解析代码反向生成语法文件的更多相关文章
- 小程序---根据数据库反向生成java文件
工作中写entry太繁琐,写了一个小程序反向生成.从而大大减少了工作量 import java.io.File; import java.io.FileWriter; import java.io.I ...
- Java解析XML与生成XML文件
XML是eXtensible Markup Language(可扩展标记语言)的简写形式,它是一种元标记语言(meta-markup language),也就是说它没有一套能够适用于各个领域中所有用户 ...
- 保护你的代码,生成.a文件以及.framework文件需要注意的地方
一个好的设计,一个方便使用的控件封装,一个酷炫的动画... 是不是迫不及待要分享给大家你的每一个突然蹦出来的好的idea,那就下手吧! 可是,你想要的只是让大家使用它,而不是把所有技术点都公开给每个人 ...
- 【Python 代码】生成hdf5文件
import random from PIL import Image import numpy as np import os import h5py from PIL import Image L ...
- MATLAB代码加密生成.p文件
代码就下面一句话: pcode yourfile.m 生成的 yourfile.p就是你的加密文件,别人是看不到代码的,调用和m文件调用一样.
- sql文件或连接数据库反向生成pdm文件
1. File -> Reverse Engineer -> Database 2.选择sql数据库类型 mysql / sqlserver /oracle 3.using script ...
- 代码反向生成数据库注释更新sql
原理 通过反射实体所在程序集,得到枚举值列表,再通过sql获取数据库表结构,两者拼接成sql. 规范 实体枚举字段最好也加上Description特性,方便多次更新: 代码 实体定义 public p ...
- MyEclipse下安装MyBatis Generator代码反向生成工具
一.离线方式: 在http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/下载 featur ...
- hibernate反向生成映射文件报错
报错原因:可能是你的数据库里的某个表没设置主键.
- 生成hprof文件,用MAT进行分析
生成hprof文件可以在DDMS选中进程点击窗口左上角的"dump hprof file"按钮来直接生成,也可以通过在程序加代码中来生成 代码2: void generateHpr ...
随机推荐
- HashTable HashMap concurrentHashMap区别
HashTable HashMap concurrentHashMap区别 HashMap.HashTable.ConcurrentHashMap都是map接口的实现类 1.(同步性)HashTabl ...
- Android:Activity
什么是 Activity 简单来说 Activity 类似于一个 Web 的页面,表示拥有整个屏幕的界面.电子邮件应用可能有一个显示新电子邮件列表的 Activity.一个用于撰写电子邮件的 Acti ...
- 解读C#编程中最容易忽略7种编写习惯!
编程时犯错是必然的,我们来解读一下编程中最容出现的错误 1.拼接字符串 在C#编程中,字符串类型的处理是比较容易出错的地方,在.NET Framework中,字符串是一个不可变的类型,当一个字符串被修 ...
- Angular 发布IIS
1.IIS服务器需要安装插件 安装 Url https://www.iis.net/downloads/microsoft/url-rewrite 2.修改配置 在src目录下,添加 web.conf ...
- 洛谷P4726 【模板】多项式指数函数(多项式 exp)
题目 https://www.luogu.com.cn/problem/P4726 思路 (略) 是个板题,但是包含了很多多项式的基础板子,适合用来练手. 据说递归版的好写(好抄),但是我猜测和fft ...
- git手记
参照的是http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000这里的,git教程确实写得不 ...
- golang 中使用mysql报错:“ scannable dest type slice with >1 columns (4) in result”
query := fmt.Sprintf("SELECT .... infos = make([]*struct, 0, 10) err = s.db.GetContext(ctx, &am ...
- 腾讯QQ v9.7.3.28946 绿色优化版
修改历史: 2023.02.13:自改官方 9.7.3.28946 最新正式版本2023.01.15:自改官方 9.7.1.28940 最新正式版本2023.01.07:自改官方 9.7.1.2893 ...
- python中周日历与时间的相互转换
python中周日历与时间的相互转换 周日历(ISO国际标准)介绍 在线周日历(2022年) 基本介绍 在开发过程中,有些汇总咨询需要以周为单位统计,所以介绍下如何进行相互转换. 使用datetime ...
- 《Toward Fast, Flexible, and Robust Low-Light Image Enhancement》
1.(23条消息) 图像增强评价标准EME和matlab代码_eme指标_zhonglingyuxiuYYX的博客-CSDN博客 2.nn.moduleList 3.LOE:lightness ord ...