Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

哈工大编译原理实验,使用node语言,实现了基于状态转换机制的词法分析器,以及自顶而下分析的语法分析器,gui基于electron&angular制作,数据可视化使用的是d3.js。

Notifications You must be signed in to change notification settings

bpf-coding-space/Compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

25 Commits

Repository files navigation

Compiler

Badge

哈工大编译原理实验,使用node语言,实现了基于状态转换机制的词法分析器,以及自顶而下分析的语法分析器,gui基于electron&angular制作,数据可视化使用的是d3.js。

还有什么好说的!

学弟学妹们快上车,随便拿去用!

还是多说几句吧^_^核心代码在compiler文件夹中,已经做了解耦,可以单独拿出来用。gui的渲染则在view文件夹中。代码量很少,读起来应该比较轻松,就不做说明了,想要对核心代码或者界面进行修改,只需要动这两部分的代码即可。

##运行

运行需要自行搭建node环境和npm,全局安装好electron。下面展示linux下如何使用:

sudo apt-get install nodejs(node其实不建议这么安装,建议到官网下载)
sudo apt-get install npm
sudo npm install electron -g

如上环境就算都弄好了,现在展示如何运行项目:

electron .

结果

这样一个Material Design风格的桌面应用就运行起来了

##特性

  • 支持测试用例文件直接拖入应用执行
  • 全Material Design的界面设计风格 Material结果
  • 支持语法分析器的结果采用树状图可视化输出,树状图支持放缩和移动 树状图结果
  • 状态表和文法表与程序流程完全解耦,可以简便的扩展词法分析器和语法分析器
  • 支持前端路由 路由结果
  • 支持界面跟随窗口内容自适应
  • 语法分析器支持三种具体情况的错误判断,并提供错误行信息。

##需要注意的问题

1.对于状态转换机制应该算是基本功了,主要需要注意的是状态转换时的终止判定:

  • 我使用的方式是判断输入和当前状态的二元对在不在状态转换表内,如果不在且当前状态是终止状态,则认为是终止状态,可以重置状态机。
  • 另外一种方式是使用界符,但是这种方式需要单独维护界符的数据结构,增加了判定终止状态的复杂度。

2.关于查错也有两种方式:

  • 简单的方法是不在状态转换机就是出错,这种方法非常简单,但是不能够得到具体的报错信息,同时如果采用这种方式,判定终止条件的方式则需要使用界符。
  • 另外一种方法则是将报错维护在状态转换机中,这样可以获得具体的报错信息,但是状态转换图的复杂度当然也相应增加。

3.关于状态转换图:

  • 本项目的状态转换基于一个自己攒出来的状态转换表,大概囊括了40个左右的终止状态,反正实验内容要求的那些应该没有问题。
  • 状态转换表的结构分为5个字段,分别是S(状态集合),I(输入集合),T(转换表),SS(起始状态),FS(终止状态集合)。
    T的格式则是{S:{I:S...}...}这种json格式,整体的字段格式也是json,解析起来还是非常容易的。
  • 值得注意的是这个转换表其实有些繁琐了,主要是按照老师的ppt定的状态转换机的这5个输入,写完之后反思觉得其实没必要这么麻烦,S和I都是不必要的。

About

哈工大编译原理实验,使用node语言,实现了基于状态转换机制的词法分析器,以及自顶而下分析的语法分析器,gui基于electron&angular制作,数据可视化使用的是d3.js。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 83.8%
  • HTML 14.5%
  • CSS 1.7%

AltStyle によって変換されたページ (->オリジナル) /