Python prompt_toolkit 中的自定义词法分析器
Custom lexer in Python prompt_toolkit
虽然 prompt_toolkit
文档指出“也可以通过实现 Lexer
抽象基础 class 来创建自定义词法分析器”(1),但确实如此真的没有解释如何。我找不到任何教程或真正完整的代码示例来说明它是如何工作的。有没有人有任何建议或例子?我正在寻找从 SQL.
的特定于应用程序的派生词创建词法分析器
您可以使用 pygments 创建您自己的词法分析器,要创建您自己的词法分析器您需要了解正则表达式 https://docs.python.org/3/howto/regex.html
您可以阅读 pygments 中关于创建您自己的词法分析器的文档 link。
https://pygments.org/docs/lexerdevelopment/
这是一个小例子
from pygments.lexer import RegexLexer
from pygments.token import Name
__all__ = ['CustomLexer']
class CustomLexer(RegexLexer):
name = "sql type"
tokens = {
'root': [
(r"\bSELECT\b", Name.Tag),
]}
并将此行添加到您要将其导入的文件中
lexer = pygments.lexers.load_lexer_from_file("name.py", lexername="CustomLexer")
现在 prompt_toolkit 您还可以编辑这些文档的颜色 link- https://python-prompt-toolkit.readthedocs.io/en/master/pages/printing_text.html#pygments-token-text-tuples
style = Style.from_dict({
'pygments.name.tag': 'bg:#ffffff #000000',
})
虽然 prompt_toolkit
文档指出“也可以通过实现 Lexer
抽象基础 class 来创建自定义词法分析器”(1),但确实如此真的没有解释如何。我找不到任何教程或真正完整的代码示例来说明它是如何工作的。有没有人有任何建议或例子?我正在寻找从 SQL.
您可以使用 pygments 创建您自己的词法分析器,要创建您自己的词法分析器您需要了解正则表达式 https://docs.python.org/3/howto/regex.html
您可以阅读 pygments 中关于创建您自己的词法分析器的文档 link。 https://pygments.org/docs/lexerdevelopment/
这是一个小例子
from pygments.lexer import RegexLexer
from pygments.token import Name
__all__ = ['CustomLexer']
class CustomLexer(RegexLexer):
name = "sql type"
tokens = {
'root': [
(r"\bSELECT\b", Name.Tag),
]}
并将此行添加到您要将其导入的文件中
lexer = pygments.lexers.load_lexer_from_file("name.py", lexername="CustomLexer")
现在 prompt_toolkit 您还可以编辑这些文档的颜色 link- https://python-prompt-toolkit.readthedocs.io/en/master/pages/printing_text.html#pygments-token-text-tuples
style = Style.from_dict({
'pygments.name.tag': 'bg:#ffffff #000000',
})