令牌必须在行首开始

问题描述 投票:2回答:1

所以我在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

它不应该工作

token lex
1个回答
0
投票

您可以在[f] lex模式的开头放置^,这将导致该模式仅在输入的开头或紧跟换行符后才匹配。

请参见the Flex manual,以获取正则表达式语法的完整列表。 (这不是一个很长的文档。)

© www.soinside.com 2019 - 2024. All rights reserved.