关于如何为Pygments编写词法分析器的大量文档?

Fr.*_*Fr. 9 python pygments stata

我有一个Stata关键词和Stata语法的合理知识.我想花几个小时把它变成一个Stata lexer for Pygments.

但是,我找不到关于词法分析器语法的足够文档,并发现自己无法开始编写词法分析器.有人能指出为Pygments编写新词法分析器的好教程吗?

我知道Pygments API词法分析器开发页面,但老实说,对于像我这样对Python知识非常有限的人来说,这些还不够.

到目前为止,我的策略是寻找例子.我发现了很多,例如Puppet,Sass,Scala,Ada.他们帮助的只是那么多.任何有关如何从我的Stata关键字开始的帮助都将受到欢迎.

djc*_*djc 7

如果您只是想突出显示关键字,您可以从这开始(用您自己的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),
       ],
   }
Run Code Online (Sandbox Code Playgroud)

我认为你的问题并不在于你不知道任何Python,而是你在编写词法分析器或理解词法分析器的工作原理方面没有多少经验?因为这个实现相当简单.

然后,如果要添加更多内容,请在root列表中添加一个额外元素,一个双元素元组,其中第一个元素是正则表达式,第二个元素指定一个语法类.