2010-12-11 9 views
3

これは宿題に関する質問です。私は、Unixのコマンドラインオプションのための簡単なパーサを書こうと思います。
まず、BNFで文法を定義したいと思います。Unixコマンドラインオプションの文法

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; 

(「任意の文字」は任意の英数字です)。

意味がありますか?次の質問は、単一のハイフンで始まり、グループ化することができる "古い" Unixオプションを追加する方法です(例えば、ls -lht

+0

あなたは宿題としてそれにタグを付けるべきです。 – sje397

+0

宿題を追加しました。 –

+0

@khachik:彼はそれを除外していない、彼は最初の発生でそれを除外しているだけです。それは確かに最初の発生で現れるかもしれませんが。 –

答えて

1

与えられた文法はかなり曖昧です。これらが異なるオプションであるか、いくつかの引数を持つオプションであるかどうかは分かりません。 (「古い」UNIXに関する)あなたの2番目の質問については

、あなたは、文法に並べ替えの何かを別のルールを追加することができます。

option -> optionGroup | (anything that was there before); 
optionGroup -> '-', flags; 
flags -> flag | flag, flags; 
flag -> single letter; 
関連する問題