实在是没有写博客的习惯,忽然发现实验做完了,但是还没有写博客,于是上来补一篇好了。
这次的词法分析的内容不是很多,13号晚上花了点时间写完了代码,14号写实验报告的时间居然比写代码的时间还要多,于是想起了那句话“如果爱迪生每个实验都写一份实验报告,那他还会有这么多的发明吗?”大概是这么个意思。
目前采用的是在windows下写词法分析,并且在windows上编译和运行,觉得后面的实验恐怕还是要在linux实现了,于是乎装了个Ubuntu,在windows上使用flex在上篇文章里面已经写的很详细了。下面就是如何写词法分析:
首先,我们需要自行完成包括词法规则等在内的Flex代码。如何编写这份代码后面会提到,现在先假设这份写好的代码名lexical.l;随后,我们使用Flex 对这份代码进行编译:flex lexical.l 编译好的结果会保存在当前目录下的lex.yy.c 文件中。打开这个文件你会发现,该文件本质上就是一个C语言的源代码。事实上,这份源代码里目前对我们有用的函数只有一个,叫做yylex(),该函数的作用就是读取输入文件中的一个词法单元。我们可以再为它编写一个main函数:
int main(int argc, char** argv)
{
if (argc > 1)
{
if (!(yyin = fopen(argv[1], “