command
module
Version:
v0.0.0-...-041fd85
Opens a new window with list of versions in this module.
Published: Feb 17, 2021
License: GPL-3.0
Opens a new window with license information.
Imports: 8
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
README
¶
Table of Contents
- 运行截图
- 如何运行
- 程序功能
- 程序逻辑
- 程序结构体
- 程序全局变量
运行截图
-
文法串识别和 FIRST/FOLLOW
-
求得的项目族
-
文法分析表
-
待约串分析动作表
如何运行
-
Windows
点击 lr.exe 即可
-
Linux
./lr_linux
-
MacOS
./lr_mac
程序功能
-
读取存储满足要求的文法串的文件
文法的要求:
- 设计正确的 SLR(1)文法
- 文法串中的大写字母表示非终结符,小写字母(除 n)和符号(除@)表示终结符,n表示数字
- 不同文法串用换行符分隔
-
分析输入的文法串
- 输出文法中的非终结符和终结符
- 输出文法中非终结符的 FIRST, FOLLOW 集
- 输出 SLR(1)形式的文法项目族
- 输出 SLR(1)形式的分析表
-
读取存储待约串的文件(不同待约串按行分隔)
-
输出所有待约串的分析过程(可以检测无法推出的待约串)
程序逻辑
- 读取输入的文法串
- 求输入文法串的 FIRST/FOLLOW 集
- 求文法规范项目族
- 求文法分析表
- 读取输入的待约串集
- 对每一条待约串进行语法分析并输出分析动作表
程序结构体
- expMap: 存储文法串
- start: 文法串的开始符号
- subExp: 文法串的产生式
- source: 用来确定来源项目集
- from: 项目集来源的序号
- shift: 移进的符号
- solu: 项目集
- sources: 此项目集的来源
- list: 此项目集中的文法串
- isTran: 项目集中的文法串是否被遍历
- place: 二维序号
- table: 文法分析表
- action: action 表
- goTo: goto 表
- stack: 状态符号栈
- doline: 分析动作表的一行
- no: 步骤
- st: 状态符号栈
- s: 当前状态下的剩余符号串
- do: 分析动作
程序全局变量
- oriBegin: 拓广之前的文法开始符号
- begin: 拓广之后的文法开始符号
- beginSubExp: 拓广之后的文法开始符号的产生式
- vCnt: 非终结符计数
- tCnt: 终结符计数
- vs: 非终结符的 map
- ts: 终结符的 map
- exps: 文法串数组
- first: 文法 FIRST 集
- follow: 文法 FOLLOW 集
- flag: 标志某非终结符(用于求 FOLLOW 集)
- solus: 文法项目族
- aTable: 文法分析表
- inputArr: 输入待约串集
- cInput: 当前规约串
- aDoTable: 分析动作表
- errIndex: 当前规约串中错误位置
TODO
Documentation
¶
There is no documentation for this package.
Source Files
¶
Click to show internal directories.
Click to hide internal directories.