📄 mylexer.l
字号:
%{
/****************************************************************************
mylexer.l
ParserWizard generated Lex file.
Date: 2005年11月21日
****************************************************************************/
#include "myparser.h"
#include <iostream>
#include <string>
#include <stdlib.h>
%}
/////////////////////////////////////////////////////////////////////////////
// declarations section
%include {
// forward references
class myparser;
}
// lexical analyser name
%name mylexer
// class definition
{
// place any extra class members here
}
// constructor
{
// place any extra initialisation code here
}
// destructor
{
// place any extra cleanup code here
}
// place any declarations here
letter [_a-zA-Z]
digit [0-9]
white [\t\n\040]
number {digit}+
ID {letter}({letter}|{digit})*
%start COMMENT
%%
/////////////////////////////////////////////////////////////////////////////
// rules section
%{
// extract yylval for use later on in actions
YYSTYPE YYFAR& yylval = *(YYSTYPE YYFAR*)yyparserptr->yylvalptr;
%}
// place your Lex rules here
\{[^\}]+\} {}
//keywords
[Pp][Rr][Oo][Gg][Rr][Aa][Mm] { return PROGRAM; }
[Cc][Oo][Nn][Ss][Tt] { return CONST; }
[Tt][Yy][Pp][Ee] { return TYPE; }
[Aa][Rr][Rr][Aa][Yy] { return ARRAY; }
[Oo][Ff] { return OF; }
[Rr][Ee][Cc][Oo][Rr][Dd] { return RECORD; }
[Ee][Nn][Dd] { return END; }
[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] { return PROCEDURE; }
[Vv][Aa][Rr] { return VAR; }
[Ii][Ff] { return IF; }
[Ww][Hh][Ii][Ll][Ee] { return WHILE; }
[Tt][Hh][Ee][Nn] { return THEN; }
[Ee][Ll][Ss][Ee] { return ELSE; }
[Dd][Oo] { return DO; }
[Bb][Ee][Gg][Ii][Nn] { return BEG; }
[Bb][Oo][Oo][Ll][Ee][Aa][Nn] { return BOOLEAN; }
[Ii][Nn][Tt][Ee][Gg][Ee][Rr] { return INTEGER; }
[Rr][Ee][Aa][Dd] { return READ; }
[Ww][Rr][Ii][Tt][Ee] { return WRITE; }
[Oo][Rr] { return OR; }
[Dd][Ii][Vv] { return DIV; }
[Mm][Oo][Dd] { return MOD; }
[Aa][Nn][Dd] { return AND; }
[Nn][Oo][Tt] { return NOT; }
[Tt][Rr][Uu][Ee] { return TRUE;}
[Ff][Aa][Ll][Ss][Ee] { return FALSE;}
//operators
";" { return ';'; }
":" { return ':'; }
"," { return ','; }
":=" { return ASSIGN; }
".." { return DD; }
"(" { return '('; }
")" { return ')'; }
"[" { return '['; }
"]" { return ']'; }
"=" { return '='; }
"<" { return '<'; }
">" { return '>'; }
"<>" { return NE; }
"<=" { return LE; }
">=" { return GE; }
"+" { return '+'; }
"-" { return '-'; }
"*" { return '*'; }
"." { return '.'; }
{number} { yylval.Iv = atoi(yytext);return NUMBER; }
{ID} { strcpy(yylval.str,yytext); return ID; }
{white} {}
. {cout<<"ERROR "<<yytext<<endl;}
%%
/////////////////////////////////////////////////////////////////////////////
// programs section
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -