zoukankan      html  css  js  c++  java
  • 编译原理随笔2(词法分析)

    0、理论基础

    • 正规文法
    • 有限自动机

    1、主要任务

      从左到右扫描源程序,预处理后、 按照词法规则识别每个正确的单词,转换为对应的二元式(类号,内码),提交给语法分析使用。

    2、预处理

    •   处理注释、空格、跳格、回车换行
    • 一行语句结束后,配上一个特殊字符说明
    • 识别标号去(goto语句中标号),区分标号语句
    • 输出源程序清单以便复核

    3、超前搜索

    对于某些关键词不加保护的语言,需要超前搜索

    注:一般高级语言不需要超前搜索

    4、输出格式

    基本字(保留字)、标志词、常量、运算符、界符

    二元式:(类号,内码)

    5、扫描器设计

    1. 写出该语言的词法规则
    2. 将词法规则转换成状态转换图
    3. 将各转换图的初态连在一起,构成识别此语言的自动机
    4. 设计扫描器
      • 扫描器作为语法分析的一个过程,当语法分析需要一个单词时,就调用扫描器。
      • 扫描器从初态出发,当识别一个单词后,便进入终态,送入二元式
      • 注:用状态转化矩阵替换状态图,方便计算机实现。

    6、总结

    • 正规文法、正规集、正规式的关系
      • 正规文法是产生式的文法,是乔姆斯基 3文法,分为左线性文法、右线性文法
      • 正规集是满足正规文法的所有集合。
      • 正规式,使用一个简单的式子表示语言的组成
      • 关系:正规文法和正规式是规则,正规集是个集合。正规文法和正规式是等价的,可以相互转换
    • 正规文法->正规式
    • NFA的确定化:子集法
    • DFA的最小化:
    • 对含有e弧的NFA进行确定化
    • 正规文法、正规式、自动机的相互转换
  • 相关阅读:
    Hadoop 实现 TFIDF 计算
    关于Elasticsearch 使用 MatchPhrase搜索的一些坑
    SpringBoot jar包中资源加载问题
    gradle 将依赖打入Jar包的方法
    ES 在聚合结果中进行过滤
    Java c# 跨语言Json反序列化首字母大小写问题
    hadoop is running beyond virtual memory limits问题解决
    hadoop环境运行程序出现 Retrying connect to server 问题
    CSS的初步认识,基本选择器(CSS day1)
    day19 time模块
  • 原文地址:https://www.cnblogs.com/sqchao/p/11563024.html
Copyright © 2011-2022 走看看