版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
简单词法分析程序设计编译器分为前端和后端,但有别于传统的Web项目,编译器的前端一般承担着词法分析、语法分析、类型检查等工作,而后端主要负责将代码翻译成目标机器能够运行的二进制机器码。本系列制作的是一门解释型语言(InterpretedLanguage),本节主要介绍编译器前端中的
词法分析(LexicalAnalysis)
阶段。“处理”源码Inorderforustoworkwithsourcecodeweneedtoturnitintoamoreaccessibleform.首先我们需要明白一件事:机器是无法理解我们平时写的源代码的,它只能够理解二进制数据,而从源码转化为二进制这一行为叫做编译(compile),执行这一过程的程序叫做编译器(compiler),你可以将源代码理解为英文,最终的二进制数据(程序)理解为中文,那么编译器就是翻译员。不同的是,编译这个行为并不是一步到位的,中间又分为许多步骤,下面让我们调整视角,来关注编译的第一步:词法分析。词法分析和语法分析词法分析器(Lexer)的输入就是我们的源代码(sourcecode),输出token并将其作为语法分析的输入。
假设我们有这样一行源代码:let
x
=
5
+
5;经过词法分析后,我们期望它成为类似下面这种格式的标记(token)[
LET,
IDENTIFIER("x"),
EQUAL_SIGN,
INTEGER(5),
PLUS_SIGN,
INTEGER(5),
SEMICOLON
]稍加留意就会发现,这一步做的工作其实就是将源代码“拆开”转化为一个一个对应的标记,这样更加方便下一阶段处理。词法分析器工作示意图其伪代码可以这样表示://
源代码
var
input
=
"let
x
=
5
+
5;"
//
将源代码作为词法分析器的输入
Lexer
lexer
=
new
Lexer(input)
//
调用词法分析器的nextToken方法,该方法返回下一个token,直到结束
for
(var
tok
=
lexer.nextToken();
tok
!=
EOF;
tok
=
lexer.nextToken())
{
Print(tok)
}而词法分析器的代码如下://
词法分析器
class
Lexer
{
//
nextToken返回下一个token对象,只需要不断调用nextToken即可
Token
nextToken()
{
//
读一个字符
var
ch
=
readChar()
//
判断该字符是否是加减乘除等符号,是的话就返回对应的Token
if
(ch
==
'+')
{
return
new
Token(Token.PLUS,
ch)
}
else
if
(ch
==
'-')
{
return
new
Token(Token.MINUS,
ch)
}
...
{
//
加减乘除左右大中小括号等
}
else
{
//
执行这里说明当前字符可能是字母,也可能是数字
if
(ch.isLetter())
{
//
如果是字母,读完这个单词(一直到空格)再进一步处理
readWord()
...
}
else
if
(ch.isDigit())
{
//
如果是数字同上,读完这个数字,将其作为整数对待
readNumber()
...
}
}
}
}以上代码只给出了词法分析器的核心思路,你可以自己去完善它,修改它。你可以使用下面这段代码当做你自己的词法分析器的输入作为测试用例,当然你也可以创造自己的编程语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年钻床行业风险投资发展分析及投资融资策略研究报告
- 2024-2030年酿酒产业市场深度调研及发展趋势与投资战略研究报告
- 2024-2030年速溶片行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2024-2030年辐射直线加速器行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2024-2030年软件外包项目可行性研究咨询报告
- 2024-2030年超导体行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2024-2030年贵金属热电偶行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2030年豆制品行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2024-2030年西昌市文化行业市场发展分析及发展趋势与投资前景研究报告
- 2024-2030年表面清洁剂行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 公路监理巡视记录表
- 婚礼筹备日程表完整版(表格版)
- 八年级物理第一二章测试题(含答案)
- 施工项目水资源使用台账表
- 1《大青树下的小学》课件(共36张PPT)
- 小学校务监督委员会工作方案
- 26个英文字母书写笔顺动态演示
- Unit+1+Assessing+Your+Progress+ +Project+教案 高中英语人教版(2019)选择性必修第二册
- 非煤矿山安全避险六大系统
- 自考《兽医法规14239》考试复习题库(必备版)
- 集团公司设备管理办法
评论
0/150
提交评论