私は、Scalaパーサーコンビネータを使用するための簡単なWikiライクなマークアップパーサーを実装したいと考えています。RegexとParserコンビネータでネスティッドマークアップを制限する方法は?
私は少しずつこの問題を解決したいと思いますので、最初のバージョンでは達成したいことがあります:単純なインラインリテラルマークアップです。
例えば、入力文字列がある場合:
This is a sytax test ``code here`` . Hello ``World``
出力文字列は次のようになります。
This is a sytax test <code>code here</code> . Hello <code>World</code>
は、私がここにRegexParsers
を使用してこれを解決しよう、と私はやりましたさ現在:
このコードでは、<code>
マークアップは、たとえば、正常に動作します:
This is a sytax test ``code here``.
が
This is a sytax test <code>code here</code>.
になるしかし、私は上記の例でそれを実行すると、それは
This is a sytax test <code>code here`` . Hello ``World</code>
をもたらすであろう、私はこれが原因で正規表現Iだと思います使用:
"""\B``(.)*``\B""".r
``
ペア内の任意の文字を許可しました。
私はそこに制限する必要があることを知りたいと思いますが、``
をネストしてこの問題を修正できませんでしたか?