🐐 Aeternum loops

This commit is contained in:
2026-04-16 20:46:20 +02:00
parent c570d72b02
commit 7960f6e3da
7 changed files with 72 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ from rply import LexerGenerator
valid_characters = '|'.join(list("abcdefghiklmnopqrstvxyz_"))
keyword_tokens = [("KEYWORD_"+i, i) for i in [
"AETERNVM",
"ALVID",
"AVT",
"DEFINI",

View File

@@ -121,6 +121,11 @@ class Parser():
def dum(tokens):
return ast_nodes.DumStatement(tokens[1], tokens[4])
# AETERNVM is sugar for `DVM FALSITAS` — same AST, no observable difference.
@self.pg.production('dum_statement : KEYWORD_AETERNVM KEYWORD_FACE SYMBOL_LCURL statements SYMBOL_RCURL')
def aeternvm(tokens):
return ast_nodes.DumStatement(ast_nodes.Bool(False), tokens[3])
@self.pg.production('per_statement : KEYWORD_PER id KEYWORD_IN expression KEYWORD_FACE SYMBOL_LCURL statements SYMBOL_RCURL')
def per(tokens):
return ast_nodes.PerStatement(tokens[3], tokens[1], tokens[6])