flex(词法分析器)正则表达式 - 重用定义

时间:2008-10-07 15:15:58

标签: regex flex-lexer lexical-analysis

我有这个有效的定义:

IDENTIFIER   [a-zA-Z][a-zA-Z0-9]*

我不想继续重复[a-zA-Z]和[0-9],所以我做了两个新的定义

DIGIT    [0-9]
VALID    [a-zA-Z]

如何重写IDENTIFIER规则以使用DIGIT和VALID定义?

我不知道怎么做“第二场”比赛,我被困在这里:

IDENTIFIER {VALID}[{VALID}{DIGIT}]* // This syntax is incorrect

感谢。

编辑:我正在使用的整个测试程序:http://pastebin.com/f5b64183f

2 个答案:

答案 0 :(得分:3)

看起来你真的想要:

IDENTIFIER {VALID}({VALID} | {DIGIT})*

[{VALID} {DIGIT}]解析为[[A-Za-z] [0-9]],这不是一个合法的构造。

答案 1 :(得分:-1)

我认为这样做但我无法测试。你有样本数据吗?

(?:[A-ZA-Z])+(?:[0-9])+