如果您只想突出显示关键字,可以从以下内容开始(将关键字替换为您自己的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
列表添加一个额外的元素,一个由两个元素组成的元组,其中第一个元素是正则表达式,第二个元素指定语法类。
_mapping.py
列出了所有被认可的语言格式,并链接到每个语言的词法分析器对象。为了构建我的词法分析器,我试图想到具有类似结构的语言,并检查是否可以提取出一些有用的东西。一些内置的词法分析器比我想要的更复杂,但其他的非常有帮助。