📄 util.cpp
字号:
/****************************************************/
/* File: util.c */
/* Utility function implementation */
/* for the C_Minus compiler */
/****************************************************/
#include "globals.h"
#include "util.h"
#include "parseLL_1.h"
void printToken( TokenType token, const char* tokenString )
{
switch (token)
{ case IF:
case ELSE:
case INT:
case RETURN:
case VOID:
case WHILE:
fprintf(scan,
"reserved word: %s\n",tokenString);
break;
case ASSIGN: fprintf(scan,"=\n"); break;
case LT: fprintf(scan,"<\n"); break;
case GT: fprintf(scan,"<=\n"); break;
case LE: fprintf(scan,">\n"); break;
case GE: fprintf(scan,">=\n"); break;
case EQ: fprintf(scan,"==\n"); break;
case NOEQ: fprintf(scan,"!=\n"); break;
case LPAREN: fprintf(scan,"(\n"); break;
case RPAREN: fprintf(scan,")\n"); break;
case LINDEX: fprintf(scan,"[\n"); break;
case RINDEX: fprintf(scan,"]\n"); break;
case LBRACE: fprintf(scan,"{\n"); break;
case RBRACE: fprintf(scan,"}\n"); break;
case COMMA: fprintf(scan,",\n"); break;
case SEMI: fprintf(scan,";\n"); break;
case PLUS: fprintf(scan,"+\n"); break;
case MINUS: fprintf(scan,"-\n"); break;
case TIMES: fprintf(scan,"*\n"); break;
case OVER: fprintf(scan,"/\n"); break;
case ENDFILE: fprintf(scan,"EOF\n"); break;
case NUM:
fprintf(scan,
"NUM, val= %s\n",tokenString);
break;
case ID:
fprintf(scan,
"ID, name= %s\n",tokenString);
break;
case ERROR:
fprintf(scan,
"ERROR: %s\n",tokenString);
break;
default: /* should never happen */
fprintf(scan,"Unknown token: %d\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 =(char *) malloc(n);
if (t==NULL);
else strcpy(t,s);
return t;
}
/********* printSpaces indents by printing spaces */
static void printSpaces(int indentno)
{ int i=0;
for (i=0;i<indentno;i++)
fprintf(stree," ");
}
/* procedure printTree prints a syntax tree to the
* listing file using indentation to indicate subtrees*/
void printTree(StreeNode * tree)
{ int i;
if (tree != NULL) {
printSpaces(tree->layno);
fprintf(stree,"%2d:",tree->layno);
printToken4(tree->val,tree->tokenString);
fprintf(stree,"\n");
for(i=0;i<tree->childrenno;i++)
printTree(tree->child[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -