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

📄 parse.h

📁 snl语言是一个简单的具有嵌套过程定义的过程式语言
💻 H
字号:
// parse.h: interface for the Cparse class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PARSE_H__9F8A343F_5E9E_40DB_A599_38AA6FE71360__INCLUDED_)
#define AFX_PARSE_H__9F8A343F_5E9E_40DB_A599_38AA6FE71360__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "global.h"

class Cparse : public Cglobal  
{
/*********************************/
public:
 TokenType token;

 char * temp_name;

 int line0;
static int  indentno ;
 int  fp_num;    /*输出时记录token个数的变量*/

	Cparse();
	virtual ~Cparse();
	TreeNode * parse(void);

public:
	Cglobal::TreeNode * program(void);  

	Cglobal::TreeNode * programHead(void);

	Cglobal::TreeNode * declarePart(void);

	Cglobal::TreeNode * typeDec(void);

	Cglobal::TreeNode * typeDeclaration(void);

	Cglobal::TreeNode * typeDecList(void);

	Cglobal::TreeNode * typeDecMore(void);

    void  typeId(TreeNode * t);

	void  typeName(TreeNode * t);

	void  baseType(TreeNode * t);

	void  structureType(TreeNode * t);

	void  arrayType(TreeNode * t);

	void  recType(TreeNode * t);

	Cglobal::TreeNode * fieldDecList(void);
 
	Cglobal::TreeNode * fieldDecMore(void);

	void  idList(TreeNode * t);

	void  idMore(TreeNode * t);

	Cglobal::TreeNode * varDec(void);

	Cglobal::TreeNode * varDeclaration(void);

	Cglobal::TreeNode * varDecList(void);

	Cglobal::TreeNode * varDecMore(void);

	void  varIdList(TreeNode * t);

	void  varIdMore(TreeNode * t);

	Cglobal::TreeNode * procDec(void);

	Cglobal::TreeNode * procDeclaration(void);

	void  paramList(TreeNode * t);

	Cglobal::TreeNode * paramDecList(void);

	Cglobal::TreeNode * param(void);

	Cglobal::TreeNode * paramMore(void);

	void  formList(TreeNode * t);

	void  fidMore(TreeNode * t);

	Cglobal::TreeNode * procDecPart(void);

	Cglobal::TreeNode * procBody(void);

    Cglobal::TreeNode * programBody(void);

	Cglobal::TreeNode * stmList(void);

	Cglobal::TreeNode * stmMore(void);

	Cglobal::TreeNode * stm(void);

	Cglobal::TreeNode * assCall(void);

	Cglobal::TreeNode * assignmentRest(void);	

	Cglobal::TreeNode * conditionalStm(void);

	Cglobal::TreeNode * loopStm(void);

	Cglobal::TreeNode * inputStm(void);		

	Cglobal::TreeNode * outputStm(void);	

	Cglobal::TreeNode * returnStm(void);

	Cglobal::TreeNode * callStmRest(void);

 Cglobal::TreeNode * actParamList(void);

 Cglobal::TreeNode * actParamMore(void);

 Cglobal::TreeNode * exp(void);			/* 处理表达式函数 */

 Cglobal::TreeNode * simple_exp(void);		/* 处理简单表达式函数 */

 Cglobal::TreeNode * term(void);			/* 处理项函数 */

 Cglobal::TreeNode * factor(void);			/* 处理因子函数 */

 Cglobal::TreeNode * variable(void);

 void variMore(TreeNode * t);

 Cglobal::TreeNode * fieldvar(void);

 void fieldvarMore(TreeNode * t );

  void syntaxError(char * message);

 void match(LexType expected);

 /*******************************/

 TreeNode * newTypeNode();

 TreeNode * newVarNode();

 TreeNode * newRootNode(void);

TreeNode * newPheadNode(void);

TreeNode * newDecANode(NodeKind kind);

TreeNode * newDecNode(void);

TreeNode * newProcNode(void);

TreeNode * newStmlNode(void);

TreeNode * newStmtNode(StmtKind kind);

TreeNode * newExpNode(ExpKind kind);


char * copyString(char * s);

void  ReadNextToken(TokenType *p);

void  printTree(TreeNode  *tree);

void printSpaces(void);

void printTab(int tabnum);

 
};

#endif // !defined(AFX_PARSE_H__9F8A343F_5E9E_40DB_A599_38AA6FE71360__INCLUDED_)

⌨️ 快捷键说明

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