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

📄 share.h

📁 编译原理课程设计,语法分析.学校的课程设计,好象还有点用吧
💻 H
字号:
#ifndef SHAREFILE
#define SHAREFILE

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <fstream>
#include <iostream>
#include "Symboltable.h"
#include <Windows.h>

//记号类别定义
#define KEYWORD       0
#define DESIGNATOR    1
#define ASSIGN_OP     2
#define ADD_OP        3
#define MUL_OP        4
#define NUM           5
#define RELOP         6
#define NOMORE        -1
#define INVALIDETYPE  -1

struct KeyWord
{
	char cName[15];
	char cReturnName;
};

struct TOKEN
{
	int iType;  //记号类别,可以取上面定义的值
	double dProperty;    //记号属性
	unsigned int iPosition; //该记号所在的行数
}; 

//数据类型内部标识
#define INTEGER    0
#define REAL       1
#define INTARRAY   2
#define REALARRAY  3
#define BOOL       4
#define FUNCTION   5
#define PROC       6
//各数据类型的存储字节数
#define INTWIDTH  2
#define REALWIDTH 2

//变量起始地址
#define DATAADDRESS 0

//词法分析函数
//token用于返回下一记号的相关信息
//flag=0只是查看下一个记号,而不移动指针(下次读取是仍返回同样的记号)
//flag=1则移动指针
TOKEN accidence(ifstream &infile,int &irow,int flag);//词法分析器,返回单词
int Clearzhushi(ifstream &infile);//消除注释
char KeyWordSearch(char* ca);//查找关键字

//语法分析、语义分析处理函数
bool Program(); //语法分析主程序
void WriteError(char* strErr,int iLine); //记录错误,参数为错误信息,出错行号
bool IdentifierList();     //标识符列表
bool Declations();  //声明
bool Declation1(int *num); //H
bool Declation2(int iPlace,int *iType,int *iTypelen,int *iDomain,int *num);  //H'
bool Declation(int iPlace,int *num);  //G
bool SubprogramDeclarations(); //子程序声明
bool SubprogramDeclaration();//子程序声明
bool SubprogramHead(int *iPlace);
bool Arguments(int iPlace,int *num);//M   
bool Arguments1(int iPlace,int *num);//G'          
bool CompoundStatement(char *);   //复合语句
bool OptionalStatements(char*);
bool Statement(char*);
bool StatementList(char*);
bool Variable(int iPlace,char*);
bool Expression(int *iPlace,char *buffer); //S
bool Expression1(int *iPlace,char *buffer); //W
bool ExpressionList(int *iPlace,int * num,char *buffer); //U
bool SimpleExpression(int *iPlace,char *buffer);//V
bool Factor(int *iPlace,char *buffer); //Z
bool Factor1(int *iPlace,char*buffer); //X
bool Term(int *iPlace,char *buffer); //T
bool SimpleExpression1(int *iPlace,char *buffer);//Y
bool Type(int *iType,int *iTypelen,int *iDomain);  //获取类型
bool Type1(int *iType,int *iTypelen,int *iDomain); //获取类型 J
void WriteCode(char *cCode);  //写入三地址代码

//操作符号表
void SetTokenProperty(int iPointer,int iType,int iAddress,int iDomain);
int GetType(int iPointer);
int Insert(int iType); //插入指定类型的变量

//代码生成
void asmCode();
void getCodeAndTranslate();
void translateCode(int k,string t);
void dealIf(string s);
void dealGoto(string s);
void dealArray(string s);
void dealVar(string s);
void readNum();
void writeNum();
#endif

⌨️ 快捷键说明

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