Mic*_*ael 6 grammar parsing bnf
这是一道作业题。我想为 Unix 命令行选项编写一个简单的解析器。
首先,我想用 BNF 定义一个语法。
Options = Option | Options, space, Option;
Option = OptionName | OptionName, OptionArguments;
OptionName = '--', any character excluding '-' | OptionName, any character;
OptionArguments = OptionArgument | OptionArguments, space, OptionArgument;
OptionArgument = any character excluding '-' | OptionArgument, any character;
Run Code Online (Sandbox Code Playgroud)
(这里的“任何字符”是任何字母数字字符)。
是否有意义 ?下一个问题是如何添加“旧”Unix 选项,这些选项以单个连字符开头并且可以组合在一起(例如ls -lht)
请注意,给定的语法相当模糊 - 例如,如果您连续有几个单词,您将不知道这些是不同的选项还是带有某些参数的选项。
至于你的第二个问题(关于“旧”unix),你可以在语法中添加另一个规则,类似于:
option -> optionGroup | (anything that was there before);
optionGroup -> '-', flags;
flags -> flag | flag, flags;
flag -> single letter;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |