(f)lex你能在一个州有多个表达吗?

时间:2011-02-23 17:04:55

标签: state lex expression flex-lexer

是否有可能在一个相似的状态中有多个表达式?我希望将几个表达式组合在一起,让自己的生活变得轻松。我想在下面做类似的事情,但它不起作用,只识别第一个expr,虽然它确实匹配expr,但它并没有使用yytext保存到数组中。我猜我做错了所以任何帮助都会受到赞赏。谢谢

<some_state>"Milk;" |
"Honey;"    |
"Cinnamon;" |
"Cardamon;" |
"Rum;"      |
"Brandy;"   |
"Whiskey;"  |
"Aquavit;"  |
"Kahula;"   { printf("Example"); array[i].addition = yytext;BEGIN(amount_state);}

1 个答案:

答案 0 :(得分:0)

如果允许flex,您可以使用如下所示的开始条件范围:

<some_state>{
"Milk;"         |
"Honey;"        |
...             |
"Kahula;"       { printf("Example"); ... }
}

如果仅允许AT&T lex,遗憾的是这可能无效......