Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [gmt-dev] parsing array definition in xText grammar

On Monday 17 July 2006 11:54, Sven Efftinge wrote:
> It's a bug. (Thanks for finding it ;-))
> In the meantime I think you could alternatively write:
>
> Program:
> 	ArrayLiteral ";"
> SimpleExpression :
> 	"true" | "false";
> ArrayLiteral :
> 		"[" ((elements+=SimpleExpression ",")* elements+=SimpleExpression)? "]";

Unfortunately, I had more of such rules and not all of them could be replaced 
that way. So, here is the fix.

regards,
Michal
Index: xtext.core/main/src/org/openarchitectureware/xtext/parser/EcoreModelFactory.java
===================================================================
RCS file: /cvsroot/architecturware/oaw_v4/xtext/xtext.core/main/src/org/openarchitectureware/xtext/parser/EcoreModelFactory.java,v
retrieving revision 1.3
diff -u -b -r1.3 EcoreModelFactory.java
--- xtext.core/main/src/org/openarchitectureware/xtext/parser/EcoreModelFactory.java	21 Jun 2006 18:44:16 -0000	1.3
+++ xtext.core/main/src/org/openarchitectureware/xtext/parser/EcoreModelFactory.java	18 Jul 2006 09:17:51 -0000
@@ -75,6 +75,14 @@
             Object object = args[i];
             if (object instanceof Token)
                 object = ((Token) object).getText();
+            if (object instanceof List) {
+            	List larg = (List) object;
+            	Iterator it = larg.iterator();
+            	while (it.hasNext()) {
+            		Object elem = it.next();
+            		if (elem==null) it.remove();
+            	}
+            }
             ef = ef.cloneWithVariable(new Variable("arg" + (i + 1), object));
         }
         Object o = ef.evaluate(expr1);

Back to the top