10

私はStataキーワードの辞書と、Stata 構文の合理的な知識を持っています。Pygmentsの Stata lexer に変換するために数時間を費やしたいと思います。

しかし、レクサーの構文に関する十分なドキュメントを見つけることができず、レクサーのコーディングを開始できません。Pygments 用の新しいレクサーを作成するための優れたチュートリアルを教えてください。

Pygments APIlexer 開発ページについては知っていますが、正直なところ、Python の知識が非常に限られている私のような人には、これらは十分ではありません。

これまでの私の戦略は、例を探すことでした。PuppetSassScalaAdaなど、かなりの数を見つけました。彼らはそれだけ助けました。私の Stata キーワードから始める方法についてのヘルプは大歓迎です。

4

2 に答える 2

8

キーワードをハイライトしたいだけなら、これから始めます (キーワードを独自の Stata キーワードのリストに置き換えます):

class StataLexer(RegexLexer):

    name = 'Stata'
    aliases = ['stata']
    filenames = '*.stata'
    flags = re.MULTILINE | re.DOTALL

    tokens = {
       'root': [
           (r'(abstract|case|catch|class|do|else|extends|false|final|'
            r'finally|for|forSome|if|implicit|import|lazy|match|new|null|'
            r'object|override|package|private|protected|requires|return|'
            r'sealed|super|this|throw|trait|try|true|type|while|with|'
            r'yield)\b', Keyword),
       ],
   }

あなたの問題は、あなたが Python をまったく知らないということではなく、レクサーを書いたり、レクサーがどのように機能するかを理解した経験があまりないことだと思いますか? この実装はかなり簡単だからです。

次に、さらに要素を追加したい場合は、rootリストに要素を 2 つ追加します。最初の要素は正規表現で、2 番目の要素は構文クラスを指定します。

于 2013-03-19T13:02:31.030 に答える
4

最近、pygments lexer (単純な構文を持つ BibTeX 用) を作成しようとしましたが、そこにあるリソースは、Python や一般的なコード解析の概念に慣れていない人にとってはあまり役に立たないというあなたの評価に同意します。

私が最も役に立ったのは、Pygments に含まれているレクサーのコレクションです

_mapping.py認識されているすべての言語フォーマットと、それぞれのレクサー オブジェクトへのリンクをリストしたファイルがあります。レクサーを構築するために、私が扱っていたものと同様の構造を持つ言語を考えてみて、何か役に立つものを引き出すことができるかどうかを確認しました。組み込みレクサーの中には、思ったよりも複雑なものもありますが、役に立ったものもあります。

于 2013-03-26T03:38:03.290 に答える