词法分析函数,标记器。

cs.lex的Python项目详细描述


版本20190812: 修正字符串中错误的晃动转义。

词法分析功能,标记器。

词法和标记功能的任意组合 用于编写递归下降分析器,其中我有几个。

一般来说,get\ux函数接受一个源字符串和一个偏移量 (通常是可选的,默认为0)并返回一个标记和新的偏移量, 标记化失败时出现提升值错误。

函数作为行(块,部分=无)

从任意文本片段生成完整行的生成器 iterable

完成后,任何剩余的无换行符块都将保留 在partials列表中;调用者将无法使用它 除非列表是预先应用的。

函数获取字符(s,offset,gochars)

偏移量开始,扫描字符串s中的字符。 返回(匹配,新的补偿)。

函数get_decimal(s,offset=0)

扫描字符串s以查找从偏移量开始的十进制字符。 返回(dec_字符串,新的偏移量)。

函数获取十进制或浮点值(s,偏移量=0)

获取十进制或基本浮点(nnn.nnn)值 从strsat偏移量。 返回(值,新的偏移量)。

函数获取十进制值(s,偏移量=0)

扫描字符串s以查找从偏移量开始的十进制值。 返回(值,新的偏移量)。

函数get_delimited(s,offset,delim)

从字符串中收集文本sfrom positionoffsetup 第一次出现分隔符delim;返回文本 不包括分隔符和分隔符后的偏移量。

函数get_dotted_identifier(s,offset=0,**kw)

扫描字符串s以查找点式标识符(默认情况下 ascii字母或下划线,后跟字母、数字或 下划线)带有可选的尾随点和另一个点 标识符,从偏移量开始(默认为0)。 返回(匹配,新的补偿)。

注意:如果 没有前导字母/下划线。

函数get_envvar(s,offset=0,environ=none,default=none,specials=none)

解析对$varname或 $x其中"x"是一个特殊字符。

参数:

  • s:带有变量引用的字符串
  • 偏移量:参考的起点
  • 默认值:缺少环境变量的默认值; 如果没有(默认值),则会引发valueerror
  • environ:环境映射,默认os.environ
  • 特殊值:特殊单字符变量的映射

函数get_十六进制(s,offset=0)

扫描字符串s以查找从偏移量开始的十六进制字符。 返回十六进制字符串,新的偏移量。

函数获取十六进制值(s,偏移量=0)

扫描字符串s以查找从偏移量开始的十六进制值。 返回(值,新的偏移量)。

函数get_identifier(s,offset=0,alpha='abcdefghijklmnopqrstuvxyzab,efghijklmnopqrstuvxyz',number='0123456789',extras=''''u')

扫描字符串s以查找标识符(默认情况下为ascii 字母或下划线,后跟字母、数字或下划线) 从偏移量开始(默认值为0)。 返回(匹配,新的补偿)。

注意:如果 没有前导字母/下划线。

参数:

  • s:要扫描的字符串
  • 偏移量:起始偏移量,默认为0。
  • alpha:按字母顺序排列的字符, 默认string.ascii_字母
  • 数字:被视为数字的字符, 默认string.digits
  • 附加字符:被视为标识符一部分的附加字符, 默认值

函数get_nonwhite(s,offset=0)

扫描字符串s以查找不在字符串中的字符。空白 从偏移量开始(默认值为0)。 返回(匹配,新的补偿)。

函数获取其他字符(s,offset=0,stopchars=none)

扫描字符串s以查找不在stopchars中的字符 在偏移量(默认值为0)。 返回(匹配,新的补偿)。

函数get_qstr(s,offset=0,q='",environ=none,default=none,env_specials=none)

获取带有晃动转义和可选环境替换的引用文本。

参数:

  • s:包含引用文本的字符串。
  • 偏移量:起点,默认为0。
  • q:引号字符,默认为'"。如果q设置为none, 不要期望字符串由引号分隔。
  • environ:如果不是none,还可以解析和展开$envvar引用。
  • 默认值:传递给

函数获取qstr或u标识符(偏移量)

解析双引号字符串或标识符。

函数获取溢出文本(s,delim,offset=0,slosh='\\',mapper=<;函数溢出映射器位于0x10bd01170>;,specials=none)

从位置收集字符串的晃动转义文本 偏移量(默认为0),并返回解码的Unicode字符串和 完成分析的偏移量。

参数:

  • delim:字符串结尾分隔符,如单引号或双引号。
  • 偏移量:起始偏移量在s范围内,默认为0。
  • 晃动:转义字符,默认为晃动('.)。
  • mapper:接受单个字符的映射函数 并返回替换字符串或none 替换诸如'\t'或'\n'之类的内容。默认值是 slosh_mapper函数,其默认映射为slosh_charmap
  • specials:其他特殊字符序列的映射和解析 收集它们的功能。当其中一个特别的 字符串中有字符序列,解析 函数被调用来解析该点。 解析函数接受 s和特殊字符的偏移量。他们回来了 解码字符串和经过解析的偏移量。

转义字符slosh引入了一些 其值取决于以下字符的替换文本。 如果以下字符为:

  • 转义字符晃动,插入转义字符。
  • 字符串分隔符delim,插入分隔符。
  • 字符"x",插入带有以下代码的字符 两个十六进制数字。
  • 字符"u",插入具有以下代码的字符 4位十六进制数字。
  • 字符"u",插入具有以下代码的字符 8位十六进制数字。
  • 映射器键中的字符

函数get_tokens(s,offset,getter)

使用提供的 tokenise函数 以及最终偏移量。

参数:

  • s:要分析的字符串。
  • 偏移量:分析的起始位置。
  • getters:一个iterable of tokeniser规范。

每个令牌服务器规范都是:

    需要(s,offset)并返回(token,new_offset)
  • 要完全匹配的文本字符串
  • 具有值(func、args、kwargs)的元组或列表; 调用func(s,offset,*args,**kwargs)
  • 具有.match方法的对象,如正则表达式; 调用getter.match(s,offset)并返回一个match对象 返回匹配结束偏移量的.end()方法

函数获取UCU标识符(s,offset=0,number='0123456789',extras=''uu')

将字符串s扫描为get_identifier()的标识符, 但要求字母大写。

函数get_white(s,offset=0)

扫描字符串s中的字符。空白 从偏移量开始(默认值为0)。 返回(匹配,新的补偿)。

功能hexify(bs)

一种蟒蛇2味道的比那西酒。Hexlify。

函数htmlify(s,nbsp=false)

将字符串转换为HTML格式的安全转录。

参数:

  • s:字符串
  • nbsp:将空格替换为" ;",以防止单词折叠, 默认值false

函数htmlquote

在HTML中引用一个字符串。

函数是带点的标识符(s,offset=0,**kw)

测试字符串是否是从位置偏移量开始的标识符。

函数是u标识符(s,offset=0,**kw)

测试字符串是否是从位置偏移量开始的标识符。

功能isuc

检查字符串是否与^[a-z][a-z_0-9]*$匹配

函数jsquote

在javascript中引用一个字符串。

函数lastlinelen

字符串中最后一个换行符后的文本长度。

(最初由cs.hier用于计算有效文本宽度。)

函数匹配标记(s、offset、getter)

捕获valueerror异常的get_标记的包装器 并返回(无,偏移)。

函数parseuc_sattr(attr)

取一个属性名并返回(key,is_复数)

'foo'返回foo,false)'foos''fooes'返回('foo',true)。 否则返回(none,false)

功能phpquote

在php代码中引用一个字符串。

功能skipwhite(s,offset=0)

跳过空白的方便程序; 返回下一个非空白字符的偏移量。

函数slosh_mapper(c,charmap=none)

返回一个字符串以替换反斜杠-c或无。

功能剥离部件

稍微聪明一点的dedent忽略字符串的开头缩进。

剥去提供的字符串s。拔下引线。 把剩下的都干掉。把领队放回去。

示例:

>>> def func(s):
...   """ Slightly smarter dedent which ignores a string's opening indent.
...       Strip the supplied string `s`. Pull off the leading line.
...       Dedent the rest. Put back the leading line.
...   """
...   pass
...
>>> from cs.lex import stripped_dedent
>>> print(stripped_dedent(func.__doc__))
Slightly smarter dedent which ignores a string's opening indent.
Strip the supplied string `s`. Pull off the leading line.
Dedent the rest. Put back the leading line.

函数strlist(ary,sep=',')

将iterable转换为字符串并用","连接

函数tabpadding(padlen,tabsize=8,offset=0)

计算一些空格以在offfset处使用制表符填充。

函数texthaxify(bs,shiftin='[',shiftoutout=']',whitelist=none)

使用压缩文本运行将字节bs转换为文本 一些常见的文本值。

这可以通过untextify函数来逆转。

这是一种广告文档格式,设计紧凑,但也要 暴露"文本"嵌入眼睛。最初的用途 case正在转录二进制目录条目格式,其中 文件名部分在转录中会有些可见。

输出是编码的 除了w中的值运行以外的字节希特勒主义者 包含在shiftin和shiftout标记中并转录 事实也是如此。默认白名单是ascii字母的值, 十进制数字和标点符号'-+,'。 默认的shiftin和shiftout标记是"["和"]"。

示例:

>>> texthexify(b'&^%&^%abcdefghi)(*)(*')
'265e25265e25[abcdefghi]29282a29282a'

参数:

  • bs:要转录的字节
  • 移位:可选。用于指示移动到的标记字符串 字节的直接文本转录,默认值:'['
  • 换档器:可选。用于指示 从文本模式转换回十六进制转录, 默认值']
  • 白名单:表示字节的可选字节或字符串对象 可以直接用文本表示的值;字符串对象是 转换为Hexify()和TextHexify()输出字符串可以自由 与untexthify()连接并解码。 默认值是ascii字母,十进制数字 以及标点符号'-+,'.

函数unctrl(s,tabsize=8)

返回带制表符和控制字符的字符串 替换为可打印的表示。

函数untextify(s,shiftin='[',shiftoutut=']')

将二进制数据的文本表示解码为二进制数据。

这与texthexify功能相反。

在移位之外,标记二进制数据 以十六进制表示。在标记中的字节 具有字符序号的值。

示例:

>>> untexthexify('265e25265e25[abcdefghi]29282a29282a')
b'&^%&^%abcdefghi)(*)(*'

参数:

  • s:包含文本表示的字符串。
  • 移位:可选。开始一个序列的标记字符串 对于直接文本转录,默认为'['
  • 换档器:可选。结束序列的标记字符串 对于直接文本转录,默认为']

发布日志

版本20190812: 修正字符串中错误的晃动转义。

版本20190220: 新函数get qstr或u identifier。

版本20181108: 新函数获取十进制或浮点值以读取十进制或基本浮点值

版本20180815: 无语义更改;更新一些docstring并清除一些lint,修复单元测试。

版本20180810: 新的get_decimal_value和get_hexadecimal_value函数。 新的剥离功能,稍微聪明一点的textwrap.dedent。

发布日期20171231: 新函数get_decimal。删除未使用的函数dict2js。

版本20170904: python 2/3端口,将rfc247移到新的cs.rfc247模块中。

版本20160828: 在distinfo中使用"install_requires"而不是"requires"。 放弃str1(),无意义的优化。 UNRFC2047:映射到空间,改进异常处理。 add php quote:引用一个用于php代码的字符串;将docstring添加到jsquote。 添加是标识符测试。 添加get_dotted_标识符。 add是带点的标识符。 添加get_十六进制。 添加skipwhite,convenience wrapper for get_white返回下一个偏移量。 各种错误修复和改进。

版本20150120: cs.lex:texthaxify:backport到python 2,使用cs.py3字节类型

版本20150118: 元数据更新

版本20150116: pypi元数据和少量代码清理。

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

推荐PyPI第三方库


热门话题
java接口中的每个方法都是抽象的,但在抽象类中,我们也只能使用抽象方法   初始化Java中声明的、未初始化的变量会发生什么情况?   java BouncyCastle openPGP将字节[]数组加密为csv文件   在Java中将类A(和所有子类)映射到类B的实例的字典   RSA公钥编码,在Java和Android中,代码相同,结果不同   java在安卓中实现数字检测语音识别   java取消选择复选框   java如何在其他配置中重用Maven配置XML片段   java有没有一种有效的方法来检查HashMap是否包含映射到相同值的键?   spring处理程序调度失败;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/http/client/HttpClient   带有ehcache的java多层缓存   java如何访问chromium(或任何其他浏览器)cookie   java通过将两个集合与spring data mongodb data中的条件合并来获取计数   安卓中R.java的语法错误