这是一个特定于 parboiled 解析器框架和一般 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 中定义非空格(一个或多个不是空格的字符)?
对于那些熟悉 Java parboiled 库的人,您如何实现定义非空白的规则?