zoukankan      html  css  js  c++  java
  • 手动构造固定平台下语义编译器(LL(1)文法)

    好久之前的项目了,今天整理出来和猿们分享下。当时上编译原理课时候的结题项目,当时大家都是用flex+bison构造的,当时感觉没什么意思,和老师沟通之后发现自己写个小的编译器还是蛮好的,挺有意思,不过老师也说如果不能完全实现也可以给合理的分数,就想着干就干个大的,实现不了再说,然而当时光是设计语法结构+构建first集+构建follow集+构建select集+消除二义性就花费了大概三四天甚至更长的时间,倒是最后实现起来词法分析,语法分析,制导翻译的时候,因为之前有点数据结构的功底,用STL很快就实现,还算没让自己和老师失望,最后犯了点强迫症写了一些关于语义的出来了,也就是制导翻译的时候的一些警告呀,强制类型转换等一些处理,记得当时老师还惊讶的说,这是你在自己做的吗,这工作量很大啊,然后我自信的点点头,说了句当然了,然后...相当爽了就吐舌头生气,写的我现在都有点激动了。。。

    这个一个画图的软件,所以设计的语法可能有点抽象,我做的工作就相当于把我设计的高级语言编译成类似于汇编一样的,这个画图平台所能识别的语言。这里我再GitHub上给出这个小工具了。。。

    依旧是贴在GitHub上(https://github.com/zsweet/compiler-with-LL1-grammer

  • 相关阅读:
    第二个冲刺 6.3.4.学术诚信与职业道德
    第二个冲刺 Sprint
    css之清除浮动
    style和getComputedStyle(ff)和currentStyle
    php 中间件
    Vue 和 angular
    img 分区响应图
    PHP composer
    php实现文件上传,下载的常见文件配置
    php 命名空间
  • 原文地址:https://www.cnblogs.com/zswbky/p/8454128.html
Copyright © 2011-2022 走看看