Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




我有Stata关键字的字典,并具有Stata语法的合理知识。我想花几个小时将其转换为Pygments的Stata词法分析器。

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

我知道Pygments APIlexer development page,但是老实说,对于像我这样对Python知识非常有限的人来说,这些还远远不够。

到目前为止,我的策略是寻找示例。我发现quite a few,例如PuppetSassScalaAda。他们只是帮了大忙。欢迎从我的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,而是您没有编写词法分析器或了解词法分析器如何工作的经验?因为此实现非常简单。

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

关于python - 关于如何为Pygments编写词法分析器的大量文档?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14755721/

10-12 21:04