Skip to content
Snippets Groups Projects
Commit 4fce12bd authored by Alexander Heidelbach's avatar Alexander Heidelbach
Browse files

Adjust paranthesis handling

parent 1a439352
No related merge requests found
......@@ -93,15 +93,16 @@ class ModelParser:
return expression
def _lexical_analysis(self) -> List[Node]:
token_pattern = r"(\w+@\w+|\w+|[+*()@])"
tokens = re.findall(token_pattern, self.modelstring)
def _lexical_analysis(self, input_string: str) -> List[Node]:
token_pattern = r"(\w+@\w+|\w+@\([^\)]+\)|\w+|[+*()])"
tokens = re.findall(token_pattern, input_string)
for expr in tokens:
if re.match(r"\w+@\w+", expr):
if re.match(r"\w+@(\w+|\()", expr):
param_name, model_name = expr.split("@")
token = Node(TokenType.T_EXT, value=model_name, ext_param=param_name)
self._nodeTokens.append(token)
elif re.match(r"\w+", expr):
token = Node(TokenType.T_MODEL, value=expr)
self._nodeTokens.append(token)
......@@ -114,12 +115,12 @@ class ModelParser:
else:
raise Exception("Invalid token: {}".format(expr))
self._nodeTokens.append(Node(TokenType.T_END))
return self._nodeTokens
def parse(self) -> Node:
tokens = self._lexical_analysis()
tokens = self._lexical_analysis(self.modelstring)
self._nodeTokens.append(Node(TokenType.T_END))
fNode = self.__baseParse(tokens)
self.__match(tokens, TokenType.T_END)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment