我在flex中定义了一些正则表达式和规则。现在我想编写一个执行以下操作的正则表达式:如果输入与我定义的任何规则都不匹配,我只想简单地打印出该输入。你可能会认为,由于它没有匹配任何规则,它会自动打印出来,但事实并非如此。考虑我的例子,我定义了以下正则表达式:
[a-zA-Z_]+[a-zA-Z0-9_]* printf("%d tIDENT (%s)\n",lineNum,yytext);
这条规则定义了一个标识符,一个标识符可以以下划线或字母开头,它是字母、数字和下划线的组合。
[0-9]+ printf("%d tPOSINT (%s)\n",lineNum,yytext,yytext);
此规则识别正整数。
假设这些是我唯一的规则,输入是2a3
. 这不是标识符,也不是整数。但我的输出采用2
整数,然后a3
作为标识符。但2a3
不符合任何规则,我想按原样打印出来。我怎样才能做到这一点?