Skip to content

SNL(Small Nested Language) Compiler. Maven jUnit Tokenizer Lexer Syntax Parser. 编译原理 词法分析 语法分析

Notifications You must be signed in to change notification settings

youthlin/SNL-Compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SNL-Compiler

SNL(Small Nested Language) Compiler. Maven jUnit Tokenizer Lexer Syntax Parser.
编译原理 词法分析 语法分析

进展

  • 2016-05-24 开始构思
  • 2016-05-27 查资料
  • 2016-05-28 1.开始编码
  • 2016-05-28 2.初步完成词法分析,开始写语法分析
  • 2016-05-29 开始递归下降
  • 2016-05-30 递归下降基本完成
  • 2016-05-31 1.完成递归下降
  • 2016-05-31 2.语法树的输出(竖版)
  • 2016-05-31 3.添加主程序,使用 Commons-Cli 解析命令行参数
  • 2016-05-31 4.添加几个发现的错误如下
  • 2016-06-01 开始 LL1
  • 2016-06-02 1.初步完成 LL1
  • 2016-06-02 2.增加自动识别文件编码。修复标识符结点值错误的 Bug.
  • 2016-06-02 3.查错,基本上完成了.
  • 2016-06-16 修复词法分析点号处理的 Bug (如 end.+ 应该报语法错误,在这里当作词法错误处理).

参考书籍

《编译程序的设计与实现》刘磊 金英 张晶 张荷花 单郸;高等教育出版社,ISBN 978-7-04-014620-7.

勘误

其中《编译程序的设计与实现》:

  1. 第 10 页,产生式 (43) 应为:ProcDecMore -> ProcDec. (而不是 ProcDeclare)
  2. 第 63 页,产生式 (67) Predict 集应为 [ (左中括号), . (句点), := (赋值号).
  3. 第 64 页,产生式 (93) Predict 集应包含 ] (右中括号).
  4. 第 55 页,例子中 v2:='a'; 只能通过词法分析,而不能通过语法分析,因为按照给定的产生式(Exp)不能推出字符型。
  5. 第 10 页,产生式 (42), (43) 完全多余。可以去掉,并且把产生式 (41) 右部的 ProcDecMore 改为 ProcDecpart.
  6. 第 10 页,产生式 (48), 预测符集应为 ) (右括号),而不是左括号。(第 62 页)

About

SNL(Small Nested Language) Compiler. Maven jUnit Tokenizer Lexer Syntax Parser. 编译原理 词法分析 语法分析

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published