From a44f0ab364cb5769614c4c9ede626079d6031b20 Mon Sep 17 00:00:00 2001 From: arun3688 Date: Fri, 6 Dec 2024 11:44:29 +0100 Subject: [PATCH 1/3] allow ident's in array dimension --- OMPython/OMTypedParser.py | 7 +++---- tests/test_ArrayDimension.py | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/OMPython/OMTypedParser.py b/OMPython/OMTypedParser.py index 6e40195e6..56eb2e7c5 100644 --- a/OMPython/OMTypedParser.py +++ b/OMPython/OMTypedParser.py @@ -97,13 +97,12 @@ def evaluateExpression(s, loc, toks): try: # Evaluate the expression safely return eval(expr) - except Exception as e: - print(f"Error evaluating expression: {expr}") - return None + except NameError: + return expr # Number parsing (supports arithmetic expressions in dimensions) (e.g., {1 + 1, 1}) arrayDimension = infixNotation( - Word(nums), + Word(alphas + "_", alphanums + "_") | Word(nums), [ (Word("+-", exact=1), 1, opAssoc.RIGHT), (Word("*/", exact=1), 2, opAssoc.LEFT), diff --git a/tests/test_ArrayDimension.py b/tests/test_ArrayDimension.py index ac8d2dfad..5798bfc49 100644 --- a/tests/test_ArrayDimension.py +++ b/tests/test_ArrayDimension.py @@ -26,6 +26,12 @@ def test_ArrayDimension(self): result = omc.sendExpression("getComponents(A)") assert result[0][-1] == (6,7), f"array dimension does not match the expected value. Got: {result[0][-1]}, Expected: {(6, 7)}" + omc.sendExpression("loadString(\"model A Integer y = 5; Integer x[y+1,1+8]; end A;\")") + omc.sendExpression("getErrorString()") + + result = omc.sendExpression("getComponents(A)") + assert result[-1][-1] == ('y+1',9), f"array dimension does not match the expected value. Got: {result[-1][-1]}, Expected: {('y+1', 9)}" + omc.__del__() shutil.rmtree(tempdir, ignore_errors= True) From 3af03187e3b85c841a6a07547c1c3c7934d5e696 Mon Sep 17 00:00:00 2001 From: arun3688 Date: Fri, 6 Dec 2024 11:58:11 +0100 Subject: [PATCH 2/3] fix test --- tests/test_ArrayDimension.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_ArrayDimension.py b/tests/test_ArrayDimension.py index 5798bfc49..109d38cde 100644 --- a/tests/test_ArrayDimension.py +++ b/tests/test_ArrayDimension.py @@ -30,7 +30,7 @@ def test_ArrayDimension(self): omc.sendExpression("getErrorString()") result = omc.sendExpression("getComponents(A)") - assert result[-1][-1] == ('y+1',9), f"array dimension does not match the expected value. Got: {result[-1][-1]}, Expected: {('y+1', 9)}" + assert result[-1][-1] == ('y + 1', 10), f"array dimension does not match the expected value. Got: {result[-1][-1]}, Expected: {('y + 1', 10)}" omc.__del__() shutil.rmtree(tempdir, ignore_errors= True) From 74a6c160224442b9acf7d3f16ffe7e175df903f2 Mon Sep 17 00:00:00 2001 From: arun3688 Date: Fri, 6 Dec 2024 12:27:26 +0100 Subject: [PATCH 3/3] fix test --- tests/test_ArrayDimension.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_ArrayDimension.py b/tests/test_ArrayDimension.py index 109d38cde..8ecb268ce 100644 --- a/tests/test_ArrayDimension.py +++ b/tests/test_ArrayDimension.py @@ -26,7 +26,7 @@ def test_ArrayDimension(self): result = omc.sendExpression("getComponents(A)") assert result[0][-1] == (6,7), f"array dimension does not match the expected value. Got: {result[0][-1]}, Expected: {(6, 7)}" - omc.sendExpression("loadString(\"model A Integer y = 5; Integer x[y+1,1+8]; end A;\")") + omc.sendExpression("loadString(\"model A Integer y = 5; Integer x[y+1,1+9]; end A;\")") omc.sendExpression("getErrorString()") result = omc.sendExpression("getComponents(A)")