📄 semantic.h
字号:
#pragma once
#include "common.h"
class Semantic
{
public:
Semantic(void);
~Semantic(void);
};
typedef char cstr[ WORD_LEN ];
enum OperateType { PLUS, MINUS, MUL, DIV };
typedef struct operate {
OperateType operType;
} op_rec;
enum ExprType { IDEXPR, LITERALEXPR, TEMPEXPR, CALLEXPR };
typedef struct expr_strc {
enum ExprType kind;
union {
cstr name; // for IDEXPR, TEMPEXPR, CALLEXPR
int val; // for LITERALEXPR
};
} expr_rec;
/*
typedef struct func_strc {
cstr name;
int param_count;
} func_rec; */
enum Level { GLOBAL, LOCAL };
//---------------------------------------------------------
char * get_temp(void);
void check_id(cstr );
void check_intliteral(int );
void check_func_def(cstr);
void start(void);
void finish(void);
void assign(expr_rec target, expr_rec source);
op_rec process_op(void);
expr_rec process_id(void);
expr_rec process_literal(void);
void gen_func_name(expr_rec & fdef); // new added
void process_func_call(void); // new added
void process_param(); // new added
void process_argu(); // new added
expr_rec gen_infix(expr_rec & e1, op_rec & op, expr_rec & e2);
void read_id(expr_rec & in_var);
void write_expr(expr_rec & out_expr);
void generate(char * op, char * A, char * B, char * C);
void semantic_error(char *);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -