From 18aaf2fab1792a6f5448df7e00cc4cba5542fcf5 Mon Sep 17 00:00:00 2001 From: nsensfel Date: Thu, 17 Sep 2020 11:00:54 +0200 Subject: Resolves one of the grammar collisions. --- src/core/src/tonkadur/fate/v1/parser/FateParser.g4 | 52 +++++++++++++++++++--- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index 1d2213e..ab623a8 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -2248,23 +2248,60 @@ variable_list returns [VariableList result] @init { + Type next_type; + Origin origin; + + next_type = null; + origin = null; + $result = new VariableList(); } : ( WS* - L_PAREN WS* type WS+ new_reference_name WS* R_PAREN + ( + ( + ( + L_PAREN WS* type WS+ + ) + { + origin = + CONTEXT.get_origin_at + ( + ($L_PAREN.getLine()), + ($L_PAREN.getCharPositionInLine()) + ); + next_type = ($type.result); + } + ) + | + ( + something_else=. + { + origin = + CONTEXT.get_origin_at + ( + ($something_else.getLine()), + ($something_else.getCharPositionInLine()) + ); + + next_type = + WORLD.types().get + ( + origin, + ($something_else.text).substring(1).trim() + ); + } + ) + ) + WS* new_reference_name WS* R_PAREN { $result.add ( new Variable ( - CONTEXT.get_origin_at - ( - ($L_PAREN.getLine()), - ($L_PAREN.getCharPositionInLine()) - ), - ($type.result), + origin, + next_type, ($new_reference_name.result) ) ); @@ -2272,6 +2309,7 @@ returns [VariableList result] )* { } + | ; catch [final Throwable e] { -- cgit v1.2.3-70-g09d2