|
关于Basic程序解释器及编译原理的简单化(2)---C++封装好的Basic解释器(1)
这是CMake的源代码.主要负责词汇的提取 你可以调用它的CMake::get_token(),返回个CToken的类. ///////////////////////////////////////////////////// // Make.h /////////////////////////////////////////////////// enum token_types{DELIMITER,VARIABLE,NUMBER,COMMAND, STRING,QUOTE,FINISHED,NONE,ENTER}; // 标记类型集合
#define TOKEN_MAX 80 #define STRDELIMITER "+-*^/=;(),><" // 符号集合 #define DIM 11 // Dim #define AS 12 // As #define INTEGER 13 // Integer #define PRINT 14 // Print class CToken { public: char token[TOKEN_MAX]; int token_type; int tok; }; class CMake { public: CMake(char *Prog,int Proglength); virtual ~CMake(); public: char *prog; int proglength; int isdelim(char c); // 如果是运算符号返回1,不是则返回0 int iswhite(char c); // 是空格返回1,不是则返回0 int look_up(char *c); // 返回COMMAND类型,c是COMMAND字符串的指针 CToken get_token(void); // 得到标记 int findchar(char *str,char ch); // 从str里找到ch,返回其在str里的引索;如果str里没有ch,则返回-1 }; ///////////////////////////////////////////////////////////////////// // Make.cpp: implementation of the CMake class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Make.h" ////////////////////////////////////////////////////////////////////// // ConstrUCtion/Destruction ////////////////////////////////////////////////////////////////////// CMake::CMake(char *Prog,int Proglength) { proglength=Proglength; prog=new char[Proglength+1];
|