解析二维编程语言的工具
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_on
和extract_token
方法来实现。有关详细信息,请参阅Tokenizer
docstring。在
TinyTokenizer(symbol, value)
由单个符号表示的令牌的令牌赋予器。在
为图中的每个symbol
提取值为token_value
的标记。在
TemplateTokenizer(template, token_value)
标记器,用于由固定的符号模板表示的令牌。在
template
要么是符号的相对位置映射,要么是Diagram
。在
为在父关系图中找到的模板的每个非重叠转换提取值为token_value
的标记。在
WireTokenizer(segment_connections)
线标记的标记器,由图中的路径表示。在
导线由多个符号“线段”组成,每个线段都有一个可以连接到的固定方向集合。在
segment_connections
是从段符号到该段可用连接集合的映射。在
提取表示到该连线的可用连接的连线记号。在
此类假定段将所有可能的传入方向连接到所有可能的传出方向。子类可以通过重写connections
方法来重写此行为。有关详细信息,请参阅WireTokenizer
docstring。在
BoxTokenizer(edge_symbols, contents_tokenizer)
标记器,用于由边缘符号框表示的标记。在
edge_tokens
是从方框的一个侧面到可用于该边缘的符号集合的映射。在
contents_tokenizer
是一个函数,用于确定提取令牌的值,并将整个框(包括边缘)作为其唯一参数传递。在
tokenize(diagram, tokenizers)
生成在diagram
中按tokenizers
列表找到的非重叠标记。在
- 项目
标签: