编译原理实验一

您所在的位置:网站首页 词法分析程序设计实验 编译原理实验一

编译原理实验一

2022-05-24 04:48| 来源: 网络整理| 查看: 265

#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