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

📄 lexer.l

📁 模拟器提供了一个简单易用的平台
💻 L
字号:
/* * File: lexer.l * Author: Suman Banerjee <suman@cs.umd.edu> * Date: July 31, 2001 * Terms: GPL * * myns simulator */%{#include <agent.h>#include <constants.h>#include "parser-event.h"#include "parser.h"int yylineno = 1;bool set_comment = false;bool filename_in_progress = false;#define MAX_FILENAME	256int filename_length = 0;char filename [MAX_FILENAME];bool is_comment_or_filename (char *txt);extern int yyerror;%}AGENT "agent"AT "at"ATTACH "attach"BEACON "beacon"BSE "bse"BURSTSIZE "burstsize"COMMENT "#"CONSTANT "constant"COOP "coop"EDGE "edge"EXPONENTIAL "exponential"FINISH "finish"FILENAME_DELIMIT "'"GAP "gap"NODE "node"NODECOUNT "nodecount"ORACLE "oracle"PRINT "print"ROUTING "routing"SET "set"SOURCE "source"START "start"STOP "stop"SIMULATOR "simulator"MC "mc"QUERY "query"RP "rp"SEMICOLON ";"TS "ts"UNIFORM "uniform"NUMBER_INT ([0-9]+)NUMBER_FLOAT ([0-9]*\.[0-9]+)NAME [a-zA-Z_][-a-zA-Z0-9_.]*%%{COMMENT} { set_comment = true; }{FILENAME_DELIMIT} {   if (! set_comment) {    if (filename_in_progress) {      filename_in_progress = false;      memcpy((void*)yylval.strval,(void*)filename,filename_length);      return TOK_FILENAME;    }    else {      filename_length = 0;      filename_in_progress = true;    }  }}{SEMICOLON} { if (! is_comment_or_filename(yytext)) return TOK_SEMICOLON;}{NODE} { if ( ! is_comment_or_filename(yytext)) return TOK_NODE; }{ATTACH} { if (! is_comment_or_filename(yytext)) return TOK_ATTACH; }{AGENT} { if (! is_comment_or_filename(yytext)) return TOK_AGENT; }{RP} { if (! is_comment_or_filename(yytext)) return TOK_RP; }{MC} { if (! is_comment_or_filename(yytext)) return TOK_MC; }{BSE} { if (! is_comment_or_filename(yytext)) return TOK_BSE; }{BEACON} { if (! is_comment_or_filename(yytext)) return TOK_BEACON; }{QUERY} { if (! is_comment_or_filename(yytext)) return TOK_QUERY; }{CONSTANT} { if (! is_comment_or_filename(yytext)) return TOK_CONSTANT; }{UNIFORM} { if (! is_comment_or_filename(yytext)) return TOK_UNIFORM; }{EXPONENTIAL} { if (! is_comment_or_filename(yytext)) return TOK_EXPONENTIAL; }{BURSTSIZE} { if (! is_comment_or_filename(yytext)) return TOK_BURSTSIZE; }{COOP} { if (! is_comment_or_filename(yytext)) return TOK_COOP; }{EDGE} { if (! is_comment_or_filename(yytext)) return TOK_EDGE; }{GAP} { if (! is_comment_or_filename(yytext)) return TOK_GAP; }{SET} {if (! is_comment_or_filename(yytext)) return TOK_SET; }{START} {if (! is_comment_or_filename(yytext)) return TOK_START; }{STOP} {if (! is_comment_or_filename(yytext)) return TOK_STOP; }{SOURCE} {if (! is_comment_or_filename(yytext)) return TOK_SOURCE; }{FINISH} {if (! is_comment_or_filename(yytext)) return TOK_FINISH; }{PRINT} {if (! is_comment_or_filename(yytext)) return TOK_PRINT; }{SIMULATOR} {if (! is_comment_or_filename(yytext)) return TOK_SIMULATOR; }{NODECOUNT} {if (! is_comment_or_filename(yytext)) return TOK_NODECOUNT; }{AT} {if (! is_comment_or_filename(yytext)) return TOK_AT; }{ROUTING} {if (! is_comment_or_filename(yytext)) return TOK_ROUTING; }{ORACLE} {if (! is_comment_or_filename(yytext)) return TOK_ORACLE; }{TS} {if (! is_comment_or_filename(yytext)) return TOK_TS; }{NUMBER_INT} { if (! is_comment_or_filename(yytext)) {		 yylval.ival = atoi(yytext); return TOK_NUMBER_INT;		}	     }{NUMBER_FLOAT} { if (! is_comment_or_filename(yytext)) {		   yylval.dval = atof(yytext); return TOK_NUMBER_FLOAT;		 }	       }{NAME} { if (! is_comment_or_filename(yytext)) {		   strcpy(yylval.strval,yytext); return TOK_NAME;		 }	       }[ \t]+ {};[\n] {  yylineno ++;   set_comment = false;  if (filename_in_progress) {    printf ("[Line %d] Missing filename end-quote\n", yylineno);    exit(-1);  }}. {if (! is_comment_or_filename(yytext)) return TOK_JUNK; }%%bool is_comment_or_filename (char * txt) {  if (set_comment == true)    return true;  if (filename_in_progress) {    int new_filename_length = filename_length + strlen(txt);    if (new_filename_length > MAX_FILENAME) {      printf ("[Line %d] filename too long\n", yylineno);      exit(-1);    }    strcpy(&(filename[filename_length]),txt);    filename_length = new_filename_length;    return true;  }  return false;}

⌨️ 快捷键说明

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