【发布时间】:2015-03-12 12:09:05
【问题描述】:
我正在编写一个程序,它允许命令(基本上是一个直到换行符的字符串)包含多个以空格分隔的参数。
Like: arg1 arg2 arg3 arg4 (\n)
我可以使用正则表达式本身来实现这一点,如下所示:
arg1[ \t]+ {return T_ARG1;}
arg2[ \t]+ {return T_ARG2;}
arg3[ \t]+ {return T_ARG3;}
arg4[ \t]+ {return T_ARG4;}
但我不确定这样做是不是最好的方法? 您能否在 Flex 中提出一种通用的方法?
注意:我还允许通过忽略 [\\n] 模式来跨多行键入命令。
【问题讨论】:
-
参数真的是关键字吗?还是它们是任意空格分隔的单词?换句话说,您是在尝试以任意顺序识别一组固定单词,还是按照输入顺序创建参数向量?
-
是的,我正在尝试以某种顺序识别一组固定单词。
-
我正在尝试使用 flex 和 bison 创建一个命令(如 linux 命令)解释器。顺序为:arg1
arg2 arg3 arg4 注意: 表示最少一个空格。
标签: regex compiler-construction bison flex-lexer