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

📄 globals.h

📁 一个简化的编译器
💻 H
字号:
/****************************************************//* File: globals.h                                  *//* Yacc/Bison Version                               *//* Global types and vars for TINY compiler          *//* must come before other include files             *//* Compiler Construction: Principles and Practice   *//* Kenneth C. Louden                                *//****************************************************/#ifndef _GLOBALS_H_#define _GLOBALS_H_#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>/* Yacc/Bison generates internally its own values * for the tokens. Other files can access these values * by including the tab.h file generated using the * Yacc/Bison option -d ("generate header") * * The YYPARSER flag prevents inclusion of the tab.h * into the Yacc/Bison output itself */#ifndef YYPARSER/* the name of the following file may change */#include "y.tab.h"/* ENDFILE is implicitly defined by Yacc/Bison, * and not included in the tab.h file */#define ENDFILE 0#endif#ifndef FALSE#define FALSE 0#endif#ifndef TRUE#define TRUE 1#endif/* MAXRESERVED = the number of reserved words */#define MAXRESERVED 8/* Yacc/Bison generates its own integer values * for tokens */typedef int TokenType; extern FILE* source; /* source code text file */extern FILE* listing; /* listing output text file */extern FILE* code; /* code text file for TM simulator */extern int lineno; /* source line number for listing *//**************************************************//***********   Syntax tree for parsing ************//**************************************************/typedef enum {StmtK,ExpK} NodeKind;typedef enum {IfK,RepeatK,AssignK,ReadK,WriteK} StmtKind;typedef enum {OpK,ConstK,IdK} ExpKind;/* ExpType is used for type checking */typedef enum {Void,Integer,Boolean} ExpType;#define MAXCHILDREN 3typedef struct treeNode   { struct treeNode * child[MAXCHILDREN];     struct treeNode * sibling;     int lineno;     NodeKind nodekind;     union { StmtKind stmt; ExpKind exp;} kind;     union { TokenType op;             int val;             char * name; } attr;     ExpType type; /* for type checking of exps */   } TreeNode;/**************************************************//***********   Flags for tracing       ************//**************************************************//* EchoSource = TRUE causes the source program to * be echoed to the listing file with line numbers * during parsing */extern int EchoSource;/* TraceScan = TRUE causes token information to be * printed to the listing file as each token is * recognized by the scanner */extern int TraceScan;/* TraceParse = TRUE causes the syntax tree to be * printed to the listing file in linearized form * (using indents for children) */extern int TraceParse;/* TraceAnalyze = TRUE causes symbol table inserts * and lookups to be reported to the listing file */extern int TraceAnalyze;/* TraceCode = TRUE causes comments to be written * to the TM code file as code is generated */extern int TraceCode;/* Error = TRUE prevents further passes if an error occurs */extern int Error; #endif

⌨️ 快捷键说明

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