微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python prompt_toolkit 中的自定义词法分析器

如何解决Python prompt_toolkit 中的自定义词法分析器

虽然 prompt_toolkit 文档指出“也可以通过实现 Lexer 抽象基类来创建自定义词法分析器”How I call an async function without await?,但它并没有真正解释如何。我找不到任何教程或真正完整的代码示例来说明它是如何工作的。有没有人有任何建议或例子?我希望从特定于应用程序的 sql 派生类创建词法分析器。

解决方法

您可以使用 pygments 创建自己的词法分析器,要创建自己的词法分析器,您需要了解正则表达式 https://docs.python.org/3/howto/regex.html

您可以从 pygments 中阅读有关创建自己的词法分析器的文档链接。 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 中,您还可以编辑这些文档链接的颜色-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',})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。