zoukankan      html  css  js  c++  java
  • 编译原理课程设计——词法分析器

    设计内容

      手工设计C语言的词法分析器(也可以是C语言的子集)。处理C语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确的单词,以二元组的形式存放在文件中。

    分析

      如果我们要做一个词法分析器,那么我们要先构造出一个状态图来表示单词规则,而在构造状态图之前要先了解该语言的单词种类。由于C语言中的单词种类较多,这里我们简化一下,只考虑一些比较简单的单词种类,而没有考虑一些比较复杂的内容,比如逻辑运算、数组的处理、注释的处理等等。单词种类如下表所示:

      分析完单词规则后我们可以构造出状态图:

    实现

      有了状态图,我们就可以按照状态图中的顺序来处理C语言的源程序,根据每个条件选项来判断每个单词的种类以及是否合法,因此程序实现也会很简单。

    样例输入(输入来自文件in.txt):

    int main() {

           int a , b , c_;

           int 100abc;

           char s = 'a';

           string st = "132";

           a = 100 , b = 200 , c = 300;

           for(int i = 1 ; i <= 20 ; i = i+1) {

                  a = a + b;

           }

           return 0;

    }

    @@

    样例输出(输出至文件out.txt):

      标识符或关键字 int

      标识符或关键字 main

      左括号 (

      右括号 )

      左大括号 {

      标识符或关键字 int

      标识符或关键字 a

      逗号 ,

      标识符或关键字 b

      逗号 ,

      标识符或关键字 c_

      分号 ;

      标识符或关键字 int

      非法单词 100abc

      分号 ;

      标识符或关键字 char

      标识符或关键字 s

      赋值 =

      字符 'a'

      分号 ;

      标识符或关键字 string

      标识符或关键字 st

      赋值 =

      字符串 "132"

      分号 ;

      标识符或关键字 a

      赋值 =

      数字 100

      逗号 ,

      标识符或关键字 b

      赋值 =

      数字 200

      逗号 ,

      标识符或关键字 c

      赋值 =

      数字 300

      分号 ;

      标识符或关键字 for

      左括号 (

      标识符或关键字 int

      标识符或关键字 i

      赋值 =

      数字 1

      分号 ;

      标识符或关键字 i

      小于等于 <=

      数字 20

      分号 ;

      标识符或关键字 i

      赋值 =

      标识符或关键字 i

      加 +

      数字 1

      右括号 )

      左大括号 {

      标识符或关键字 a

      赋值 =

      标识符或关键字 a

      加 +

      标识符或关键字 b

      分号 ;

      右大括号 }

      标识符或关键字 return

      数字 0

      分号 ;

      右大括号 }

      非法单词 @

      非法单词 @

    结语

      这是我上学期编译原理的课程设计之一,为防伸手党这里就不附代码。其实代码很容易构造的,利用状态图判断就可以了。

  • 相关阅读:
    ok~加油!
    解析window.open链接的参数
    Arrya数组添加过滤条件
    Oracle 查询今天、昨日、本周、本月和本季度的所有记录
    Sql Server日期查询-SQL查询今天、昨天、7天内、30天
    Lua 中 pairs 和 ipairs 的区别
    关于SignalR连接数量问题的记录
    IceStorm示例运行步骤
    从 OPC 到 OPC UA
    SQL Server 2008 R2 Express Profiler
  • 原文地址:https://www.cnblogs.com/H-Vking/p/5168876.html
Copyright © 2011-2022 走看看