Data_Structure/作業/unit7/tokenization.c

63 lines
2.0 KiB
C
Raw Permalink Normal View History

2025-01-20 21:30:53 +08:00
/*
Program: tokenization.c (Report comments/bugs to chikh@yuntech.edu.tw)
Function: <EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>q<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD>@<EFBFBD>~<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>Ʒx<EFBFBD><EFBFBD>
Notes: <EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>i<EFBFBD><EFBFBD>
w={"Mary":10, "Tom":3, "Charlie":5, "Bob":6, "Dickens":20, 4:9, "z":0, "Za":12, "aZ":8}
del w["Dickens"]
w["Mary"]=1
w["Tom"]+=2
w[4]?
w?
*/
#include <stdio.h> /* for sscanf(), printf() */
#include <string.h> /* for strstr(), strtok(), strtok_r() */
int main()
{
char *token, key[12], line[128];
const char *s = " ={},"; /* <20><><EFBFBD>j<EFBFBD>ŰO<C5B0><4F><EFBFBD>r<EFBFBD><72> */
int value, i = 0;
char *rest;
printf("\n*** <20>q<EFBFBD>r<EFBFBD><72>Ū<EFBFBD><C5AA><EFBFBD>ŰO(token)<29>{<7B><> ***\n\n<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>A<EFBFBD>w<EFBFBD><EFBFBD><Enter><3E><><EFBFBD><EFBFBD><EFBFBD>{<7B><>\n");
while (1) {
printf("\n<EFBFBD><EFBFBD><EFBFBD>O => ");
fgets(line,128,stdin); /* <20>ϥ<EFBFBD>gets()Ū<><C5AA><EFBFBD>]<5D>i<EFBFBD>H<EFBFBD>A<EFBFBD><41><EFBFBD>]gets()<29><><EFBFBD><>J<EFBFBD>r<EFBFBD><72><EFBFBD>ƪ<EFBFBD><C6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>i<EFBFBD><69><EFBFBD>ɭP<C9AD>x<EFBFBD>s<EFBFBD><73><EFBFBD>J<EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD>}<7D>C<EFBFBD>Ŷ<EFBFBD><C5B6>z<EFBFBD><7A> */
if (line[0]=='\n') break; /* <20><><EFBFBD>J<EFBFBD>Ŧr<C5A6><72><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A> */
if (strstr(line,"{")) { /* line<6E>t<EFBFBD><74>"{" */
sscanf(line,"w = {%[^}]}",line);
/* printf("<22>j<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72> %s\n",line); */
rest = line;
while (token = strtok_r(rest,s,&rest)) { /* strtok_r()<29><><EFBFBD>Ϊk<CEAA>i<EFBFBD>Ѩ<EFBFBD> http://bit.ly/3VcvbbZ */
/* printf("%s\n",token); */
if (strstr(token,":")) {/* token<65>t<EFBFBD><74>":" */
sscanf(token,"%[^:]:%d",key,&value);
printf("Token #%d: <20><>=%s; <20><>=%d\n",++i,key,value);
}
}
}
else if (strstr(line,"del")) { /* line<6E>t<EFBFBD><74>"del" */
sscanf(line,"del w[%[^]]]",key);
printf("<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD>=%s\n",key);
}
else if (strstr(line,"+=")) { /* line<6E>t<EFBFBD><74>"+=" */
sscanf(line,"w[%[^]]] +=%d",key,&value);
printf("<EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD>=%s<>F<EFBFBD>B<EFBFBD>⤸=%d\n",key,value);
}
else if (strstr(line,"=")) { /* line<6E>t<EFBFBD><74>"=" */
sscanf(line,"w[%[^]]] = %d",key,&value);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD>=%s; <20>B<EFBFBD>⤸=%d\n",key,value);
}
else if (sscanf(line,"w[%[^]]]?",key)==1)
printf("Ū<EFBFBD>ȹB<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD>=%s\n",key);
else if (strstr(line,"?"))
printf("<EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD><EFBFBD>Ӧr<EFBFBD><EFBFBD>e(<28>ЦP<D0A6>ǹ<EFBFBD><C7B9>@<40>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>@<40>~<7E><><EFBFBD>@<40><><EFBFBD><EFBFBD>)\n");
else
printf("<EFBFBD>y<EFBFBD>k<EFBFBD>L<EFBFBD>k<EFBFBD><EFBFBD><EFBFBD>{<7B>Asorry!\n");
}
printf("\n<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Abye ~\n");
return 0;
}