# include<stdio.h># include<stdlib.h># include<string.h>int Panduan (char tmp[]) {char b[6][10] = {" Begin "," if "," then "," when "," Do "," End ",};int k = 0;while (K < 6)//TEMP variable tmp vs. String B[k], compare {if (strcmp (TMP, b[k]) = = 0 {printf ("<%s,%d>\n", TMP, k+1); return 0;} k++;} printf ("<%s, 10>\n", TMP); return 0;} void Cifafenxi (char a[]) {int i = 0, j = 0;char Tmp[10];int flag = 0;while (a[i]! = ' + ') {if (A[i] >= ' A ' && a[i] <= ' z ')//judgment identifier {TMP[J] = A[i];j++;while ((a[i+1] >= ' A ' && a[i+1] <= ' z ') | | (a[i+1] >= ' 0 ' && a[i+1] <= ' 9 ')) {I++;tmp[j] = a[i];j++;} TMP[J] = ' + '; j = Panduan (TMP);} if (A[i] >= ' 0 ' && a[i] <= ' 9 ')//judgment number {Tmp[j] = A[i];j++;while (a[i+1] >= ' 0 ' && a[i+1] <= ' 9 ') { I++;TMP[J] = a[i];j++;} TMP[J] = ';p rintf ("<%s, 11>\n", tmp); j = 0;} Switch (A[i])//Judgment Symbol {case ' + ':p rintf ("<+, 13>\n"); Break;case '-':p rintf ("<-, 14>\n"); Break;case ' * ': printf ("<*, 15>\n"); Break;case '/':p rintf ("</, 16>\n"); Break;case ': ': {if (a[i+1] = = ' = ') printf ("<:=, 18>\n"); elseprintf ("<:, 17>\n" );} Break;case ' < ': {if (a[i+1] = = ' = ') printf ("<<=, 21>\n"), else if (a[i+1] = = ' > ') printf ("<<>, 22 >\n "); elseprintf (" <<, 20>\n ");} Break;case ' > ': {if (a[i+1] = = ' = ') printf ("<>=, 24>\n"); elseprintf ("<> 23>\n");} Break;case ' = ':p rintf ("<=, 25>\n"); Break;case '; ':p rintf ("<;, 26>\n"); Break;case ' (':p rintf ("< (, 27 >\n "), Break;case ') ':p rintf (" <), 28>\n "), Break;case ' # ':p rintf (" <#, 0>\n "); i++;}} int main (void) {char a[300];p rintf ("Input:"); gets (a); Cifafenxi (a); return 0;}
0916 Programming Experiment a lexical analysis program