とりあえずMacro PEGのコード。
「排他的な修飾子」とは何のことかというと、たとえば、public, private, protectedのように、「一度どれかが出現したら他のものは出現しない修飾子」のことです。最近のプログラミング言語の文法では、このような排他的な修飾子はよく見るパターンだと思いますが、これもMacro PEGでサクっと書くことができます。
話は簡単で、前回の記事のMacro PEGに
引数Scope
を追加して、「排他的な修飾子」の前に、(&Scope)
でassertionを書くだけというもの。この例のように、引数として渡された式にand-predicateやnot-predicateを追加することで様々なものを表現することができます。