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

📄 lexer.l

📁 6个不同的词法语法分析程序源代码
💻 L
字号:

%{
#include "globals.h"
#include "util.h"
#include "scan.h"
/* lexeme of identifier or reserved word */
char tokenString[MAXTOKENLEN+1];
char lookAhead[MAXTOKENLEN+1];
%}

digit       [0-9]
float       {int}\.({digit}+)?([eE]{int})?
int         {digit}+
char        '.'
letter      [_a-zA-Z]
identifier  {letter}({letter}|{digit})*
newline     \n
whitespace  [ \t]+

%%

"if"            {return IF;}
"else"          {return ELSE;}
"while"         {return WHILE;}
"do"            {return DO;}
"break"         {return BREAK;}
"continue"      {return CONTINUE;}
"for"           {return FOR;}
"main"          {return MAIN;}
"goto"          {return GOTO;}
"int"           {return RINT;}
"float"         {return RFLOAT;}
"char"          {return RCHAR;}
"=="            {return EQ;}
"="             {return ASSIGN;}
"!="            {return NE;}
"<="            {return LE;}
">="            {return ME;}
"<"             {return LT;}
">"             {return MT;}
"+"             {return PLUS;}
"-"             {return MINUS;}
"*"             {return TIMES;}
"/"             {return OVER;}
"&&"            {return AND;}
"||"            {return OR;}
"!"             {return NOT;}
"("             {return LP;}
")"             {return RP;}
"["             {return LS;}
"]"             {return RS;}
"{"             {return LB;}
"}"             {return RB;}
";"             {return SEMI;}
","             {return COMMA;}
{int}           {return INT;}
{float}         {return FLOAT;}
{char}          {return CHAR;}
{identifier}    {return ID;}
{newline}       {lineno++;}
{whitespace}    {/* skip whitespace */}

%%

TokenType getToken(void)
{ 
  static int firstTime = TRUE;
  TokenType currentToken;
  strcpy(tokenString,lookAhead);
  if (firstTime)
  { firstTime = FALSE;
    lineno++;
    yyin = source;
    yyout = listing;
  }
  currentToken = yylex();
  strncpy(lookAhead,yytext,MAXTOKENLEN);
  if (TraceScan) {
    fprintf(listing,"\t%d: ",lineno);
    printToken(currentToken,lookAhead);
  }
  return currentToken;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -