globals.h
来自「c语言编写」· C头文件 代码 · 共 119 行
H
119 行
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#define MAXRESERVED 6
typedef enum
{
ENDFILE,ERROR,
IF,ELSE,INT,RETURN,VOID,WHILE,
ID,NUM,
//0-9
ASSIGN,EQ,NEQ,LT,LTOREQ,BI,//10-15
BIOREQ,PLUS,MINUS,TIMES,OVER,SEMI,COMA,//16-22
LROUNDBRA,RROUNDBRA,LSQUARPAREN,//23-25
RSQUARPAREN,LBRAC,RBRAC,LCOM,RCOM//26-29
}TokenType;
#define NUM_TERM RCOM+1//终结符数量
extern FILE* source;
extern FILE* listing;
extern FILE* code;
extern int lineno;
/*for parsing*/
#define MAXTOKENLEN 40
extern char tokenString[MAXTOKENLEN+1];
//
#define OFFSET 50
#define NonOp -1
#define NullToken -1
#define V_shop 0//等于ENDFILE
#define program 1+OFFSET//因为前面的关键字等符号已经占据了0到几十的空间
#define declaration_list 2+OFFSET
#define declaration 3+OFFSET
#define var_declaration 4+OFFSET
#define type_specifier 5+OFFSET
#define fun_declaration 6+OFFSET
#define params 7+OFFSET
#define param_list 8+OFFSET
#define param 9+OFFSET
#define compound_stmt 10+OFFSET
#define local_declarations 11+OFFSET
#define statement_list 12+OFFSET///
#define statement 13+OFFSET
#define expression_stmt 14+OFFSET
#define selection_stmt 15+OFFSET
#define iteration_stmt 16+OFFSET
#define return_stmt 17+OFFSET
#define expression 18+OFFSET
#define var 19+OFFSET
#define simple_expression 20+OFFSET
#define relop 21+OFFSET
#define additive_expression 22+OFFSET
#define addop 23+OFFSET
#define term 24+OFFSET
#define mulop 25+OFFSET
#define factor 26+OFFSET
#define call 27+OFFSET
#define args 28+OFFSET
#define args_list 29+OFFSET
/*for left factoring*/
#define _declaration 30+OFFSET
#define _param 31+OFFSET
#define _selection_stmt 32+OFFSET
#define _return_stmt 33+OFFSET
#define _var 34+OFFSET
#define _simple_expression 35+OFFSET
/*for left recursion removal*/
#define _declaration_list 36+OFFSET
#define _param_list 37+OFFSET
#define _local_declarations 38+OFFSET
#define _statement_list 39+OFFSET
#define _additive_expression 40+OFFSET
#define _term 41+OFFSET
#define _args_list 42+OFFSET
#define _val 43+OFFSET
#define _op_but_assign 44+OFFSET
#define _expression_ID 45+OFFSET
#define _expression_var 46+OFFSET
#define _expression_call 47+OFFSET
#define NUM_NTERM _expression_call - OFFSET //non-term的数量
typedef enum{Stmtk,Expk} NodeKind;
typedef enum{Ifx,Repeatk,AssignK,Readk,Writek} StmtKind;
typedef enum{Opk,Constk,Idk} ExpKind;
typedef enum{Void,Integer,Boolean} ExpType;
#define MAXCHILDREN 3
typedef struct treeNode
{
struct treeNode* child;
struct treeNode* sibling;
int Type;
union {StmtKind stmt;ExpKind exp;} kind;
union {TokenType op;
int val;
char* name;} attr;
}TreeNode;
extern int TraceScan;
extern int TraceParse;
extern int TraceAnalyze;
extern int TraceCode;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?