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

📄 main.cpp

📁 SNL语言编译器源码 小语言的编译器C++实现 包括词法分析
💻 CPP
字号:
/****************************************************/
/* 文件 main.cpp									*/
/* 说明 类PASCAL语言编译器主程序					*/
/* 主题 编译器结构:原理和实例						*/	
/****************************************************/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"      /* 用到了该库中的isalnum,isalpha,isdigit函数 */
#include "math.h"       /* 用到了这个库里的取模运算 */
#include "iostream.h"


/* 头文件globals.h定义了全局类型与变量 */
#include "globals.h"

/*头文件compiler.h定义了编译类*/
#include "compiler.h"  

/*头文件func.h定义了静态函数类*/
#include "func.h"     //提供函数库的静态类
#include "userfun.h"  //提供用户函数库的静态类


 
/********************************************************/
/* 函数名 main											*/
/* 功  能 函数将编译程序中各个功能部分有机结合在一起,	*/
/*		  完成用户需要的编译工作,输出相关信息和结果		*/
/********************************************************/
char lineBuf[BUFLEN];
int linepos = 0;
int bufsize = 0;
int EOF_flag = FALSE;

int Tokennum=0;
int lineno=0;

int EchoSource=TRUE;
int TraceScan=TRUE; 
int Error=FALSE;


int  main( )

{

  FILE * source; //源文件的打开指针
  

  /*输入要编译的文件名*/
  char filename[120];

  /*目标代码文件名*/
  cout<<"input program names:"<<endl; 
  cin>>filename;  
  
  //char * root=userfun::getRoot(filename);
 

  /* 用只读方式打开源程序文件pgm,文件指针给source */
  source = fopen(filename,"r");

  if (source==NULL)
  { 
	  fprintf(stderr,"File %s not found\n",filename);
	  return 1;
  }

 compiler p;
  /* 调用词法分析函数,得到Token序列*/
  ChainNodeType * tokenlist=p.getTokenlist(source);
  cout<<"Lexical analysizing:"<<endl;
  cout<<"token list:"<<endl;
  userfun::printTokenlist(tokenlist);
  //userfun::ChainToFile(tokenlist,root);
  cout<<endl;
  getchar();
   getchar();
  /* 调用语法分析函数,得到语法树序列*/
  treeNode * progTree=p.getTree();
  userfun::printTree(progTree);

   getchar();
   getchar();
   SymbTable  **scope=p.getScope();
   userfun::PrintSymbTable(scope);
   getchar();
   getchar();
   userfun::printTree(progTree);

  return 0;
}
 






⌨️ 快捷键说明

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