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

📄 parse.h

📁 PL编译器
💻 H
字号:
// Parse.h: interface for the CParse class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PARSE_H__5CAF52E3_CE9F_4B69_B246_269E6528B583__INCLUDED_)
#define AFX_PARSE_H__5CAF52E3_CE9F_4B69_B246_269E6528B583__INCLUDED_

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

#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include "Error.h"


//定义语法分析类
class CParse  
{
public:
	CParse();
	virtual ~CParse();
	int match(int temp);
	void advance();
	CString returnError();

	void PASCALparse();

	//<program> → <declaration_list>BEGIN<statement_list>END.
	void program();

	//<declaration_list> → VAR<variable_list>:INTEGER; |ε
	void declaration_list();

	//<varible_list> →ID A
	void varible_list();

	//A →  ,ID A |ε
	void A();

	//<statement_list> → <statement>B
	void statement_list();

	//B →;<statement_list> |ε
	void B();

	//<statement> → <assignment_stat> | <conditional_stat> | <while_stat> | <compound_stat>
	void statement();

	//<assignment_stat> → ID:=<arithmetic_expr>
	void assignment_stat();

	//<conditional_stat> → IF<relational_expr>THEN<statement>ELSE<statement>
	void conditional_stat();

	//<while_stat> → WHILE<relational_expr>DO<statement>
	void while_stat();

	//<compound_stat> → BEGIN<statement_list>END
	void compound_stat();

	//<arithmetic_expr> → <item>C
	void arithmetic_expr();

	//C → +<item> | -<item> |ε
	void C();

	//<item> → <factor>D
	void item();

	//D → *<factor> | /<factor> |ε
	void D();

	//<factor> → ID | NUM | (<arithmetic_expr>)
	void factor();

	//<relational_expr> → <arithmetic_expr><<arithmetic_expr>
	//<relational_expr> → <arithmetic_expr><=<arithmetic_expr>
	//<relational_expr> → <arithmetic_expr>==<arithmetic_expr>
	//<relational_expr> → <arithmetic_expr>><arithmetic_expr>
	//<relational_expr> → <arithmetic_expr>>=<arithmetic_expr>
	//<relational_expr> → <arithmetic_expr><><arithmetic_expr>
	void relational_expr();


private:
	char tokenSign[40];		//保存单词符号
	char tokenValue[40];	//保存单词的值
	CError mErr;
	CString mStr[20];
	int flag;

};

#endif // !defined(AFX_PARSE_H__5CAF52E3_CE9F_4B69_B246_269E6528B583__INCLUDED_)

⌨️ 快捷键说明

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