词法分析器设计

词法分析是编制一个读单词的过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。程序语言的单词符号一般分为五种:关键字(保留字/基本字)if、while、begin…;标识符:常量名、变量名…;常数:34、56.78、true、‘a’、…;运算符:+、-、*、/、〈、and、or、….、;界限符:, ; (  )  {    }   /*…。

方法:

 

词法分析器的设计方法有如下四个步骤:

1.写出该语言的词法规则。

2.把词法规则转换为相应的状态转换图。

3.把各转换图的初态连在一起,构成识别该语言的自动机。

4.设计扫描器;把扫描器作为语法分析的一个过程,当语法分析需要一个单词时,就调用扫描器。扫描器从初态出发,当识别一个单词后便进入终态,送出二元式。

针对该程序设计的DFA 图大致如下:

 

核心代码(这段是分析代码。其他的定义代码,识别字母代码,识别数字代码,等等就不一一列举了,源程序中有):

 

 

/** 
     * 初始化并读取源代码文件 
     * 扫描程序开始执行,直到读取文件结束符EOF 
     * @throws Exception 
     */ 
    private void scanning(String originalFile) throws Exception { 
        this.sourceFile = new BufferedReader(new FileReader(originalFile)); 
         
        this.initial(); 
        while(!isEOF) { 
            getToken(); 
        } 
        System.out.println("========================> end scann
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言词法分析器是编译器的一个重要组成部分,用于将源代码分解为一个个的词法单元。设计一个C语言词法分析器的思路如下: 1. 定义词法规则:首先需要定义C语言的词法规则,包括关键字、标识符、常量、运算符、界符等。可以参考C语言的语法规范或者相关文档。 2. 构建有限自动机:根据词法规则,可以使用有限自动机(Finite Automaton)来实现词法分析器。有限自动机可以通过状态转换来识别不同的词法单元。 3. 实现状态转换:根据C语言的词法规则,将每个词法单元表示为一个状态,并定义状态之间的转换条件。可以使用状态转换表或者状态转换图来表示状态之间的转换关系。 4. 取源代码:词法分析器需要从源代码逐个取字符,并根据状态转换进行相应的处理。可以使用缓冲区来存储取的字符,并逐个取并处理。 5. 输词法单元:当词法分析器识别一个完整的词法单元时,需要将其输。可以将词法单元表示为一个结构体,并将其存储到一个列表或者队列。 6. 错误处理:在词法分析过程,可能会遇到不符合词法规则的字符或者组合。需要进行相应的错误处理,例如报错或者忽略错误。 7. 测试和调试:设计词法分析器后,需要进行测试和调试,确保其能正确地识别源代码的各个词法单元。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值