Skip to content

symbol_table

Classes:

RegisterTable

RegisterTable()

Methods:

Attributes:

Source code in packages/irx/src/irx/symbol_table.py
19
20
21
22
23
def __init__(self) -> None:
    """
    title: Initialize RegisterTable.
    """
    self.stack: list[int] = []

last property

last: int

append

append() -> None
Source code in packages/irx/src/irx/symbol_table.py
25
26
27
28
29
def append(self) -> None:
    """
    title: Append.
    """
    self.stack.append(0)

increase

increase(count: int = 1) -> int
Source code in packages/irx/src/irx/symbol_table.py
31
32
33
34
35
36
37
38
39
40
41
def increase(self, count: int = 1) -> int:
    """
    title: Increase.
    parameters:
      count:
        type: int
    returns:
      type: int
    """
    self.stack[-1] += count
    return self.stack[-1]

pop

pop() -> None
Source code in packages/irx/src/irx/symbol_table.py
52
53
54
55
56
def pop(self) -> None:
    """
    title: Pop.
    """
    self.stack.pop()

redefine

redefine(count: int) -> None
Source code in packages/irx/src/irx/symbol_table.py
58
59
60
61
62
63
64
65
def redefine(self, count: int) -> None:
    """
    title: Redefine.
    parameters:
      count:
        type: int
    """
    self.stack[-1] = count

reset

reset() -> None
Source code in packages/irx/src/irx/symbol_table.py
67
68
69
70
71
def reset(self) -> None:
    """
    title: Reset.
    """
    self.stack[-1] = 0

SymbolTable

SymbolTable()

Methods:

Source code in packages/astx/src/astx/symbol_table.py
202
203
def __init__(self) -> None:
    self.scopes = Scope()

define

define(expr: NamedExpr) -> None
Source code in packages/astx/src/astx/symbol_table.py
205
206
207
208
209
210
211
212
213
214
def define(self, expr: NamedExpr) -> None:
    """
    title: Define a new named expression inside the scoped stack.
    parameters:
      expr:
        type: NamedExpr
    """
    if not self.scopes.current:
        raise Exception("SymbolTable: No scope active.")
    self.scopes.current.named_expr[expr.name] = expr

lookup

lookup(name: str) -> NamedExpr
Source code in packages/astx/src/astx/symbol_table.py
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
def lookup(self, name: str) -> NamedExpr:
    """
    title: Get a named expression from the scope stack.
    parameters:
      name:
        type: str
    returns:
      type: NamedExpr
    """
    scope = self.scopes.current
    while scope is not None:
        if name in scope.named_expr:
            return scope.named_expr[name]
        scope = scope.parent
    raise NameError(f"Name '{name}' is not defined")

update

update(expr: NamedExpr) -> None

It is useful mainly for updating the comment of the expression. parameters: expr: type: NamedExpr

Source code in packages/astx/src/astx/symbol_table.py
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
def update(self, expr: NamedExpr) -> None:
    """
    title: Update the expression on the SymbolTable.
    summary: |-

      It is useful mainly for updating the comment of the expression.
    parameters:
      expr:
        type: NamedExpr
    """
    if not self.scopes.current:
        raise Exception("SymbolTable: No scope active.")
    if expr.name not in self.scopes.current.named_expr:
        raise Exception("This name doesn't exist in the SymbolTable.")
    self.scopes.current.named_expr[expr.name] = expr