一、词法分析程序功能:
词法分析器的功能为输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等
(1) 关键字 是由程序语言定义的具有固定意义的标识符。例如,Pascal 中的begin,end,if,while都是保留字。这些字通常不用作一般标识符。
(2) 标识符 用来表示各种名字,如变量名,数组名,过程名等等。
(3) 常数 常数的类型一般有整型、实型、布尔型、文字型等。
(4) 运算符 如+、-、*、/等等。
(5) 界符 如逗号、分号、括号、等等。
二、符号与种别码对照表
三、代码实现:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 100 char prog[SIZE],ch,token[8]; int p=0,syn,n,i; char *keyword[6]={"begin","then","if","while","do","end"};//定义关键字数组 void scaner(); void main() { int select=-1; p=0; printf("请输入源程序字符串(以'#'结束): "); do { ch=getchar(); prog[p++]=ch; }while(ch!='#'); p=0; do { scaner(); switch(syn) { case -1:printf("词法分析 出错 ");break; default :printf("<%d,%s> ",syn,token);break; } }while(syn!=0); printf("词法分析 成功 "); getchar(); } void scaner() { for(n=0;n<8;n++) {token[n]='