Atitit.词法分析的原理 理论

1. 分词 .词法分析lexical analysis 1

1.1. 分词主要流程 1

1.2. 分词的属性如下表token 1

1.3. 词法分析器主要包括:构造转换图与转换表、设计词法分析器算法。 2

2. 状态转换表 2

3. 词性划分 2

3.1. Token的类型,根据程序设计语言的特点,单词可以分为五类:关键字、标识符、常量、运算符、界符。以 2

3.2. 词法分析的第一阶段即扫描器 2

3.3. 词法分析的第二阶段评估器(Evaluator) 3

4. Qa 3

4.1. 词法分析的逻辑结果包括空格吗 3

1. 分词 .词法分析lexical analysis

1.1. 分词主要流程

字符切分,对比字典词典得到分词,并查阅词典,标注词性。完善其他属性,输出

当词法分析器发现了一个标识符的词素时,要将这个词素添加到符号表中。

其他任务:

  • 过滤掉源程序中的注释和空白。
  • 将编译器生成的错误信息与源程序的位置联系起来。记录行号等。

词法分析器的两个级联的处理阶段:

  1. 扫描阶段:简单处理,删除注释,压缩空白字符。
  2. 词法分析阶段:处理扫描阶段的输出并生成词法单元。

1.2. 分词的属性如下表token

参考antlr..

Col

列数

Filename

所属文件名

Line

行数

Text

分词

Type

词性

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.blogcn.net/attilax

1.3. 词法分析器主要包括:构造转换图与转换表、设计词法分析器算法。

词法分析器的核心就是依据转换图识别单词。不过,事实并非完全如此。由于某些程序设计语言的词法定义缘故,仅仅依据程序2-1的算法是不足以完成词法分析的

2. 状态转换表

3. 词性划分

3.1. Token的类型,根据程序设计语言的特点,单词可以分为五类:关键字、标识符、常量、运算符、界符。以

读者可能对"单词"感到有点疑惑,不明白到底什么才是词法分析中所说的"单词"。试图回答这个问题就必须了解几个基本概念。这里,引入几个程序设计语言相关的名词。

(1)标识符:用户自定义的变量名、函数名等字符串。

(2)关键字:具有特殊含义的标识符。

(3)运算符:例如+、-、*、/ 等。

(4)常量:例如3.24、92等。

(5)界符:具有特殊含义的符号,如分号、括号等。

3.2. 词法分析的第一阶段即扫描器

词法分析的第一阶段即扫描器,通常基于有限状态自动机

3.3. 词法分析的第二阶段评估器(Evaluator)

语法分析器需要第二阶段的评估器(Evaluator)。评估器根据语素中的字符序列生成一个“值”,这个“值”和语素的类型便构成了可以送入语法分析器的单词。一些诸如括号的语素并没有“值”,评估器函数便可以什么都不返回。整数、标识符、字符串的评估器则要复杂的多。评估器有时会抑制语素,被抑制的语素(例如空白语素和注释语素)随后不会被送入语法分析器

4. Qa

4.1. 词法分析的逻辑结果包括空格吗

好像不包括,参考 atitit.c词法分析器的详细原理.docx。。参考请问编译原理词法分析器是干什么用的,怎么用???-CSDN论坛-CSDN.NET-中国最大的IT技术社区.html, 也是不包括

分号逗号是包括的。

词法分析的逻辑结果包括分界符号码

看起来好像包括

包括字符串双引号吗,好像包括,参考 请问编译原理词法分析器是干什么用的,怎么用???-CSDN论坛-CSDN.NET-中国最大的IT技术社区.html

for(int i=0;++i;i<10)printf("Hello world");

printf
(
"Hello聽world"
)
;

5. 参考资料

词法分析器的作用 - cyendra - 博客园.html

Atitit.词法分析的原理 理论的更多相关文章

  1. atitit.web原理 理论attilax总结

    atitit.web原理 理论attilax总结 1. Web3.01 2. Web的未来趋势1 3. Web语言与应用导论_百度百科.html2 4. <Web设计与编程导论(影印版)> ...

  2. Atitit.html css  浏览器原理理论概论导论attilax总结

    Atitit.html css  浏览器原理理论概论导论attilax总结 1.1. 浏览器是怎样工作的:渲染引擎,HTML解析(连载二)1 2. 5.1.1 DOM标准 1011 3. <We ...

  3. atitit.词法分析原理 词法分析器 (Lexer)

    atitit.词法分析原理 词法分析器 (Lexer) 1. 词法分析(英语:lexical analysis)1 2. :实现词法分析程序的常用途径:自动生成,手工生成.[1] 2 2.1. 词法分 ...

  4. Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net js javascript  c++ python

    Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j ...

  5. Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle

    Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq  index2 3.  ...

  6. atitit.词法分析的实现token attilax总结

    atitit.词法分析的实现token attilax总结 1. 词法分析(英语:lexical analysis)跟token 1 1.1. 扫描器 2 2. 单词流必须识别为保留字,标识符(变量) ...

  7. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

  8. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  9. Atitit 游戏的原理与概论attilax总结

    Atitit 游戏的原理与概论attilax总结 1. 游戏历史2 1.1.1. 盘点PC游戏史上最重要的50款游戏2 1.1.2. 回味人类文明进程 五款经典的历史游戏2 2. 游戏类型(主要分为6 ...

随机推荐

  1. [2015hdu多校联赛补题]hdu5299 Circles Game

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5299 题意: 在欧几里得平面上有n个圆,圆之间不会相交也不会相切,现在Alice和Bob玩游戏,两人轮 ...

  2. nyoj 737 石子合并(一)。区间dp

    http://acm.nyist.net/JudgeOnline/problem.php?pid=737 数据很小,适合区间dp的入门 对于第[i, j]堆,无论你怎么合并,无论你先选哪两堆结合,当你 ...

  3. to_char 详解

    对TO_CHAR的讨论可以分为从两种类型的数据到字符的转换:DATE和NUMBER. TO_CHAR函数返回VARCHAR2数据类型的值. 1. NUMBER TO CHAR 语法: TO_CHAR( ...

  4. [C#]循环输出 000 - 999999

    循环输出 000 - 999999 ; i < ; i++) { , i.ToString().Length); j < 7; j++) { Debug.WriteLine(i.ToStr ...

  5. Linux 下安装 jdk压缩包

    按 esc  退出  记得 输入 :q    记得 : Linux下安装jdk 把压缩文件放在 桌面的soft 下 在usr目录下新建文件夹Java,把文件复制到 usr/java 更改下路径! 3 ...

  6. linux桌面环境gnome,kde,xfce,lxde 使用比较(转)

    Linus Torvalds大神前几日在 Google+上表示,GNOME 3"无可容忍的凌乱",改投Xfce桌面环境.下面就GNOME, KDE, XFCE和 LXDE略作比较. ...

  7. 代码中修改组件的margin属性

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_ ...

  8. javascript学习第一课

    1.基本知识: 1.1 词法结构 1.1.1 字符集 javascript程序是用Unicode字符集编写的. 1.1.2 区分大小写 javascript是区分大小写的语言.也即是关键字.变量.函数 ...

  9. vsftpd移植

    1.交叉编译 2.将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行: 3.配置 使用 vi 打开 v ...

  10. LeetCode OJ--Minimum Window Substring ***

    https://oj.leetcode.com/problems/minimum-window-substring/ 模拟题 这道题细节比较多.从左到右扫一遍模拟着做 class Solution { ...