所以我在lex文件中得到了这些标记:
\$\$.* ; /* comment */
\$(.|\n)*\$ ; /* comment */
">=" return GE;
"<=" return LE;
":=" return AT;
"~=" return NEQ;
"if" return IF;
"else" return ELSE;
"then" return THEN;
"elif" return ELIF;
"fi" return FI;
"for" return FOR;
"until" return UNTIL;
"step" return STEP;
"do" return DO;
"done" return DONE;
"repeat" return REP;
"stop" return STOP;
"return" return RET;
"program" return PROG;
"module" return MOD;
"start" return ST;
"end" return END;
"void" return VD;
"const" return CT;
"number" return NB;
"array" return ARR;
"string" return SG;
"function" return FC;
"public" return PB;
"forward" return FW;
而且我想知道是否只有在行首开始时才有使令牌匹配的方法。例如,如果在我的程序中我这样写:
start
它应该工作,但如果我这样做:
start
或
program start
它不应该工作
您可以在[f] lex模式的开头放置^
,这将导致该模式仅在输入的开头或紧跟换行符后才匹配。
请参见the Flex manual,以获取正则表达式语法的完整列表。 (这不是一个很长的文档。)