main.cpp

来自「实现编译器的词法分析」· C++ 代码 · 共 50 行

CPP
50
字号
#include "Global.h"
#include "Symbol.h"
#include "Lexical.h"
#include "Parser.h"
	
int main()
{   

    
    Parser ParserInc;
    std::ifstream  inputfile;
	inputfile.open("text.txt");
	 Lexical LexicalInc(&inputfile);
	 

	
	while(LexicalInc.eof==0)
	{
	
	 switch(LexicalInc.nexttoken())
	  {
	  case ID :  std::cout<<"<ID,"<< LexicalInc.Symtable[ LexicalInc.value-1].lexptr<<">"<<std::endl; break;
	  case NUMBER : std::cout<<"<NUMBER,"<< LexicalInc.Symtable[ LexicalInc.value-1].lexptr<<">"<<std::endl; break;
	  case RELOP : std::cout<<"<RELOP,"<< LexicalInc.value<<">"<<std::endl; break;
	  case ADD_OP:std::cout<<"<ADD_OP,"<< (char)LexicalInc.value<<">"<<std::endl; break;
	  case MULT_OP:std::cout<<"<MULT_OP,"<< (char)LexicalInc.value<<">"<<std::endl; break;
	  case ASSIGN_OP :std::cout<<"<ASSIGN_OP, >"<<std::endl; break;
	  case CONST: std::cout<<"<CONST, >"<<std::endl; break;
	  case VAR: std::cout<<"<VAR, >"<<std::endl; break;
	  case PROCEDURE: std::cout<<"<PROCEDURE, >"<<std::endl; break;
	  case CALL: std::cout<<"<CALL, >"<<std::endl; break;
	  case BEGIN: std::cout<<"<BEGIN, >"<<std::endl; break;
	  case END: std::cout<<"<END, >"<<std::endl; break;
	  case DO: std::cout<<"<DO, >"<<std::endl; break;
	  case WHILE: std::cout<<"<WHILE, >"<<std::endl; break;
	  case IF: std::cout<<"<IF, >"<<std::endl; break;
	  case THEN: std::cout<<"<THEN, >"<<std::endl; break;
	  case ODD: std::cout<<"<ODD, >"<<std::endl; break;
	  case DECLAER: std::cout<<"<DECLAER, >"<<std::endl; break;
	  case PROEND : std::cout<<"<PROEND, >"<<std::endl; break;




	  }


	}
	return 0;
}

⌨️ 快捷键说明

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