Skip to content

codegen

Classes:

ArxBuilder

ArxBuilder()

Bases: Builder

Methods:

Source code in src/arx/codegen.py
40
41
42
43
44
45
def __init__(self) -> None:
    """
    title: Initialize ArxBuilder.
    """
    super().__init__()
    self.translator: ArxVisitor = self._new_translator()

build

build(
    node: AST,
    output_file: str,
    link: bool = True,
    link_mode: Literal["auto", "pie", "no-pie"] = "auto",
) -> None

-

Transpile the ASTx to LLVM-IR and build it to an executable file.

Source code in src/arx/codegen.py
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
def build(
    self,
    node: astx.AST,
    output_file: str,
    link: bool = True,
    link_mode: Literal["auto", "pie", "no-pie"] = "auto",
) -> None:
    """
    title: >-
      Transpile the ASTx to LLVM-IR and build it to an executable file.
    parameters:
      node:
        type: astx.AST
      output_file:
        type: str
      link:
        type: bool
      link_mode:
        type: Literal[auto, pie, no-pie]
    """
    result = self.translate(node)
    self._build_from_ir_result(result, output_file, link, link_mode)

build_modules

build_modules(
    root: ParsedModule,
    resolver: ImportResolver,
    output_file: str,
    link: bool = True,
    link_mode: Literal["auto", "pie", "no-pie"] = "auto",
) -> None
Source code in src/arx/codegen.py
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
def build_modules(
    self,
    root: ParsedModule,
    resolver: ImportResolver,
    output_file: str,
    link: bool = True,
    link_mode: Literal["auto", "pie", "no-pie"] = "auto",
) -> None:
    """
    title: Build a reachable graph of parsed modules.
    parameters:
      root:
        type: ParsedModule
      resolver:
        type: ImportResolver
      output_file:
        type: str
      link:
        type: bool
      link_mode:
        type: Literal[auto, pie, no-pie]
    """
    result = self.translate_modules(root, resolver)
    self._build_from_ir_result(result, output_file, link, link_mode)

ArxVisitor

Bases: Visitor