diff --git a/symbols/bound.py b/symbols/bound.py index f3da51303..7f6d32806 100644 --- a/symbols/bound.py +++ b/symbols/bound.py @@ -48,13 +48,13 @@ def make_node(lower, upper, lineno): syntax_error(lineno, 'Array bounds must be constants') return None - while isinstance(lower, SymbolVAR): + if isinstance(lower, SymbolVAR): lower = lower.value if lower is None: # semantic error syntax_error(lineno, "Unknown lower bound for array dimension") return - while isinstance(upper, SymbolVAR): + if isinstance(upper, SymbolVAR): upper = upper.value if upper is None: # semantic error syntax_error(lineno, "Unknown upper bound for array dimension") diff --git a/symbols/var.py b/symbols/var.py index 0bf5f6bfe..4c57f90cc 100644 --- a/symbols/var.py +++ b/symbols/var.py @@ -170,6 +170,9 @@ def value(self): """ An alias of default value, only available is class_ is CONST """ assert self.class_ == CLASS.const + if isinstance(self.default_value, SymbolVAR): + return self.default_value.value + return self.default_value @value.setter