雷克瑟一代

lexit的Python项目详细描述


Lexit

LExchange是使用Python 3.6编写的开源词表生成器,使用了新的特性,如^ {CD1>}、类型提示和^ {CD2>}挂钩。

json lexer示例

fromlexitimportLexerclassJsonLexer(Lexer):NUMBER=r'-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?'STRING=r'"(\\\"|\\\\|[^"\n])*?"i?'L_BRACE=r'{'R_BRACE=r'}'L_BRACKET=r'\['R_BRACKET=r'\]'TRUE=r'true'FALSE=r'false'NULL=r'null'COMMA=r','COLON=r':'ignore=r'\s+'tokens=list(JsonLexer.lex('{"hello": "world"}'))

要求

  • 唯一的要求是python3.6+
  • 用于测试pytest

安装

pip install lexit

错误处理

try:
    tokens = list(JsonLexer.lex('${"hello": "world"}'))
except LexerError as e:
    print(e.pretty())
    exit(1)

# Will produce the following output:

No match for character '$' in line 1 column 1
${"hello": "world"}
^

设计决策

  • 应该易于使用
  • 最长匹配优先级(++总是胜过+,尽管在lexer类中定义令牌的顺序不同)
  • 对人类的自我描述错误(应该很明显发生了什么以及何时发生)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java日期对象如何增加星期几   java同一类的两个版本(一个是静态的,一个是非静态的)   azure缺少ApplicationInsightsJava和Spring Boot 2.3.0的日志   java为什么JBoss EAP无法启动?   Java如何使用enum收集类?   Java FX 3D:不遵守其Z坐标的对象   mysql如何部署在internet上作为服务器运行的java应用程序?   java以编程方式滚动到Vaadin应用程序中的组件   java Maven发布插件跳过执行但不准备的测试   java如何使用Mockito模拟Spring ApplicationContext的getBean方法,用TestNG编写单元测试?   java如何实现Android细节通知?   java Spring引导:检查资源是否在过滤器级别有注释   java应用程序在使用安装了ACTION\u MEDIA\u的sendBroadcast时会失去焦点   java将T[](其中T是字节[])返回到字节[]   如何使用Java创建文件上传的代理服务器?   java指向同一活动的两个按钮   javascript是否将自定义对象的映射转换为json对象?