Skip to content

kppomzh/ArrayList_Simulate_Tree

Repository files navigation

ArrayList_Simulate_Tree

本项目是基于LL文法的一个语法解析器的自动生成工具,目前基于LL(1)。 示例基于SQL编写,所以很多细节处理都有SQL的影子,比如字符串识别。 并且SQL不完全是LL(1)语言,所以有些地方会有一点语义上的处理。

该项目有以下几个作用:

  1. 按照文法,生成语法分析类。(java文件形式)
  2. 按照文法,填入词法关键字与标识符,生成词法分析类,用二进制方式保存,运行时反序列化加载。
  3. 按照文法,构造LL预测分析表与Parser总控程序,用二进制方式保存,运行时反序列化加载。

所以功能上并不像Antlr或者Yacc+LEX那么完整。 缺点有以下三点:

  1. 在基本数据类型上还是很死板,整型、浮点型、字符串三者的识别都是写死的,以后会考虑改进。
  2. 不能自由的定义ASCII符号的含义,目前每个符号的分类也是写死的。
  3. 反序列化加载可能在跨Java版本的时候会有一些解析上的问题,可能需要加参数才能正确运行。

除了以上两点,未来为了更好的识别某些语言中不兼容LL(1)的常规用法,计划改成长度可变的LL(k)分析器。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages