词法分析程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词法分析程序相关的知识,希望对你有一定的参考价值。
一.词法分析程序的功能。
词法分析程序完成的事编译第一阶段的工作。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描然后根据构词规则识别单词。词法分析工作可以使独立的一遍,把字符流的源程序变成单词序列,输出到一个中间文件,这个文件作为语法分析程序的恶输入而继续的编译过程。对字符串表示的源程序从左到右进行扫描和分解根据词法规则,识别出一个一个具有独立意义的单词符号以供语法分析之用,如果发现词法错误则返回出错信息。
二.符号与种别码对照表:
三.文法描述词法规则:
这个概念真心不懂,只知道文法就是描述高级语言程序的构成规则。
#include<stdio.h> #include<stdlib.h> void main() { int i; char a[100]; printf("请输入字符串:"); scanf("%s",&a); for(i=0;i<100;i++) { if(a[i]==‘b‘&&a[i+1]==‘e‘&&a[i+2]==‘g‘&&a[i+3]==‘i‘&&a[i+4]==‘n‘) printf("<1\\tbegin>\\n"); else if(a[i]==‘i‘&&a[i+1]==‘f‘) printf("<2\\tif>\\n"); else if(a[i]==‘t‘&&a[i+1]==‘h‘&&a[i+2]==‘e‘&&a[i+3]==‘n‘) printf("<3\\tthen>\\n"); else if(a[i]==‘w‘&&a[i+1]==‘h‘&&a[i+2]==‘i‘&&a[i+3]==‘l‘&&a[i+4]==‘e‘) printf("<4\\twhile>\\n"); else if(a[i]==‘d‘&&a[i+1]==‘o‘) printf("<5\\tdo>\\n"); else if(a[i]==‘e‘&&a[i+1]==‘n‘&&a[i+2]==‘d‘) printf("<6\\tend>\\n"); else if(a[i]==‘|‘&&a[i+1]==‘(‘&&a[i+2]==‘l‘&&a[i+3]==‘|‘&&a[i+3]==‘d‘&&a[i+3]==‘*‘) printf("<3\\tthen>\\n"); else if(a[i]==‘d‘&&a[i+1]==‘d‘&&a[i+2]==‘*‘) printf("<11\\tdd*>\\n"); else if(a[i]==‘-‘) printf("<14\\t->\\n"); else if(a[i]==‘*‘) printf("<15\\t*>\\n"); else if(a[i]==‘/‘) printf("<16\\t/>\\n"); else if(a[i]==‘:‘&&a[i+1]!=‘=‘) printf("<17\\t:>\\n"); else if(a[i]==‘:‘&&a[i+1]==‘=‘) printf("<18\\t:=>\\n"); else if(a[i]==‘<‘&&a[i+1]!=‘=‘&&a[i+1]!=‘>‘) printf("<20\\t<>\\n"); else if(a[i]==‘<‘&&a[i+1]==‘=‘) printf("<21\\t<=>\\n"); else if(a[i]==‘<‘&&a[i+1]==‘>‘) printf("<22\\t<>>\\n"); else if(a[i]==‘>‘&&a[i+1]!=‘=‘) printf("<23\\t>>\\n"); else if(a[i]==‘>‘&&a[i+1]==‘=‘) printf("<24\\t>=>\\n"); else if(a[i]==‘=‘) printf("<25\\t=>\\n"); else if(a[i]==‘;‘) printf("<26\\t;>\\n"); else if(a[i]==‘(‘) printf("<27\\t(>\\n"); else if(a[i]==‘)‘) printf("<28\\t)>\\n"); else if(a[i]==‘#‘) printf("<0\\t#>\\n"); } }
Vt ={a,b,c,d,e,0,1}
P={A->a|b|e|Aa|Ae|Ao|A}
S = A .
以上是关于词法分析程序的主要内容,如果未能解决你的问题,请参考以下文章