⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 本程序是 《编译原理与实践》一书中2.35 习题的解答。主要用到了 yyless()和 start condition 来解决。 作者:xiangyazi24@163.com NJU
💻 C
字号:
/* File: util.c
   Utility function implementation for the TINY compiler 
*/

#include "globals.h"
#include "util.h"

/* Procedure pritToken prints a token and its lexeme to the listing file */
void printToken ( TokenType token, const char* tokenString )
{
     switch(token)
     {
           case IF:
           case THEN:
           case ELSE:
           case END:
           case REPEAT:
           case UNTIL:
           case READ:
           case WRITE:      
                fprintf(listing, "reserved word: %s\n", tokenString);
                break;
           case ASSIGN: fprintf(listing, ":=\n"); break;
           case LT: fprintf(listing, "<\n"); break;
           case EQ: fprintf(listing, "=\n"); break;
           case LPAREN: fprintf(listing, "(\n"); break;
           case RPAREN: fprintf(listing, ")\n"); break;
           case SEMI: fprintf(listing, ";\n"); break;
           case PLUS: fprintf(listing, "+\n"); break;
           case MINUS: fprintf(listing, "-\n"); break;
           case TIMES: fprintf(listing, "*\n"); break;
           case OVER: fprintf(listing, "/\n"); break;
           case ENDFILE: fprintf(listing, "EOF\n"); break;
           case NUM: fprintf(listing, "NUM, val=%s\n",tokenString); break;
           case ID: fprintf(listing, "ID, name=%s\n",tokenString); break;
           case ERROR: fprintf(listing, "ERROR, %s\n",tokenString); break;
           default: //This should never happen
                    fprintf(listing, "Unknown token:%s\n", token);
            
     }
}

/* Function copyString allocates and makes a new copy of an existing string */
char* copyString(char* s)
{
      int n;
      char* t;
      if(s==NULL) return NULL;
      n = strlen(s)+1;
      t = malloc(n);
      if(t==NULL)
        fprintf(listing, "Out of memory error at line %d\n", lineno);
      else strcpy(t,s);
      return t;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -