编译原理课程设计_C--编译器_词法分析

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

%{

#include "stdlib.h"

#include "string.h"

#define HASHSIZE 256

#define GLOBAL 0

int lineno = 1;

%}

delim [ \t\n]

ws {delim}+

letter [A-Za-z]

digit [0-9]

id {letter}({letter}|{digit})*

number {digit}+(\.{digit}+)?(E[+\-]?(digit)+)?

string \"()*]\.|[^\"])*"

character '(\.|[^\'])'

comment (\#[^\n]*)|(\/\*(((\*)*[^\*\/]+(\/)*)*|(\*)*|(\/)*)\*\/)|(\/\/[^\n]*)

%%

"\n" {lineno++;}

{comment} {}

{ws} {}

"char" {return(CHAR);}

"else" {return(ELSE);}

"if" {return(IF);}

"int" {return(INT);}

"return" {return(RETURN);}

"void" {return(VOID);}

"while" {return(WHILE);}

"__stdcall" {return(__STDCALL);}

"__cdecl" {return(__CDECL);}

{id} {yylval.symType = makeSym( yytext ); return ID;}

{number} {yylval.symType = makeSym( yytext ); return NUM;}

{string} {yylval.symType = makeSym( yytext ); return STRING;}

{character} {yylval.symType = makeSym( yytext ); return CHARACTER;}

"<" {return LT;}

">" {return GT;}

"<=" {return LE;}

">=" {return GE;}

"==" {return EQ;}

"!=" {return NE;}

"{" {enterscope(); return '{';}

"}" {exitscope(); return '}';}

"(" {return '(';};

")" {return ')';};

"[" {return '[';};

"]" {return ']';};

"+" {return '+';};

"-" {return '-';};

"*" {return '*';};

"/" {return '/';};

"%" {return '%';};

";" {return ';';};

"=" {return '=';};

"," {return ',';};

%%

int yywrap()

{

return 1;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航