”, “then”, “while”, “do”, “end”,};Р置初值Р调用扫描子程序Р输出单词二元组Р输入串结束Р 否Р Р 是Р结束Р Р图3-1Р(2)程序中需要用到的主要变量为syn,token和sumР3.2 扫描子程序的算法思想:Р首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码。扫描子程序主要部分流程如图3-2所示。Р变量初始化Р忽略空格Р是否文件结束? Р Р返回Р 是是Р?Р?Р否Р?字母Р拼字符串Р 数字其他Р?运算符、符号Р?界符等符号Р是否关键字?Р返回Р拼数Р 否Р对不同符号给出相应的syn值Р报错Рsyn=10Р 是Р?Рsyn=1111Рsyn为对应关键字的单词种别码Р?Р图 3-2Р四、词法分析程序的C语言程序源代码:Р#include <stdio.h>Р#include <string.h>Рchar prog[80],token[8],ch;Рint syn,p,m,n,sum;Рchar *rwtab[6]={"begin","if","then","while","do","end"};Р scaner();Рmain()Р{p=0;Р printf("\n please input a string(end with '#'):/n");Р do{Р scanf("%c",&ch);Р prog[p++]=ch;Р }while(ch!='#');Р p=0;Р do{Р scaner();Р switch(syn)Р {case 11:printf("( %-10d%5d )\n",sum,syn);Р break;Р case -1:printf("you have input a wrong string\n");Р getch();Р exit(0);