プログラミング言語は「正規言語」ではなく、厳密に言えば、正規表現で解析することはできません。ただし、Perl 正規表現を使用して、トップダウンの再帰文法全体を定義できます。このモジュールRegexp::Grammars
は、これを簡単に、強力に、整然としたものにします。
(?{CODE})
また、構文解析中に警告を発行する構造を確認することもできます。文法のスニペットは次のようになります (簡単に説明すると、単純化されています)。
...;
<rule: if-statement>
if ( [ \t]+ | (?{warn q{no spaces around "if" condition at $line}}) )
\( <statement> \)
( [ \t]+ | (?{warn q{no spaces around "if" condition at $line}}) )
\{ <expression>+ \}
<rule: expression>
<statement> ;
<rule: statement>
<assignment> | <function-call> | \( <statement> \)
...;
このモジュールRegexp::Grammars
は、内部%/
で使用できる構文ツリー全体を提供します。