⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mylexer.l

📁 扩展后的mini-pl0语法编译器
💻 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 + -