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

2024-02-02

我有一本字典Stata http://stata.com/关键字和 Stata 语法的合理知识。我想花几个小时把它变成一个 Stata 词法分析器Pygments http://pygments.org/.

但是,我找不到足够的有关词法分析器语法的文档,并且发现自己无法开始对词法分析器进行编码。有人可以指出为 Pygments 编写新词法分析器的好教程吗?

我知道关于皮格门斯 API http://pygments.org/docs/api/词法分析器开发页面 http://pygments.org/docs/lexerdevelopment/但说实话,对于像我这样对 Python 知识非常有限的人来说,这些还不够。

到目前为止,我的策略是寻找例子。我已经发现, e.g. Puppet https://github.com/rodjek/puppet-pygments-lexer/blob/master/puppet_lexer/__init__.py, Sass https://github.com/chriseppstein/pygments-sass-lexer/blob/master/sass_lexer/__init__.py, Scala https://github.com/iamjwc/pygments-scala-lexer/blob/master/scala_lexer.py, Ada https://github.com/jschaf/Ada-Pygments-Lexer/blob/master/ada_lexer/__init__.py。他们的帮助也仅限于此。欢迎任何有关如何开始使用我的 Stata 关键字的帮助。


如果您只是想突出显示关键字,您可以从这里开始(用您自己的 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,而是你没有太多编写词法分析器或理解词法分析器如何工作的经验?因为这个实现相当简单。

然后,如果您想添加更多内容,请向rootlist,一个双元素元组,其中第一个元素是正则表达式,第二个元素指定语法类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于如何为 Pygments 编写词法分析器的大量文档? [关闭] 的相关文章

随机推荐