zoukankan      html  css  js  c++  java
  • 第三章

    使用自动机和正则表达式判断字符串是否合法。

    构造词法分析器的方法可以分为人工方法和自动化方法。

    3.1.1 词法分析器的功能

    ①每当程序员敲击键盘上一个键时,自动向计算机输入一个相应的8位二进制码,这种码称为ASCII码。程序在计算机中被表示为ASCII码序列,通常称为源程序文件

    ②翻译时的最小语义单位是单词,Token是源程序中单词的内部表示,也称为记号

    首先从源程序文件中一个字符一个字符的读字符,并逐个的分离出单词,然后构造他们的机内表示Token。(源程序的处理过程)

    关于Token的结构没有统一的规定,至少包含两部分内容:一是单词的类别,二是单词的内容(语义 )。

    单词的Token表示也没有固定的模式,其结构可随着编译器的不同而变化。

    标识符单词、常量单词、保留字单词

    【词法分析器的任务】根据程序的ASCII码序列依次拼出单词的ASCII码表示,然后将其转换成相应的Token码(分为语法分析器的子程序编译器的独立一遍处理器

    3.1.2 单词识别

     词法分时首要任务是如何从源文件中的ASCII码序列依次分离出单词,即如何判定新单词的开始、如何判定一个单词的结束以及如何判定是什么类的单词的问题。(但是比起语法分析还是词法分析简单)

    3.1.3 词法分析的复杂性(有时需要根据后面遇到的符号往回扫描)

    3.1.4 字符串

    如何设计字符串空间?(字符数组法和(指针数组法

    3.1.5 保留字:关键字不能作为用户定义的标识符。两种处理方法:(保留字表)和(不用保留字表)

    保留字表又分为三种(顺序表结构)、(散列表结构)和(散列和顺序表结合的一种结构)

    不用保留字表主要思想是(在拼单词的过程中就判断是否为保留字,拼完就判断完了)

    3.1.6 空格符、回车符、换行符

    空格符分隔单词,回车符和换行符也没有任何实际意义,对错误处理有重要意义(判断bug在第几行出现)

    3.1.7 括号类配对预检

    有错误不停下,还会继续向下分析,预检就是增加计数器,左括号加一,右括号减一,最后结果为零就配对。

    3.1.8 词法错误修正

    程序错误可分为三层:(词法层)、(语法层)和(语义层

    词法层:错误的字符;语法层:错误的单词;语义层:语义中出现错误的语法单位。

    3.1.9 词法分析独立化的意义

  • 相关阅读:
    svn使用
    canvas入门-3渐变方法
    canvas入门-2路径、文字
    canvas入门-1三种填充方式、渐变、模式
    jquery extend的使用
    angular入门-ngOptions
    jquery-EasyUI---panel面板的用法
    jquery-EasyUI---tooltip提示框的使用
    jquery-EasyUI---progressbar进度条的的使用
    jquery-EasyUI---searchbox搜索框的用法
  • 原文地址:https://www.cnblogs.com/yangf428/p/10127817.html
Copyright © 2011-2022 走看看