关于Basic程序解释器及编译原理的简单化(1)--词法分析和代数式求值(6) longjmp(e_buf,1); /* return to save point */}
/* get a token */get_token(){ register char *temp;
token_type = 0;tok = 0; temp = token; if (*prog == '\0') { /* end of file */ *token = 0; tok = FINISHED; return (token_type = DELIMITER); } while (iswhite(*prog)) ++prog; /* skip over white space */
if (*prog == '\r') { /* CR LF */ ++prog;++prog; tok = EOL;*token = '\r'; token[1] = '\n';token[2] = 0; return (token_type = DELIMITER); } if (strchr("+-*^/%=;(),><",*prog)) { /* delimiter */ *temp = *prog; prog++; /* advance to next position */ temp++; *temp=0; return (token_type = DELIMITER); } if (*prog == '"') { /* quote string */ prog++; while (*prog!='"'&&*prog!='\r') *temp++=*prog++; if (*prog=='\r') serror(1); prog++;*temp=0; return (token_type = QUOTE);