用于生成AWK扫描仪的FLEX - 识别变量

时间:2012-09-24 14:44:51

标签: c regex awk flex-lexer

我正在尝试使用(F)Lex分析为AWK源代码构建扫描程序。我已经能够识别AWK keyworkds,注释,字符串文字和数字但是我仍然坚持如何生成匹配变量实例名称的正则表达式,因为它们非常动态。

有人可以帮我开发一个匹配AWK变量的正则表达式。 http://pubs.opengroup.org/onlinepubs/009695399/utilities/awk.html提供了AWK语言的定义。

变量必须以字母开头,但可以是字母数字而不考虑大小写。可以使用的唯一特殊字符是下划线(“_”)。我很抱歉我对REGEX不太熟悉,更不用说FLEX的正则表达式了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

[a-zA-Z_][a-zA-Z_0-9]*

开始使用字母或下划线,然后是零个或多个字母数字或下划线。

特殊情况是字段,前缀为$

$0
$1

以及

$NF
$i

你必须决定如何处理这些问题。