>>> YieldNull
  • /blog
  • /archives
  • /github
  • /about

Blog Entries all / by tag / by year

  • CMM词法分析

    2015-10-11 22:06:46 / CMM Parser /6161 hits

    首先,需要根据CMM词法特性构造出其对应的DFA,然后再根据DFA构造其状态转换表,再根据状态转换表构建分析程序。DFA中,每个结束状态都表示成功识别一个词法单元。当成功识别一个词法单元之后,重新回到DFA中的开始状态,再次进行识别,直到EOF为止。

    理论上,需要维护一个状态转换表,其结构为一维数组。数组角标对应于DFA中的状态编号,其值为一个dict,dict中存储了状态转换键值对。其中,key对应于DFA中的转移字符,value对应于转换后的状态。终止状态对应于其识别到的TOKEN。

    然而,由于构建的DFA比较简单,lexer处理程序中并没有机械性地根据状态转换表进行识别,而是根据DFA直接采用传统的if-else结构进行词法分析。(其实是因为刚开始没有想到用状态转换表,写完了才意识到;而且转换表的状态太多了,还不如就用if-else判断方便)

    Read more...


  • JavaCC 学习笔记

    2015-10-10 16:24:13 / CMM Parser /9551 hits

    顾名思义,JavaCC是一个词法分析器和语法分析器的生成工具。其主要功能是通过用户给定的文法规则,生成一个纯Java语言编写的语法分析器。用户输入一段测试字符串,该分析器就能判断该字符串是否满足该文法的规则。检测合法性的同时,也可以生成该字符串的语法分析树。另外,该工具还能根据用户定义的模板文件生成对应的描述该语言的文档。

    通常所说的javacc指的是javacc.jar这个jar包,jar包中包含三个主要可执行类

    • javacc 根据模板文件生成语法分析器
    • jjtree 根据模板文件生成语法生成树
    • jjdoc 根据模板文件生成对应语言的文档

    Read more...


  • WHUer计算成绩

    2015-09-29 12:46:57 / Python /4892 hits

    昨天有人问我关于奖学金评选的综合成绩是多少,当时我还没算。作为一名程序员当然不能用手工计算啦。不如写个程序从教务系统爬取成绩然后计算吧!

    Read more...


  • Beautify Jetbrains IDE On Ubuntu

    2015-07-04 16:50:18 / Ubuntu /5463 hits

    Pycharm、Android Studio在Ubuntu下字体丑的一逼。然而Eclipse却好漂亮!!!使用美化过字体的OpenJDK就OK啦

    Read more...


  • UML类

    2015-05-22 23:32:05 / UML /5243 hits

    实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。实体类来源于需求说明中的名词,如学生、商品等。

    Read more...


  • Unix环境下的C语言开发环境

    2015-05-18 23:18:01 / Linux /6158 hits

    gcc编译过程

    • 预处理,处理源码中的预编译指令,如include define等
    • 编译,将源码编译成汇编语言代码
    • 汇编,将汇编代码翻译成机器语言,生成.o文件
    • 链接,将上述过程生成的目标文件与系统库中的目标文件和库文件链接起来,生成可执行文件

    Read more...


  • « Previous 10 / 12
  • Next 12 / 12 »

About this site © YieldNull,