📄 vbs_tokens.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 + -