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

📄 vbs_tokens.l

📁 vb script子集解释器 Makefile.vb用于生成解释器的c代码 可执行程序需要自己写main函数
💻 L
字号:
%{#include "vbs_grammar.tab.h"#include <string>#define YYSTYPE string//#define YY_EXTRA_TYPE Cvbs_context*#define vbsHEADER_H#include "vbs_context.h"#define YY_USER_ACTION yyextra->nlastCol+=yyleng;yyextra->nlastLeng=yyleng;#define save_lval yyextra->szValue=yytext%}%option never-interactive%option stack%option prefix="vbs"%option reentrant%option yylineno%option debug%option noyywrap%option header-file="vbs_lex.h"%option case-insensitive%option extra-type="Cvbs_context*"%x COMMENT%x STR%x DBQ%x SUB_HEAD%x SUB_BODY_Sstring  \"[^\n"]+\"ws      [ \t]+alpha   [A-Za-z]dig     [0-9]name    ({alpha}|{dig}|\$)({alpha}|{dig}|[_.\-/$])*num1    [-+]?{dig}+\.?([eE][-+]?{dig}+)?num2    [-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)?ID	[a-z][a-z0-9_]*blank	[ \t]+%%":"		{ return COLON; }"="     	{ return EQ; }"!=" 		{ return NE; }"<>"		{ return NE; }"<"     	{ return LT; }"<="    	{ return LE; }">"     	{ return GT; }">="    	{ return GE; }"+"     	{ return PLUS; }"&"		{ return AMD;}"-"     	{ return MINUS; }"*"     	{ return MULT; }"AND"		{ return AND;}"XOR"		{ return XOR;}"OR"		{ return OR;}"/"     	{ return DIVIDE; }")"     	{ return RPAREN; }"("     	{ return LPAREN; }","  	  	{ return COMMA; }";"     	{ return SEMICOLON; }"IF"    	{ return IF; }"THEN"  	{ return THEN; }"ELSE"  	{ return ELSE; }"ELSEIF"	{ return ELSEIF;}"WHILE" 	{ return WHILE; }"WEND"		{ return WEND;}"LOOP"		{ return LOOP;}"UNTIL"		{ return UNTIL;}"EXIT"		{ return EXIT;}"SELECT"	{ return SELECT;}"CASE"		{ return CASE;}"END"		{ return END;}"DO"    	{ return DO; }"FOR"		{ return FOR;}"TO"		{ return TO;}"NEXT"		{ return NEXT;}"STEP"		{ return STEP;}"DIM"		{ return DIM; }"SUB"		{ yy_push_state(SUB_HEAD,yyscanner);return SUB;}"FUNCTION"	{ yy_push_state(SUB_HEAD,yyscanner);return FUNCTION;}"PUBLIC"	{ return PUBLIC;}"PRIVATE"	{ return PRIVATE;}"CALL"		{ return CALL;}"AS"		{ return AS; }"STRING"	{ return TYPE; }"NUMBER"	{ return TYPE; }"INTEGER"	{ return TYPE; }"PRINT"		{ return PRINT;}"EVAL"		{ return EVAL; }"TRUE"		{ return TRUE;}"FALSE"		{ return FALSE;}"LBOUND"	{ return LBOUND;}"UBOUND"	{ return UBOUND;}"CLNG"		{ return CLNG;}"DATE"		{ return DATE;}"TIME"		{ return TIME; }"GETSTRING"	{ return GETSTRING;}"INSTR"		{ return INSTR;}"CSTR"		{ return CSTR;}"LEN"		{ return LEN;}"INSTRREV"	{ return INSTRREV;}"JOIN"		{ return JOIN;}"RND"		{ return RND;}"RANDOMIZE"	{ return RANDOMIZE;}"YEAR"		{ return YEAR;}"MONTH"		{ return MONTH;}"DAY"		{ return DAY;}"WEEKDAY"	{ return WEEKDAY;}"HOUR"		{ return HOUR;}"MINUTE"	{ return MINUTE;}"SECOND"	{ return SECOND;}	"REM"		{yy_push_state(COMMENT,yyscanner);}"'"		{yy_push_state(COMMENT,yyscanner);}[ \t]+		{/* eat white space*/}" _\n"		{/* eat line continue */yyextra->nlastCol=1;}\n		{/* eat new line */yyextra->nlastCol=1;}{dig}+  	{save_lval; return NUMBER; }{ID}		{save_lval; if (yyextra->isSubName(yytext)) return NAME_SUB;return NAME; }"\""		{yy_push_state(STR,yyscanner);yyextra->strValue.clear();}<STR>"\"\""	{yyextra->strValue+="\"";}<STR>[^\"]*	{yyextra->strValue+= yytext; }<STR>"\""	{yy_pop_state(yyscanner);yyextra->szValue=yyextra->strValue.c_str();return STRING;}<COMMENT>" _\n" {/* process line continue  */yyextra->nlastCol=1;}<COMMENT>[^ \n]+	{/* eat comment */yyextra->nlastCol=1;}<COMMENT>\n	{yy_pop_state(yyscanner);yyextra->nlastCol=1;/*end of comment state*/ }<COMMENT>[ ]+	{ /* eat white space*/}<SUB_HEAD>{ID}          {save_lval; return NAME; }<SUB_HEAD>","          { return COMMA; }<SUB_HEAD>"("          { return LPAREN; }<SUB_HEAD>")"          { yy_pop_state(yyscanner);yy_push_state(SUB_BODY_S,yyscanner);return RPAREN; }<SUB_BODY_S>"END"{blank}"SUB"		{yy_pop_state(yyscanner);yyextra->szValue=yyextra->strValue.c_str(); return SUB_BODY;}	<SUB_BODY_S>"END"{blank}"FUNCTION"	{yy_pop_state(yyscanner);yyextra->szValue=yyextra->strValue.c_str();return FUNC_BODY;}<SUB_BODY_S>[^\n].*	{yyextra->strValue+= yytext;}<SUB_BODY_S>\n		{yyextra->nlastCol=1;yyextra->strValue+= yytext;}<*>.			{/*eat any other char*/}%%#ifndef yywrapyywrap() { return 1; }#endif

⌨️ 快捷键说明

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