mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-26 03:38:25 +08:00
Documentation.
This commit is contained in:
parent
de6dff94cd
commit
1c48874a2a
@ -128,6 +128,15 @@ class LocalExtractor(algorithm.Visitor):
|
|||||||
|
|
||||||
|
|
||||||
class ASTTypedRewriter(algorithm.Transformer):
|
class ASTTypedRewriter(algorithm.Transformer):
|
||||||
|
"""
|
||||||
|
:class:`ASTTypedRewriter` converts an untyped AST to a typed AST
|
||||||
|
where all type fields of non-literals are filled with fresh type variables,
|
||||||
|
and type fields of literals are filled with corresponding types.
|
||||||
|
|
||||||
|
:class:`ASTTypedRewriter` also discovers the scope of variable bindings
|
||||||
|
via :class:`LocalExtractor`.
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, engine):
|
def __init__(self, engine):
|
||||||
self.engine = engine
|
self.engine = engine
|
||||||
self.env_stack = []
|
self.env_stack = []
|
||||||
@ -295,6 +304,15 @@ class ASTTypedRewriter(algorithm.Transformer):
|
|||||||
|
|
||||||
|
|
||||||
class Inferencer(algorithm.Visitor):
|
class Inferencer(algorithm.Visitor):
|
||||||
|
"""
|
||||||
|
:class:`Inferencer` infers types by recursively applying the unification
|
||||||
|
algorithm. It does not treat inability to infer a concrete type as an error;
|
||||||
|
the result can still contain type variables.
|
||||||
|
|
||||||
|
:class:`Inferencer` is idempotent, but does not guarantee that it will
|
||||||
|
perform all possible inference in a single pass.
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, engine):
|
def __init__(self, engine):
|
||||||
self.engine = engine
|
self.engine = engine
|
||||||
self.function = None # currently visited function, for Return inference
|
self.function = None # currently visited function, for Return inference
|
||||||
@ -460,6 +478,16 @@ class Inferencer(algorithm.Visitor):
|
|||||||
self.function.name_loc, node.value.loc, makenotes)
|
self.function.name_loc, node.value.loc, makenotes)
|
||||||
|
|
||||||
class Printer(algorithm.Visitor):
|
class Printer(algorithm.Visitor):
|
||||||
|
"""
|
||||||
|
:class:`Printer` prints ``:`` and the node type after every typed node,
|
||||||
|
and ``->`` and the node type before the colon in a function definition.
|
||||||
|
|
||||||
|
In almost all cases (except function definition) this does not result
|
||||||
|
in valid Python syntax.
|
||||||
|
|
||||||
|
:ivar rewriter: (:class:`pythonparser.source.Rewriter`) rewriter instance
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, buf):
|
def __init__(self, buf):
|
||||||
self.rewriter = source.Rewriter(buf)
|
self.rewriter = source.Rewriter(buf)
|
||||||
self.type_printer = types.TypePrinter()
|
self.type_printer = types.TypePrinter()
|
||||||
|
Loading…
Reference in New Issue
Block a user