文法を解析する際に、正規表現として使用できる文法と一致させるためにRegExを使用するか、現在のパーサ設計を排他的に使用する必要がありますか?したがって、文法(例えば再帰下降構文解析又はアドホックパーサーなど)字句解析のいくつかのタイプを使用して一致する必要があるであろうインタプリタやコンパイラのパーサで正規表現を使用する必要がありますか?
object ::= '{' '}' | '{' members '}';
members ::= pair | pair ',' members;
pair ::= string ':' value;
array ::= '[' ']' | '[' elements ']';
elements ::= value | value ',' elements;
value ::= string | number | object | array | 'true' | 'false' | 'null';
:
例えば、JSONためのEBNF文法のように表すことができます。しかし、(例えば数など)の値の一部のための文法は数については、この正規表現パターンのような規則的な言語として表すことができる。
-?\d+(\.\d+)?([eE][+-]?\d+)?
この例を考えると、一方が再帰下降JSONパーサを作成していると仮定すると..番号がマチェットでなければならないRegExを使用して簡単に一致させることができるため、RegExを使用して一致させる必要がありますか?
入れ子になっていればまともなパーサを使用したいと思います。個々のコンポーネントは正規表現を使用して文字(一般にクラスを持つ)を一般化することができます。 – sln