我正在为 gawk 脚本编写一个弹性解析器。我在区分正斜杠 (/) 字符的用途时遇到了问题。
显然,单个 / 将是除法运算符,但两个斜杠既可以是正则表达式也可以是除法。现在,它解析
int((r-1)/3)*3+int((c-1)/3)+1
因为有正则表达式
/3)*3+int((c-1)/
而不是预期的分裂行动。如何让 flex 将其识别为数学表达式?
现在,这是我在 gawk 中识别正则表达式的 flex 正则表达式:
EXT_REG_EXP "\/"("\\\/"|[^\/\n])*"\/"
并且除法运算符应该被我的运算符列表捕获:
OPERATOR "+"|"-"|"*"|"/"|"%"|"^"|"!"|">"|"<"|"|"|"?"|":"|"~"|"$"|"="
但是由于 flex 正则表达式是贪婪的,我猜它会将两个除法视为正则表达式。