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

📄 parser.h

📁 用C++语言在VC6.0环境下编写的小型c语言编译器
💻 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 + -