Skip to content

Commit 7712db1

Browse files
committed
bump: preparations for new version
1 parent d8f26a9 commit 7712db1

2 files changed

Lines changed: 38 additions & 27 deletions

File tree

flamapy/metamodels/fm_metamodel/transformations/uvl_reader.py

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -352,31 +352,42 @@ def process_equation(self, ctx: UVLPythonParser.EquationContext) -> Node:
352352
self.process_expression(ctx.expression(1)))
353353

354354
def process_expression(self, ctx: Any) -> Node:
355-
"""Handle Additive, Multiplicative y Primary Expressions"""
356-
# Binary expressions (arithmetics)
357-
# 1. Handle Arithmetic Binary Expressions
358-
arithmetic_ops = {
359-
UVLPythonParser.AddExpressionContext: ASTOperation.ADD,
360-
UVLPythonParser.SubExpressionContext: ASTOperation.SUB,
361-
UVLPythonParser.MulExpressionContext: ASTOperation.MUL,
362-
UVLPythonParser.DivExpressionContext: ASTOperation.DIV,
363-
}
364-
365-
ctx_type = type(ctx)
366-
if ctx_type in arithmetic_ops:
367-
op = arithmetic_ops[ctx_type]
368-
return Node(op, self.process_expression(ctx.expression(0)),
369-
self.process_expression(ctx.expression(1)))
370-
371-
# 2. Handle single-child expression (grammar fall-through)
372-
if hasattr(ctx, 'expression') and callable(ctx.expression):
373-
child = ctx.expression()
374-
if child is not None:
375-
return self.process_expression(child)
376-
377-
# 3. Delegate leaves to a specialized helper to reduce complexity
355+
"""Handle Additive, Multiplicative and Primary Expressions"""
356+
# Top-level expression rule (expression: additiveExpression)
357+
if isinstance(ctx, UVLPythonParser.ExpressionContext):
358+
return self.process_expression(ctx.additiveExpression())
359+
# Binary arithmetic operations (Add, Sub, Mul, Div)
360+
if isinstance(ctx, (UVLPythonParser.AddExpressionContext,
361+
UVLPythonParser.SubExpressionContext,
362+
UVLPythonParser.MulExpressionContext,
363+
UVLPythonParser.DivExpressionContext)):
364+
return self._process_binary_expression(ctx)
365+
# Pass-through: additiveExpression -> multiplicativeExpression
366+
if isinstance(ctx, UVLPythonParser.MultiplicativeExprContext):
367+
return self.process_expression(ctx.multiplicativeExpression())
368+
# Pass-through: multiplicativeExpression -> primaryExpression
369+
if isinstance(ctx, UVLPythonParser.PrimaryExpressionExpressionContext):
370+
return self.process_expression(ctx.primaryExpression())
378371
return self._process_expression_leaves(ctx)
379372

373+
def _process_binary_expression(self, ctx: Any) -> Node:
374+
"""Handle binary arithmetic operations: Add, Sub, Mul, Div."""
375+
if isinstance(ctx, UVLPythonParser.AddExpressionContext):
376+
return Node(ASTOperation.ADD,
377+
self.process_expression(ctx.additiveExpression()),
378+
self.process_expression(ctx.multiplicativeExpression()))
379+
if isinstance(ctx, UVLPythonParser.SubExpressionContext):
380+
return Node(ASTOperation.SUB,
381+
self.process_expression(ctx.additiveExpression()),
382+
self.process_expression(ctx.multiplicativeExpression()))
383+
if isinstance(ctx, UVLPythonParser.MulExpressionContext):
384+
return Node(ASTOperation.MUL,
385+
self.process_expression(ctx.multiplicativeExpression()),
386+
self.process_expression(ctx.primaryExpression()))
387+
return Node(ASTOperation.DIV,
388+
self.process_expression(ctx.multiplicativeExpression()),
389+
self.process_expression(ctx.primaryExpression()))
390+
380391
def _process_expression_leaves(self, ctx: Any) -> Node:
381392
"""Helper to process literal leaves and primary expressions."""
382393
if isinstance(ctx, UVLPythonParser.FloatLiteralExpressionContext):

pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "flamapy-fm"
7-
version = "2.1.0.dev2"
7+
version = "2.5.0.dev0"
88
description = "flamapy-fm is a plugin to Flamapy module"
99
readme = "README.md"
1010
license = "GPL-3.0-or-later"
1111
authors = [{ name = "Flamapy", email = "flamapy@us.es" }]
1212
requires-python = ">=3.9"
1313
dependencies = [
14-
"flamapy-fw~=2.1.0.dev2",
15-
"uvlparser~=2.0.1.dev61",
14+
"flamapy-fw~=2.5.0.dev0",
15+
"uvlparser-=2.5.0.dev63",
1616
"afmparser~=1.0.3",
1717
]
1818

@@ -84,4 +84,4 @@ show_error_codes = true
8484
ignore_missing_imports = true
8585

8686
# Warn about unreachable or redundant code
87-
warn_unreachable = true
87+
warn_unreachable = true

0 commit comments

Comments
 (0)