解析二维编程语言的工具

parse-2d的Python项目详细描述


解析?2d

用于解析二维编程语言的工具。在

示例

假设我们要解析一个表示路径的图,其中>v<和{}都是单个步骤。在

>v  >>
 v  ^
 >>>^

标记化的一种方法是将每个步骤解释为一个标记,其中一个值表示其方向。在

^{pr2}$

每个Token都有一个区域和一个值。region是它在原始图表中覆盖的区域,而值可以是任何Python对象,表示您已标记的内容。在

或者,您可以使用WireTokenizer将路径提取为单个标记,或者通过子类化WireTokenizer作为定向路径。在

还提供了一个更完整的sample,通过解析Circuit Diagram语言来演示这些工具的使用。在

参考文献

Diagram

Diagram是一个由“符号”组成的无限二维网格,有一个独特的“空白”符号。Diagram可以用列表列表和空白符号实例化,也可以通过from_string方法实例化。在

手动实例化

>>> diagram=Diagram([[1,2],[3]],0)>>> diagram[(0,1)]3>>> diagram[(1,1)]0>>> diagram[(-30,17)]0

from_string

>>> diagram=Diagram.from_string("ab\nc")>>> diagram[(0,1)]'c'>>> diagram[(1,1)]' '

Region

Region是图表上的一个区域。自定义Region可以通过继承Region来实现。默认情况下提供以下Region

TinyRegion(location)

由单个点组成的Region。具有location属性来提供该点。在

RectRegion(top_left, bottom_right)

一种矩形Region,与轴对齐,由top_left和{}为界的点组成,包括上边缘和左边缘,不包括底部和右边缘(类似于range)。在

SparseRegion(contents)

由不同点的集合组成的Region。具有contents属性来提供frozenset个点。在

Token

Token由覆盖的region和令牌表示的value组成。在

Tokenizer

Tokenizer是从图中提取标记的对象。自定义的Tokenizer类可以通过从Tokenizer继承并重写starts_onextract_token方法来实现。有关详细信息,请参阅Tokenizerdocstring。在

TinyTokenizer(symbol, value)

由单个符号表示的令牌的令牌赋予器。在

为图中的每个symbol提取值为token_value的标记。在

TemplateTokenizer(template, token_value)

标记器,用于由固定的符号模板表示的令牌。在

template要么是符号的相对位置映射,要么是Diagram。在

为在父关系图中找到的模板的每个非重叠转换提取值为token_value的标记。在

WireTokenizer(segment_connections)

线标记的标记器,由图中的路径表示。在

导线由多个符号“线段”组成,每个线段都有一个可以连接到的固定方向集合。在

segment_connections是从段符号到该段可用连接集合的映射。在

提取表示到该连线的可用连接的连线记号。在

此类假定段将所有可能的传入方向连接到所有可能的传出方向。子类可以通过重写connections方法来重写此行为。有关详细信息,请参阅WireTokenizerdocstring。在

BoxTokenizer(edge_symbols, contents_tokenizer)

标记器,用于由边缘符号框表示的标记。在

edge_tokens是从方框的一个侧面到可用于该边缘的符号集合的映射。在

contents_tokenizer是一个函数,用于确定提取令牌的值,并将整个框(包括边缘)作为其唯一参数传递。在

tokenize(diagram, tokenizers)

生成在diagram中按tokenizers列表找到的非重叠标记。在

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

推荐PyPI第三方库


热门话题
Java类之间并发性不一致的HashMap   插件如何在JavaSwing中使用UIManager和Classloader从外部jar安装外观?   java JasperReports:找不到子报表   在项目中找不到java生成的Javadoc文件   java BigDecimal。multiply()和divide()方法返回十六进制数。为什么?   java统计出现次数并从字符串中删除重复项   调用运算符时发生java NullPointerException   Spring和Hibernate之间的java配置错误   JavaZK将用户重定向回上一页   Javasocket为传出连接指定特定的网络接口   如果拖动到某个区域外,java Make按钮操作将被取消   如何在Eclipse for selenium 3.141.59中添加Java文档链接   java从匹配条件的数组中获取所有索引   docker未连接到RemoteWebDriver的java Gitlab ci selenium测试   java重写run方法   utf 8如何使用java解码UTF8编码的字符串?   java如何从eclipse调试部署在tomcat上的web应用程序?   将字母字符与前面没有百分号的Java正则表达式匹配