实验一词法分析器的设计
时间:2026-01-17
时间:2026-01-17
实验一 词法分析器的设计
一、实验目的
(1)学会针对转换图实现相应的高级语言源程序。
(2)深刻领会状态转换图的含义,逐步理解有限自动机。
二、实验内容
(1)某计算机语言的编译程序的词法分析部分实现。
(2)从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token),送给语法分析程序。
三、实现原理
程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。
PL/0语言的EBNF表示
<常量定义>::=<标识符>=<无符号整数>;
<标识符>::=<字母>={<字母>|<数字>};
<加法运算符>::=+|-
<乘法运算符>::=*|/
<关系运算符>::==|#|<|<=|>|>=
<字母>::=a|b| |X|Y|Z
<数字>::=0|1|2| |8|9
四、设计过程
1. 关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf 并为小写。
2."+”;”-”;”*”;”/”;”:=“;”:”;”<“;”<=“;”>“;”>=“;”<>“;”=“;”(“;”)”;”;”;”#”为运算符。
3. 其他标记 如字符串,表示以字母开头的标识符。
4. 空格符跳过。
5. 各符号对应种别码
关键字分别对应1-13
运算符分别对应401-418,501-513。
字符串对应100
常量对应200
结束符#
五、心得体会
其实匹配并不困难,主要是C++知识要求相对较高,只要把握住指针就好了。
附源程序:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i,j,k,flag,number,status;
/*status which is use to judge the string is keywords or not!*/
上一篇:现代生物进化理论测试