?? mylexer.l
字號:
%{
/****************************************************************************
test.l
ParserWizard generated Lex file.
Date: 2007年11月7日
****************************************************************************/
#include "util.h"
char tokenString[40+1];
void printToken(TokenType, const char*);
TokenType currentToken;
#define ID 257
#define NUM 258
#define INT 259
#define VOID 260
#define IF 261
#define ELSE 262
#define WHILE 263
#define ASSIGN 264
#define COMMA 265
#define SEMI 266
#define LMPAREN 267
#define RMPAREN 268
#define LPAREN 269
#define RPAREN 270
#define LLPAREN 271
#define RLPAREN 272
#define LE 273
#define LT 274
#define GT 275
#define GE 276
#define EQ 277
#define NE 278
#define PLUS 279
#define MINUS 280
#define TIME 281
#define DEVISION 282
#define RETURN 283
%}
/////////////////////////////////////////////////////////////////////////////
// declarations section
// place any declarations here
letter [A-Za-z]
digit [0-9]
delim [ \t]+
ID {letter}+
NUM {digit}+
blank {delim}+
comment (\#[^\n]*)|(\/\*(((\*)*[^\*\/]+(\/)*)*|(\*)*|(\/)*)\*\/)|(\/\/[^\n]*)
//comment "/*"[.*|/n]"*/"
%%
/////////////////////////////////////////////////////////////////////////////
// rules section
// place your Lex rules here
"\n" {lineno++;}
"if" {currentToken = IF; return IF;;}
"else" {currentToken = ELSE; return ELSE;}
"int" {return INT;}
"return" {return RETURN;}
"void" {return VOID;}
"while" {return WHILE;}
{ID} {return ID;}
{NUM} {return NUM;}
"<" {return LT;}
">" {return GT;}
"<=" {return LE;}
">=" {return GE;}
"==" {return EQ;}
"!=" {return NE;}
";" {return SEMI;}
"," {return COMMA;}
"(" {return LPAREN;}
")" {return RPAREN;}
"[" {return LMPAREN;}
"]" {return RMPAREN;}
"{" {return LLPAREN;}
"}" {return RLPAREN;}
"+" {return PLUS;}
"-" {return MINUS;}
"*" {return TIME;}
"=" {return ASSIGN;}
%%
TokenType getToken(void)
{ static int firstTime = TRUE;
TokenType currentToken;
if (firstTime)
{ firstTime = FALSE;
lineno++;
yyin = source;
yyout = listing;
}
currentToken = yylex();
strncpy(tokenString,yytext,40);
if (TraceScan) {
fprintf(listing,"\t%d: ",lineno);
printToken(currentToken,tokenString);
}
return currentToken;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -