《编译原理课程设计》课程报告题目C语言词法分析器和C- AUTO, BREAK, CASE,CHAR,CONST,CONTINUE,DEFAULT,DO,DOUBLE,ELSE,ENUM,EXTERN,FLOAT,FOR,GOTO,IF,INT,LONG,REGISTER,RETURN,SHORT,SIGNED,SIZEOF,STATIC,STRUCT,SWITCH,TYPEDEF,UNION,UNSIGNED,VOID,VOLATILE,WHILE, +-*/++--+=-=*=<<=>>===!==;,()[]{}/**/:=(newline|blank|ment)+ digit=0|..|9 nat=digit+ signedNat=(+|-)?nat NUM=signedNat(“.”nat)? letter=a|..|z|A|..|ZID=letter(letter|digit|“_”)+CHAR='other+'STRING=“other+” char constcontinuedefaultdo double elseenumextern floatfor gotoifint long redister returnshort signed sizeof staticstructswitchtypedef union unsigned voidvolatilewhile特殊符号+-*/++--+=-=*=<<=>>===!==;,()[]{}/**/:文件结束、错误EOFERROR其它tokenNUMIDCHARACTERSTRINGtypedefenum { //错误、结束 ENDFILE,ERROR, //保留字 AUTO,BREAK,CASE,CHAR,CONST,CONTINUE,DEFAULT,DO,DOUBLE,ELSE, ENUM,EXTERN,FLOAT,FOR,GOTO,IF,INT,LONG,REGISTER,RETURN, SHORT,SIGNED,SIZEOF,STATIC,STRUCT,SWITCH,TYPEDEF,UNION, UNSIGNED,VOID,VOLATILE,WHILE, //其他token ID,NUM,CHARACTER,STRING, //特殊符号//+、-、*、/、++、--、+=、-=、*=、<、<=、>、>=、==、!=、=、;、,、(、)、[、]、//{、}、/*、*/、: PLUS,MINUS,TIMES,OVER,SELFPLUS,SELFMINUS,PLUSASSIGN, MINUSASSIGN,TIMESASSIGN,LT,LEQ,GT,GEQ,EQ,NEQ,ASSIGN, MA,LPAREN,MINUSASSIGN,TIMESASSIGN,LT,LEQ,GT, GEQ,EQ,NEQ,ASSIGN,MA,LPAREN,RPAREN,LBRACKET,RBRACKET, LCBRACKET,RCBRACKET,LCOMMENT,RCOMMENT,COLON}TokenType;,一共分为5个状态,在开始状态1时,如果输入的字符为/,则 进入状态2,此时有可能进入注释状态,如果在状态2时,输入的字符为*,则进入注释状态,状态将转到3,如果在状态3时,输入的字符为*,则有可能结束注释状态,此时状态将转到状态4,如果在状态4时输入的字符为/,则注释状态结束,状态转移到结束 状态。,一共分为10个状态:START、INNUM、INNUM1、INNUM2、INID、PARE、INOPERATE、INSTRING、INCHAR、DONE。状态START表示开始状态,状态INNUM,INNUM1,INNUM2表示数字类型(NUM)Token的状态,状态INID表示标示符(ID)类型Token的状态,状态INOPERATE表示算数运算符型Token的状态,PARE表示比较运算符型Token的状态,INSTRING表示字符串(STRING)类型Token的状态,INCHAR表示字符(CHARACTER)类型Token的状态,状态DONE表示接收状态。在开始状态START时如果输
c语言词法分析器和c语言语法分析器编译原理课程设计报告书 来自淘豆网www.taodocs.com转载请标明出处.