それはあなたを幸せにすることはありませんが、おそらくパーサーを書くことを学ぶのに時間をかける必要があります(ドラゴンブックはそれに適しています)。パーサータスクの特徴は、その方法を知っていれば簡単で、知らなければほとんど不可能だということです。<start_underline, "_">
エディターで使用するフォーマットインジケーターやその他すべてのトークンを認識できるトークナイザーを作成<end_underline, "_">
します。結果は次のようになります。
文章:Hello _world_, /how are you?/
トークン:<text, "Hello ">,<start_underline, "_">,<text, "world">,<end_underline, "_">,<text, ", ">,<start_bold, "/">,<text, "how are you?">,<end_bold, "/">,
開始と終了は、ブール変数をネストする意味がないため、ブール変数を使用してかなり簡単に追跡できます。そのため、私はすでにトークナイザーでその追跡を行っています。
その後、これらのトークンを受け取り、それに応じてテキストエリアへの出力を構成するパーサークラスを作成します。
ご覧のとおり、これは実際には原則の単なる適用ですdivide and conquer
。のタスクはHow do I do everything I want with my text?
3つの部分に分かれています。
- 便利な構造によると、この文字列は何についてですか?(Tokenizerからの回答)
x
可能な限り特定のテキストパーツを処理するにはどうすればよいx
ですか?(パーサーからの回答)
- この文字列のパーサー解釈をどのように表現しますか?(JTextpaneなどからの回答)
TokenizerとParserの両方が追加のクラスである必要はありません。コンテキストは複雑ではないため、好みのTextareaタイプの拡張クラスのメソッドにすることができます。
より詳細なアドバイスを与えることは役に立たないと思います。次の最善のステップは、おそらく自分でやりたいと思う実装でしょう。ただし、特定の1つの部分に対する適切な解決策が見つからない場合は、遠慮なく質問してください。