# include<stdio.h>
# include<stdlib.h>
# include<string.h>
int panduan(char tmp[])
{
char b[6][10] = {"begin", "if", "then", "while", "do", "end", };
int k = 0;
while(k < 6) // 臨時變量tmp 與 字元串b[k] 進行比較
{
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] != '\0')
if(a[i] >= 'a' && a[i] <= 'z') // 判斷辨別符
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] = '\0';
j = panduan(tmp);
if(a[i] >= '0' && a[i] <= '9') // 判斷數字
tmp[j] = a[i];
while(a[i+1] >= '0' && a[i+1] <= '9')
printf("<%s, 11>\n", tmp);
j = 0;
switch(a[i]) // 判斷符号
case '+':printf("<+, 13>\n");break;
case '-':printf("<-, 14>\n");break;
case '*':printf("<*, 15>\n");break;
case '/':printf("</, 16>\n");break;
case ':':
if(a[i+1] == '=')
printf("<:=, 18>\n");
else
printf("<:, 17>\n");
}break;
case '<':
printf("<<=, 21>\n");
else if(a[i+1] == '>')
printf("<<>, 22>\n");
printf("<<, 20>\n");
case '>':
printf("<>=, 24>\n");
printf("<>, 23>\n");
case '=':printf("<=, 25>\n");break;
case ';':printf("<;, 26>\n");break;
case '(':printf("<(, 27>\n");break;
case ')':printf("<), 28>\n");break;
case '#':printf("<#, 0>\n");break;
i++;
int main(void)
char a[300];
printf("input : ");
gets(a);
cifafenxi(a);