onlinejudge_template.analyzer.parser module¶
the module to parse format strings and construct format trees
この module はフォーマット文字列を構文解析しフォーマット木を作ります。 たとえば
N
P_0 P_1 \cdots P_{N-1}
Q_0 Q_1 \cdots Q_{N-1}
という入力フォーマット文字列が与えられれば
sequence([
item("N"),
newline(),
loop(counter="i", size="N",
item("P", indices="i")
),
newline(),
loop(counter="i", size="N",
item("Q", indices="i")
),
newline(),
])
に相当する木構造 (FormatNode
) を返します。
-
class
onlinejudge_template.analyzer.parser.
DotsParserNode
(*, first: onlinejudge_template.analyzer.parser.ParserNode, last: onlinejudge_template.analyzer.parser.ParserNode, line: int, column: int)[source]¶
-
class
onlinejudge_template.analyzer.parser.
ItemParserNode
(*, name: str, indices: Tuple[str, ...] = (), line: int, column: int)[source]¶
-
class
onlinejudge_template.analyzer.parser.
ParserNode
(*, line: int, column: int)[source]¶ Bases:
abc.ABC
an internal representation which Yacc generates
-
class
onlinejudge_template.analyzer.parser.
SequenceParserNode
(*, items: List[onlinejudge_template.analyzer.parser.ParserNode], line: int, column: int)[source]¶
-
onlinejudge_template.analyzer.parser.
analyze_parsed_node
(node: onlinejudge_template.analyzer.parser.ParserNode) → onlinejudge_template.types.FormatNode[source]¶ translates an internal representation
ParserNode
to a result treeFormatNode
Raises: FormatStringParserError –
-
onlinejudge_template.analyzer.parser.
extend_loop_node
(a: onlinejudge_template.types.FormatNode, b: onlinejudge_template.types.FormatNode, *, loop: onlinejudge_template.types.LoopNode) → Optional[onlinejudge_template.types.FormatNode][source]¶
-
onlinejudge_template.analyzer.parser.
list_used_names
(node: onlinejudge_template.types.FormatNode) → Set[str][source]¶
-
onlinejudge_template.analyzer.parser.
run
(pre: str) → onlinejudge_template.types.FormatNode[source]¶ Raises: FormatStringParserError –
-
onlinejudge_template.analyzer.parser.
zip_nodes
(a: onlinejudge_template.types.FormatNode, b: onlinejudge_template.types.FormatNode, *, name: NewType.<locals>.new_type, size: Optional[NewType.<locals>.new_type]) → Tuple[onlinejudge_template.types.FormatNode, Optional[NewType.<locals>.new_type]][source]¶ Raises: FormatStringParserError –