これはparboiledパーサフレームワークとBNF/PEGの両方に固有の質問です。EBNF/parboiled:regexpをPEGに変換する方法は?
のは、私はあなたが(空白ではない1つまたは複数の文字)空白以外を定義する方法を
<line> ::= <ws>? <identifier> <ws>? '=' <nonwhitespace> <ws>?
<ws> ::= (' ' | '\t' | {other whitespace characters})+
<identifier> ::= <identifier-head> <identifier-tail>
<identifier-head> ::= <letter> | '_'
<identifier-tail> ::= (<letter> | <digit> | '_')*
<letter> ::= ('A'..'Z') | ('a'..'z')
<digit> ::= '0'..'9'
<nonwhitespace> ::= ___________
の擬似EBNFを表し、かなり単純な正規表現
^\\s*([A-Za-z_][A-Za-z_0-9]*)\\s*=\\s*(\\S+)\\s*$
を持っているとしましょうEBNFで?
Java parboiledライブラリに精通している人には、nonwhitespaceを定義するルールをどのように実装できますか?
待ち、以下のとおりです。あなたは、たとえば 空白以外の空白()ルールと一致していない任意の文字として定義されますので、これは、
TestNot
とANY
ルールを使用して行うことができゆでて反復量限定子?私が文法を読むことができるところでは、ただ一つの手紙などがあるかもしれません。 – fge
'identifier-tail'を参照してください。 –
ええと、私はEBNF文法でそれを読むようにしていました。 。 – fge