正则表达式到Java中的DFA 这是通过使用Java语言创建和使用语法树将regex(正则表达式)转换为DFA的方法。 该项目是我们在大学第五学期(@KNTU)的编译器课程中完成的一个较大项目的一部分,以创建一个简单的编译器。 入门 :small_blue_diamond: 观看此视频以了解概念: : 注意一些规则: NetBeans是我编写的IDE。您可以克隆此项目并将其轻松导入NetBeans。 使用的类如下: 正则表达式 语法树 二叉树 节点 叶节点 DfaTraversal 州 这是一个在主函数中调用的初始化方法: public static void initialize() { DStates = new HashSet<> (); input = new HashSet< String> (); String regex = getRegex(); getSymbols(regex); SyntaxTree st = new SyntaxTree (regex); root = st . getRoo
2023-04-11 20:27:19 1.36MB java automata netbeans compiler
1
查询优化一般算法和语法树,对提高关系运算的理解有很大帮助!
2022-12-17 10:11:56 194KB word
1
对用户输入的sql语句进行解析,生成语法树,用到了一些设计模式相关的东西,还不错,具体实现了对select 的解析,大家有兴趣一起学习下
2022-11-21 13:51:22 90KB SQL 语法 词法 解析
1
1.2国内外研究状况和发展趋势 程序代码的复制检测是计算机软件理论与计算机应用技术中的一个重要的科学 问题。最初应用于冗余代码的重复检测与代码优化等研究,后来则被广泛应用于抄 袭检测和代码重构的研究,今天程序代码的相似度研究还被应用于防范病毒的入侵 检测领域。上个世纪的70年代,国外就已经有研究人员对代码克隆、冗余代码的重 复检测和代码优化等技术展开了研究,这些技术后来被应用到程序代码复制检测领 域,同时也产生了一些识别程序代码抄袭或者大规模拷贝的软件。目前常用的程序 代码复制检测技术主要分为两类:基于属性计数(Attribute Counting:AC)的方法 和基于结构度量(Structure Metrics:SM)的方法。 基于AC的方法主要针对程序代码的各种统计属性进行处理,没有过多地考虑程 序代码的结构信息。Halstead提出的软件科学度量方法是目前为止最早的属性计数法 【31。该方法首先提出了软件度量的标准,然后基于该标准定义了多个软件度量特征, 通过对程序代码中的这些软件度量特征进行统计计数生成其特征向量,在此基础上 构建特征向量空间,这样程序代码便被映射到了一个11维的笛卡儿空间,之后运用 向量空间模型运用向量夹角余弦公式来度量向量之间的相似性,并以此为依据进而 度量程序对之间可能的“抄袭行为”。此后的基于AC方法的复制检测技术也多是基 于这种软件科学理论进行研究的。在Sallies所提出的检测技术中就采用了基于AC 的检测方法,在构建特征向量时,将度量指标定义为一个由容量、控制流、数据依 赖、嵌套深度、控制结构六部分组成的六元组向量降51。但是由于该方法较少考虑到 程序代码的结构和具体的语义信息,其检测的效率虽然较高但精度较差,错判的情 况多有发生。后来有人提出通过增加向量的维数来改善其检测精度,但效果并不明 显,Verco和Wise在其1976年发表的论文中指出,“通过单纯的增加向量的维数并 不能改善检测的错误率【6p。 而基于SM的方法则将程序内部结构加入了分析比较,由于该方法包更多的程 序内部的结构信息和部分语义信息,因此用来判断相似性将会很大程度上提高检测 的准确性。一般的SM方法检测机制主要包括两个关键步骤: 一个是程序标准化,即将源代码进行转化。例如将所有用户自定义标识符转换 成特定符号、过滤掉空白冗余与注释项、把大小写字母进行统一等等。具体的手段 又可以分为:token-based、string-based、syntax tree-based、semantic.based等。 String-based:首先源代码通常按行分割成字符串,每个程序片段包含相邻接的字 2
2022-09-06 14:25:52 2.29MB 语法树
1
阿斯特里 可视化方法,声明,表达式等的抽象语法树。 astree.py Python的组合模块绘制在DOT语言脚本指定的抽象语法树。 是用编程语言(例如Python)编写的源代码抽象句法结构的树表示。 Jumpstart-运行程序: 克隆存储库 $ pip install -r requirements.txt $ python astree.py 输入模块,方法,声明,语句,表达式等查看视频示例。 例如,让我们看一下requests.get方法: >>> Input a method name, expression, etc.: requests.get 注意:请向报告错误。
1
编译原理课程PJ。
2022-02-09 22:19:12 113KB 编译 语法树 编译器
1
ASTExtractor:Java语法的抽象语法树提取器 ASTExtractor是基于Eclipse编译器的Java源代码的抽象语法树(AST)提取器。 该工具充当Eclipse编译器的包装器,并允许以XML和JSON格式导出源代码文件或项目的AST。 该工具具有命令行界面,也可以用作库。 该文档位于 在命令行模式下执行 执行为: java -jar ASTExtractor.jar -project="path/to/project" -properties="path/to/propertiesfile" -repr=XML|JSON 用于项目,或作为: java -jar ASTExtractor.jar -file="path/to/file" -properties="path/to/propertiesfile" -repr=XML|JSON 对于Java文件,其中-pro
2022-01-11 12:02:50 22KB 系统开源
1
语法树到逻辑查询计划 将简单格式结构转换为关系代数 从条件中去除子查询(非相关只需计算1次) 引入一个中间形式操作符 (介于分析树的分析符号与关系代数的选择操作符之间); 称为双参数操作符号(不带条件的选择) 左子节点--表示要操作的关系R(参数p1) 右子节点--表示作用到关系R的每个元组上的条件表达式(p2) 例如形如: t IN S, 表达式S是与主查询不相关的子查询 变换后,最终消除子查询,产生一个附加的选择条件(相当于连接条件) P258图7-14、图7-15、图7-16
2022-01-06 09:51:19 549KB 查询
1
编译原理,LR1的代码,包含了语法树生成功能
2022-01-03 12:02:11 43KB java 编译原理 LR1 语法树
1
旖美信息_抽象语法树在前端的应用.rar
2021-12-23 13:01:53 7.5MB