编译原理实验一 |
您所在的位置:网站首页 › 词法分析程序设计实验 › 编译原理实验一 |
#include #include #include #include "demo.h" char token[20]; int lookup(char *token) { for (int i = 0; i < 11; i++) { if (strcmp(token, KEY_WORDS[i]) == 0) { return i+1; } } return 0;} char getletter(FILE *fp) { return tolower(fgetc(fp));} void out(FILE *fp, int c, char *value) { fprintf(fp, "%d,%s/n", c, value);} void report_error(FILE *fp, char ch) { fprintf(fp, "There must be some error./n"); fprintf(fp, "%c.../n", ch); fprintf(fp, "^/n");} void scanner(FILE *infile, FILE *outfile) { char ch; int i, c; do { do { ch = getletter(infile); } while(isspace(ch)); if (isalpha(ch)) { token[0] = ch; ch = getletter(infile); i = 1; while (isalnum(ch)) { token[i] = ch; i++; ch = getletter(infile); } token[i] = '/0'; fseek(infile, -1, 1); c = lookup(token); if (c == 0) { out(outfile, ID, token); } else { out(outfile, c, " "); } } else { if (isdigit(ch)) { token[0] = ch; ch = getletter(infile); i = 1; while (isdigit(ch)) { token[i] = ch; i++; ch = getletter(infile); } token[i] = '/0'; fseek(infile, -1, 1); out(outfile, INT, token); } else { switch(ch) { case ' |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |