これは、パーボイルド パーサー フレームワークと一般的な BNF/PEG の両方に固有の問題です。
かなり単純な正規表現があるとしましょう
^\\s*([A-Za-z_][A-Za-z_0-9]*)\\s*=\\s*(\\S+)\\s*$
の擬似EBNFを表します
<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 で非空白 (空白ではない 1 つ以上の文字) をどのように定義しますか?
Java のパーボイルド ライブラリーに精通している人にとって、非空白を定義するルールをどのように実装できるでしょうか?