📄 parser.h
字号:
// parser.h: interface for the parser class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PARSER_H__308F5BA0_B05C_4B56_95D2_B3B4E3643EA2__INCLUDED_)
#define AFX_PARSER_H__308F5BA0_B05C_4B56_95D2_B3B4E3643EA2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include"stdio.h"
#include"stdlib.h"
#include"iostream.h"
#include"string.h"
#include"token.h"
#include"scanner.h"
#include "fstream.h"
#include "ctype.h"
#define MAXCHILD 5
# define FILENAME2 "d:\\parserout09.txt"
typedef enum {Stmtk,Expk} Nodekind; //结点类型
typedef enum {Ifk,Repeatk,Assignk,Readk,Writek} Stmtkind; //关键字
typedef enum {Opk,Constk,Idk} Expkind;
typedef enum {Void,Integer,Boolean} Exptype;//类型检查
typedef struct treenode{
struct treenode *child[MAXCHILD];
struct treenode *sibling; //兄弟结点
int lineno;
Nodekind nodekind;
union{Stmtkind stmt;
Expkind exp;} kind;
union{TokenType op;
int val;
char *name;} attr;
Exptype checktype;
}Treenode;
class parser
{
public:
Treenode * factor();
Treenode * term();
Treenode * simple_exp();
Treenode * exp();
Treenode * write_stmt();
Treenode * read_stmt();
Treenode * assign_stmt();
Treenode * repeat_stmt(void);
Treenode * if_stmt(void);
Treenode * statement(void);
Treenode * stmt_sequence(void);
match(TokenType expected);
syntaxerror(char * message);
Treenode * parse(void);
printtree(Treenode * tree);
int indentno;
scanner ss;
token tok;
char * copystr(char *s);
Treenode * newStmtnode(Stmtkind kind);
Treenode * newExpnode(Expkind kind);
FILE * ftree;
parser();
virtual ~parser();
};
#endif // !defined(AFX_PARSER_H__308F5BA0_B05C_4B56_95D2_B3B4E3643EA2__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -