词法分析函数,标记器。
cs.lex的Python项目详细描述
版本20190812: 修正字符串中错误的晃动转义。
词法分析功能,标记器。
词法和标记功能的任意组合 用于编写递归下降分析器,其中我有几个。
一般来说,get\ux函数接受一个源字符串和一个偏移量 (通常是可选的,默认为0)并返回一个标记和新的偏移量, 标记化失败时出现提升值错误。
函数作为行(块,部分=无)
从任意文本片段生成完整行的生成器
iterable块
完成后,任何剩余的无换行符块都将保留 在partials列表中;调用者将无法使用它 除非列表是预先应用的。
函数获取字符(s,offset,gochars)
从偏移量开始,扫描字符串
s
中的字符。
返回(匹配,新的补偿)。
函数get_decimal(s,offset=0)
扫描字符串s
以查找从偏移量开始的十进制字符。
返回(dec_字符串,新的偏移量)。
函数获取十进制或浮点值(s,偏移量=0)
获取十进制或基本浮点(nnn.nnn)值
从strs
at偏移量
。
返回(值,新的偏移量)。
函数获取十进制值(s,偏移量=0)
扫描字符串s
以查找从偏移量开始的十进制值。
返回(值,新的偏移量)。
函数get_delimited(s,offset,delim)
从字符串中收集文本s
from positionoffset
up
第一次出现分隔符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
:带有变量引用的字符串偏移量
:参考的起点默认值
:缺少环境变量的默认值; 如果没有(默认值),则会引发valueerrorenviron
:环境映射,默认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规范。
每个令牌服务器规范都是:
- 要完全匹配的文本字符串
- 具有值(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元数据和少量代码清理。
推荐PyPI第三方库
检查字符串是否与^[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元数据和少量代码清理。