${project.basedir}/src/org/rascalmpl/library/Prelude.rsc
diff --git a/src/org/rascalmpl/ast/IASTVisitor.java b/src/org/rascalmpl/ast/IASTVisitor.java
index 97542a0e7de..72a48607b6b 100644
--- a/src/org/rascalmpl/ast/IASTVisitor.java
+++ b/src/org/rascalmpl/ast/IASTVisitor.java
@@ -699,6 +699,16 @@ public interface IASTVisitor {
public T visitSyntaxDefinitionLexical(SyntaxDefinition.Lexical x);
+ public T visitSyntaxRoleModifierData(SyntaxRoleModifier.Data x);
+
+ public T visitSyntaxRoleModifierKeyword(SyntaxRoleModifier.Keyword x);
+
+ public T visitSyntaxRoleModifierLayout(SyntaxRoleModifier.Layout x);
+
+ public T visitSyntaxRoleModifierLexical(SyntaxRoleModifier.Lexical x);
+
+ public T visitSyntaxRoleModifierSyntax(SyntaxRoleModifier.Syntax x);
+
public T visitTagDefault(Tag.Default x);
public T visitTagEmpty(Tag.Empty x);
@@ -719,6 +729,8 @@ public interface IASTVisitor {
public T visitTypeFunction(Type.Function x);
+ public T visitTypeModifier(Type.Modifier x);
+
public T visitTypeSelector(Type.Selector x);
public T visitTypeStructured(Type.Structured x);
diff --git a/src/org/rascalmpl/ast/NullASTVisitor.java b/src/org/rascalmpl/ast/NullASTVisitor.java
index aca2b779cb3..0e6197ed490 100644
--- a/src/org/rascalmpl/ast/NullASTVisitor.java
+++ b/src/org/rascalmpl/ast/NullASTVisitor.java
@@ -1381,6 +1381,26 @@ public T visitSyntaxDefinitionLexical(SyntaxDefinition.Lexical x) {
return null;
}
+ public T visitSyntaxRoleModifierData(SyntaxRoleModifier.Data x) {
+ return null;
+ }
+
+ public T visitSyntaxRoleModifierKeyword(SyntaxRoleModifier.Keyword x) {
+ return null;
+ }
+
+ public T visitSyntaxRoleModifierLayout(SyntaxRoleModifier.Layout x) {
+ return null;
+ }
+
+ public T visitSyntaxRoleModifierLexical(SyntaxRoleModifier.Lexical x) {
+ return null;
+ }
+
+ public T visitSyntaxRoleModifierSyntax(SyntaxRoleModifier.Syntax x) {
+ return null;
+ }
+
public T visitTagDefault(Tag.Default x) {
return null;
}
@@ -1421,6 +1441,10 @@ public T visitTypeFunction(Type.Function x) {
return null;
}
+ public T visitTypeModifier(Type.Modifier x) {
+ return null;
+ }
+
public T visitTypeSelector(Type.Selector x) {
return null;
}
diff --git a/src/org/rascalmpl/ast/SyntaxRoleModifier.java b/src/org/rascalmpl/ast/SyntaxRoleModifier.java
new file mode 100644
index 00000000000..ed9687d0c2d
--- /dev/null
+++ b/src/org/rascalmpl/ast/SyntaxRoleModifier.java
@@ -0,0 +1,410 @@
+/*******************************************************************************
+ * Copyright (c) 2009-2015 CWI
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * * Jurgen J. Vinju - Jurgen.Vinju@cwi.nl - CWI
+ * * Tijs van der Storm - Tijs.van.der.Storm@cwi.nl
+ * * Paul Klint - Paul.Klint@cwi.nl - CWI
+ * * Mark Hills - Mark.Hills@cwi.nl (CWI)
+ * * Arnold Lankamp - Arnold.Lankamp@cwi.nl
+ * * Michael Steindorfer - Michael.Steindorfer@cwi.nl - CWI
+ *******************************************************************************/
+package org.rascalmpl.ast;
+
+
+import io.usethesource.vallang.IConstructor;
+import io.usethesource.vallang.ISourceLocation;
+
+@SuppressWarnings(value = {"unused"})
+public abstract class SyntaxRoleModifier extends AbstractAST {
+ public SyntaxRoleModifier(ISourceLocation src, IConstructor node) {
+ super(src /* we forget node on purpose */);
+ }
+
+
+ public boolean hasArg() {
+ return false;
+ }
+
+ public org.rascalmpl.ast.Type getArg() {
+ throw new UnsupportedOperationException(this.src.toString());
+ }
+
+
+
+
+ public boolean isData() {
+ return false;
+ }
+
+ static public class Data extends SyntaxRoleModifier {
+ // Production: sig("Data",[arg("org.rascalmpl.ast.Type","arg")],breakable=false)
+
+
+ private final org.rascalmpl.ast.Type arg;
+
+ public Data(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type arg) {
+ super(src, node);
+
+ this.arg = arg;
+ }
+
+ @Override
+ public boolean isData() {
+ return true;
+ }
+
+ @Override
+ public T accept(IASTVisitor visitor) {
+ return visitor.visitSyntaxRoleModifierData(this);
+ }
+
+ @Override
+ protected void addForLineNumber(int $line, java.util.List $result) {
+ if (getLocation().getBeginLine() == $line) {
+ $result.add(this);
+ }
+ ISourceLocation $l;
+
+ $l = arg.getLocation();
+ if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) {
+ arg.addForLineNumber($line, $result);
+ }
+ if ($l.getBeginLine() > $line) {
+ return;
+ }
+
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Data)) {
+ return false;
+ }
+ Data tmp = (Data) o;
+ return true && tmp.arg.equals(this.arg) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return 431 + 67 * arg.hashCode() ;
+ }
+
+
+ @Override
+ public org.rascalmpl.ast.Type getArg() {
+ return this.arg;
+ }
+
+ @Override
+ public boolean hasArg() {
+ return true;
+ }
+
+ @Override
+ public Object clone() {
+ return newInstance(getClass(), src, (IConstructor) null , clone(arg));
+ }
+
+ }
+ public boolean isKeyword() {
+ return false;
+ }
+
+ static public class Keyword extends SyntaxRoleModifier {
+ // Production: sig("Keyword",[arg("org.rascalmpl.ast.Type","arg")],breakable=false)
+
+
+ private final org.rascalmpl.ast.Type arg;
+
+ public Keyword(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type arg) {
+ super(src, node);
+
+ this.arg = arg;
+ }
+
+ @Override
+ public boolean isKeyword() {
+ return true;
+ }
+
+ @Override
+ public T accept(IASTVisitor visitor) {
+ return visitor.visitSyntaxRoleModifierKeyword(this);
+ }
+
+ @Override
+ protected void addForLineNumber(int $line, java.util.List $result) {
+ if (getLocation().getBeginLine() == $line) {
+ $result.add(this);
+ }
+ ISourceLocation $l;
+
+ $l = arg.getLocation();
+ if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) {
+ arg.addForLineNumber($line, $result);
+ }
+ if ($l.getBeginLine() > $line) {
+ return;
+ }
+
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Keyword)) {
+ return false;
+ }
+ Keyword tmp = (Keyword) o;
+ return true && tmp.arg.equals(this.arg) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return 19 + 181 * arg.hashCode() ;
+ }
+
+
+ @Override
+ public org.rascalmpl.ast.Type getArg() {
+ return this.arg;
+ }
+
+ @Override
+ public boolean hasArg() {
+ return true;
+ }
+
+ @Override
+ public Object clone() {
+ return newInstance(getClass(), src, (IConstructor) null , clone(arg));
+ }
+
+ }
+ public boolean isLayout() {
+ return false;
+ }
+
+ static public class Layout extends SyntaxRoleModifier {
+ // Production: sig("Layout",[arg("org.rascalmpl.ast.Type","arg")],breakable=false)
+
+
+ private final org.rascalmpl.ast.Type arg;
+
+ public Layout(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type arg) {
+ super(src, node);
+
+ this.arg = arg;
+ }
+
+ @Override
+ public boolean isLayout() {
+ return true;
+ }
+
+ @Override
+ public T accept(IASTVisitor visitor) {
+ return visitor.visitSyntaxRoleModifierLayout(this);
+ }
+
+ @Override
+ protected void addForLineNumber(int $line, java.util.List $result) {
+ if (getLocation().getBeginLine() == $line) {
+ $result.add(this);
+ }
+ ISourceLocation $l;
+
+ $l = arg.getLocation();
+ if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) {
+ arg.addForLineNumber($line, $result);
+ }
+ if ($l.getBeginLine() > $line) {
+ return;
+ }
+
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Layout)) {
+ return false;
+ }
+ Layout tmp = (Layout) o;
+ return true && tmp.arg.equals(this.arg) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return 599 + 101 * arg.hashCode() ;
+ }
+
+
+ @Override
+ public org.rascalmpl.ast.Type getArg() {
+ return this.arg;
+ }
+
+ @Override
+ public boolean hasArg() {
+ return true;
+ }
+
+ @Override
+ public Object clone() {
+ return newInstance(getClass(), src, (IConstructor) null , clone(arg));
+ }
+
+ }
+ public boolean isLexical() {
+ return false;
+ }
+
+ static public class Lexical extends SyntaxRoleModifier {
+ // Production: sig("Lexical",[arg("org.rascalmpl.ast.Type","arg")],breakable=false)
+
+
+ private final org.rascalmpl.ast.Type arg;
+
+ public Lexical(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type arg) {
+ super(src, node);
+
+ this.arg = arg;
+ }
+
+ @Override
+ public boolean isLexical() {
+ return true;
+ }
+
+ @Override
+ public T accept(IASTVisitor visitor) {
+ return visitor.visitSyntaxRoleModifierLexical(this);
+ }
+
+ @Override
+ protected void addForLineNumber(int $line, java.util.List $result) {
+ if (getLocation().getBeginLine() == $line) {
+ $result.add(this);
+ }
+ ISourceLocation $l;
+
+ $l = arg.getLocation();
+ if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) {
+ arg.addForLineNumber($line, $result);
+ }
+ if ($l.getBeginLine() > $line) {
+ return;
+ }
+
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Lexical)) {
+ return false;
+ }
+ Lexical tmp = (Lexical) o;
+ return true && tmp.arg.equals(this.arg) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return 421 + 277 * arg.hashCode() ;
+ }
+
+
+ @Override
+ public org.rascalmpl.ast.Type getArg() {
+ return this.arg;
+ }
+
+ @Override
+ public boolean hasArg() {
+ return true;
+ }
+
+ @Override
+ public Object clone() {
+ return newInstance(getClass(), src, (IConstructor) null , clone(arg));
+ }
+
+ }
+ public boolean isSyntax() {
+ return false;
+ }
+
+ static public class Syntax extends SyntaxRoleModifier {
+ // Production: sig("Syntax",[arg("org.rascalmpl.ast.Type","arg")],breakable=false)
+
+
+ private final org.rascalmpl.ast.Type arg;
+
+ public Syntax(ISourceLocation src, IConstructor node , org.rascalmpl.ast.Type arg) {
+ super(src, node);
+
+ this.arg = arg;
+ }
+
+ @Override
+ public boolean isSyntax() {
+ return true;
+ }
+
+ @Override
+ public T accept(IASTVisitor visitor) {
+ return visitor.visitSyntaxRoleModifierSyntax(this);
+ }
+
+ @Override
+ protected void addForLineNumber(int $line, java.util.List $result) {
+ if (getLocation().getBeginLine() == $line) {
+ $result.add(this);
+ }
+ ISourceLocation $l;
+
+ $l = arg.getLocation();
+ if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) {
+ arg.addForLineNumber($line, $result);
+ }
+ if ($l.getBeginLine() > $line) {
+ return;
+ }
+
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Syntax)) {
+ return false;
+ }
+ Syntax tmp = (Syntax) o;
+ return true && tmp.arg.equals(this.arg) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return 487 + 797 * arg.hashCode() ;
+ }
+
+
+ @Override
+ public org.rascalmpl.ast.Type getArg() {
+ return this.arg;
+ }
+
+ @Override
+ public boolean hasArg() {
+ return true;
+ }
+
+ @Override
+ public Object clone() {
+ return newInstance(getClass(), src, (IConstructor) null , clone(arg));
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/org/rascalmpl/ast/Tag.java b/src/org/rascalmpl/ast/Tag.java
index b658316cc1e..a41e6d95b37 100644
--- a/src/org/rascalmpl/ast/Tag.java
+++ b/src/org/rascalmpl/ast/Tag.java
@@ -115,7 +115,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 431 + 67 * name.hashCode() + 19 * contents.hashCode() ;
+ return 787 + 397 * name.hashCode() + 191 * contents.hashCode() ;
}
@@ -198,7 +198,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 181 + 599 * name.hashCode() ;
+ return 977 + 173 * name.hashCode() ;
}
@@ -282,7 +282,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 101 + 421 * name.hashCode() + 277 * expression.hashCode() ;
+ return 541 + 491 * name.hashCode() + 331 * expression.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Tags.java b/src/org/rascalmpl/ast/Tags.java
index 7ee4dacb2a9..0ae276a0d6a 100644
--- a/src/org/rascalmpl/ast/Tags.java
+++ b/src/org/rascalmpl/ast/Tags.java
@@ -93,7 +93,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 487 + 797 * tags.hashCode() ;
+ return 167 + 809 * tags.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Target.java b/src/org/rascalmpl/ast/Target.java
index a84492f3059..ee0d7727651 100644
--- a/src/org/rascalmpl/ast/Target.java
+++ b/src/org/rascalmpl/ast/Target.java
@@ -81,7 +81,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 787 ;
+ return 109 ;
}
@@ -146,7 +146,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 397 + 191 * name.hashCode() ;
+ return 373 + 449 * name.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Toplevel.java b/src/org/rascalmpl/ast/Toplevel.java
index 80e0db16d93..3f066ee79ba 100644
--- a/src/org/rascalmpl/ast/Toplevel.java
+++ b/src/org/rascalmpl/ast/Toplevel.java
@@ -91,7 +91,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 977 + 173 * declaration.hashCode() ;
+ return 571 + 467 * declaration.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Type.java b/src/org/rascalmpl/ast/Type.java
index c7719d2047b..0c9f927251f 100644
--- a/src/org/rascalmpl/ast/Type.java
+++ b/src/org/rascalmpl/ast/Type.java
@@ -61,6 +61,13 @@ public boolean hasSymbol() {
public org.rascalmpl.ast.Sym getSymbol() {
throw new UnsupportedOperationException(this.src.toString());
}
+ public boolean hasModifier() {
+ return false;
+ }
+
+ public org.rascalmpl.ast.SyntaxRoleModifier getModifier() {
+ throw new UnsupportedOperationException(this.src.toString());
+ }
public boolean hasType() {
return false;
}
@@ -140,7 +147,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 541 + 491 * basic.hashCode() ;
+ return 691 + 701 * basic.hashCode() ;
}
@@ -214,7 +221,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 331 + 167 * type.hashCode() ;
+ return 19 + 137 * type.hashCode() ;
}
@@ -288,7 +295,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 809 + 109 * function.hashCode() ;
+ return 907 + 41 * function.hashCode() ;
}
@@ -307,6 +314,80 @@ public Object clone() {
return newInstance(getClass(), src, (IConstructor) null , clone(function));
}
+ }
+ public boolean isModifier() {
+ return false;
+ }
+
+ static public class Modifier extends Type {
+ // Production: sig("Modifier",[arg("org.rascalmpl.ast.SyntaxRoleModifier","modifier")],breakable=false)
+
+
+ private final org.rascalmpl.ast.SyntaxRoleModifier modifier;
+
+ public Modifier(ISourceLocation src, IConstructor node , org.rascalmpl.ast.SyntaxRoleModifier modifier) {
+ super(src, node);
+
+ this.modifier = modifier;
+ }
+
+ @Override
+ public boolean isModifier() {
+ return true;
+ }
+
+ @Override
+ public T accept(IASTVisitor visitor) {
+ return visitor.visitTypeModifier(this);
+ }
+
+ @Override
+ protected void addForLineNumber(int $line, java.util.List $result) {
+ if (getLocation().getBeginLine() == $line) {
+ $result.add(this);
+ }
+ ISourceLocation $l;
+
+ $l = modifier.getLocation();
+ if ($l.hasLineColumn() && $l.getBeginLine() <= $line && $l.getEndLine() >= $line) {
+ modifier.addForLineNumber($line, $result);
+ }
+ if ($l.getBeginLine() > $line) {
+ return;
+ }
+
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Modifier)) {
+ return false;
+ }
+ Modifier tmp = (Modifier) o;
+ return true && tmp.modifier.equals(this.modifier) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return 59 + 823 * modifier.hashCode() ;
+ }
+
+
+ @Override
+ public org.rascalmpl.ast.SyntaxRoleModifier getModifier() {
+ return this.modifier;
+ }
+
+ @Override
+ public boolean hasModifier() {
+ return true;
+ }
+
+ @Override
+ public Object clone() {
+ return newInstance(getClass(), src, (IConstructor) null , clone(modifier));
+ }
+
}
public boolean isSelector() {
return false;
@@ -362,7 +443,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 373 + 449 * selector.hashCode() ;
+ return 139 + 293 * selector.hashCode() ;
}
@@ -436,7 +517,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 571 + 467 * structured.hashCode() ;
+ return 773 + 293 * structured.hashCode() ;
}
@@ -510,7 +591,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 691 + 701 * symbol.hashCode() ;
+ return 421 + 467 * symbol.hashCode() ;
}
@@ -584,7 +665,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 19 + 137 * user.hashCode() ;
+ return 181 + 383 * user.hashCode() ;
}
@@ -658,7 +739,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 907 + 41 * typeVar.hashCode() ;
+ return 263 + 463 * typeVar.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/TypeArg.java b/src/org/rascalmpl/ast/TypeArg.java
index 7e7739e6839..7601cbce295 100644
--- a/src/org/rascalmpl/ast/TypeArg.java
+++ b/src/org/rascalmpl/ast/TypeArg.java
@@ -98,7 +98,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 59 + 823 * type.hashCode() ;
+ return 223 + 139 * type.hashCode() ;
}
@@ -182,7 +182,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 139 + 293 * type.hashCode() + 773 * name.hashCode() ;
+ return 347 + 557 * type.hashCode() + 131 * name.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/TypeVar.java b/src/org/rascalmpl/ast/TypeVar.java
index fe9ddcbbe12..3d0be0f0a41 100644
--- a/src/org/rascalmpl/ast/TypeVar.java
+++ b/src/org/rascalmpl/ast/TypeVar.java
@@ -108,7 +108,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 293 + 421 * name.hashCode() + 467 * bound.hashCode() ;
+ return 797 + 149 * name.hashCode() + 877 * bound.hashCode() ;
}
@@ -191,7 +191,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 181 + 383 * name.hashCode() ;
+ return 401 + 787 * name.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/UserType.java b/src/org/rascalmpl/ast/UserType.java
index 4412e457c6d..03ffc3ebeda 100644
--- a/src/org/rascalmpl/ast/UserType.java
+++ b/src/org/rascalmpl/ast/UserType.java
@@ -98,7 +98,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 263 + 463 * name.hashCode() ;
+ return 239 + 997 * name.hashCode() ;
}
@@ -184,7 +184,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 223 + 139 * name.hashCode() + 347 * parameters.hashCode() ;
+ return 641 + 701 * name.hashCode() + 13 * parameters.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Variable.java b/src/org/rascalmpl/ast/Variable.java
index cd729995ec5..34896631a9f 100644
--- a/src/org/rascalmpl/ast/Variable.java
+++ b/src/org/rascalmpl/ast/Variable.java
@@ -108,7 +108,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 557 + 131 * name.hashCode() + 797 * initial.hashCode() ;
+ return 179 + 797 * name.hashCode() + 101 * initial.hashCode() ;
}
@@ -191,7 +191,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 149 + 877 * name.hashCode() ;
+ return 17 + 797 * name.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Variant.java b/src/org/rascalmpl/ast/Variant.java
index 81f794323ca..7c144add988 100644
--- a/src/org/rascalmpl/ast/Variant.java
+++ b/src/org/rascalmpl/ast/Variant.java
@@ -127,7 +127,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 401 + 787 * name.hashCode() + 239 * arguments.hashCode() + 997 * keywordArguments.hashCode() ;
+ return 499 + 347 * name.hashCode() + 947 * arguments.hashCode() + 571 * keywordArguments.hashCode() ;
}
diff --git a/src/org/rascalmpl/ast/Visibility.java b/src/org/rascalmpl/ast/Visibility.java
index 153a25a5b71..31462f79b3a 100644
--- a/src/org/rascalmpl/ast/Visibility.java
+++ b/src/org/rascalmpl/ast/Visibility.java
@@ -74,7 +74,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 641 ;
+ return 907 ;
}
@@ -129,7 +129,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 701 ;
+ return 173 ;
}
@@ -184,7 +184,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 13 ;
+ return 269 ;
}
diff --git a/src/org/rascalmpl/ast/Visit.java b/src/org/rascalmpl/ast/Visit.java
index 31ee6b548a6..350e05d8495 100644
--- a/src/org/rascalmpl/ast/Visit.java
+++ b/src/org/rascalmpl/ast/Visit.java
@@ -117,7 +117,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 179 + 797 * subject.hashCode() + 101 * cases.hashCode() ;
+ return 349 + 251 * subject.hashCode() + 487 * cases.hashCode() ;
}
@@ -222,7 +222,7 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- return 17 + 797 * strategy.hashCode() + 499 * subject.hashCode() + 347 * cases.hashCode() ;
+ return 421 + 59 * strategy.hashCode() + 179 * subject.hashCode() + 197 * cases.hashCode() ;
}
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/AType.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/AType.rsc
index 2ec6fd344fa..7aa551674f5 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/AType.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/AType.rsc
@@ -224,7 +224,7 @@ bool asubtype(adt:aadt(str n, list[AType] l, SyntaxRole sr), AType b){
case acons(AType a, list[AType] _, list[Keyword] _):
if(isConcreteSyntaxRole(sr)) return asubtype(adt, a);
/////////
- case aadt(n, list[AType] r, _):
+ case aadt(n, list[AType] r, sr):
return asubtypeList(l, r);
case aadt("Tree", _, _):
if(isConcreteSyntaxRole(sr)) return true;
@@ -238,6 +238,38 @@ bool asubtype(adt:aadt(str n, list[AType] l, SyntaxRole sr), AType b){
fail;
}
+@synopsis{Semantics of asyntaxRoleModifier}
+@descripton{
+ Open modifiers are sub-types of the kinds that they modify _to_.
+ It's good to remember that _closed_ syntax role modifiers are already rewritten
+ to the type they modify to in ATypeBase
+}
+bool asubtype(\asyntaxRoleModifier(SyntaxRole role, \aparameter(_,_)), aadt(_, _, role)) = true;
+
+// All open syntax role modifiers are sub-types of `node`
+bool asubtype(\asyntaxRoleModifier(SyntaxRole role, \aparameter(_,_)), anode(_)) = true;
+
+@synopsis{These are the roles for values of the Tree type}
+private set[SyntaxRole] treeSyntaxRoles = {contextFreeSyntax(), lexicalSyntax(), keywordSyntax(), layoutSyntax()};
+
+// All context-free grammar-related syntax roles are sub-types of `Tree`
+bool asubtype(\asyntaxRoleModifier(SyntaxRole role, \aparameter(_,_)), aadt("Tree", [], dataSyntax())) = true
+ when role in treeSyntaxRoles;
+
+bool asubtype(asyntaxRoleModifier(SyntaxRole role, p1:aparameter(str name, _)),
+ asyntaxRoleModifier(role, aparameter(name, _))) = true;
+
+@synopsis{Free variables are subtypes in two directions.}
+@description{
+Here we see that the modifiers are not types themselves. A value
+can never have this type. They are only selectors/modifiers for certain type kinds
+when names become ambiguous or unbound.
+}
+bool asubtype(AType p:\aparameter(_), \asyntaxRoleModifier(SyntaxRole _, p)) = true;
+bool asubtype(\asyntaxRoleModifier(SyntaxRole _, AType p), p) = true;
+
+bool asubtype(a:\adt(str _, SyntaxRole role), asyntaxRoleModifier(role, AType par)) = asubtype(a, par);
+
bool asubtype(\start(AType a), AType b) = asubtype(a, b);
bool asubtype(i:\iter(AType s), AType b){
@@ -518,6 +550,46 @@ bool comparableList(list[AType] l, list[AType] r) {
return size(l) == size(r) && all(i <- index(l), comparable(l[i], r[i]));
}
+bool outerComparable(AType l, AType r){
+ return outerComparable1(l, r);
+}
+
+bool outerComparable1(AType l, l) = true;
+bool outerComparable1(alist(_), alist(_)) = true;
+bool outerComparable1(aset(_), aset(_)) = true;
+bool outerComparable1(abag(_), abag(_)) = true;
+bool outerComparable1(arel(atypeList(list[AType] ts1)), arel(atypeList(list[AType] ts2))) = size(ts1) == size(ts2);
+bool outerComparable1(arel(_), aset(_)) = true;
+bool outerComparable1(aset(_), arel(_)) = true;
+bool outerComparable1(alrel(atypeList(list[AType] ts1)), alrel(atypeList(list[AType] ts2))) = size(ts1) == size(ts2);
+bool outerComparable1(alrel(_), alist(_)) = true;
+bool outerComparable1(atuple(atypeList(ts1)), atuple(atypeList(ts2))) = size(ts1) == size(ts2);
+bool outerComparable1(amap(_,_), amap(_,_)) = true;
+
+bool outerComparable1(f1:afunc(AType r1, list[AType] p1, list[Keyword] _), f2:afunc(AType r2, list[AType] p2, list[Keyword] _))
+ = outerComparable(r1, r2) && (f1.varArgs ? (f2.varArgs ? outerComparable(p1, p2)
+ : outerComparable(p1[0..-1], p2))
+ : (f2.varArgs ? outerComparable(p1, p2[0..-1])
+ : outerComparable(p1, p2)));
+
+bool outerComparable1(afunc(AType r1, list[AType] p1, list[Keyword] _), acons(AType r2, list[AType] p2, list[Keyword] _))
+ = outerComparable(r1, r2) && outerComparable(p1, p2);
+bool outerComparable1(acons(AType r1, list[AType] p1, list[Keyword] _), afunc(AType r2, list[AType] p2, list[Keyword] _))
+ = outerComparable(r1, r2) && outerComparable(p1, p2);
+
+bool outerComparable1(aparameter(str pname1, AType bound1), aparameter(str pname2, AType bound2))
+ = outerComparable(bound1, bound2);
+
+bool outerComparable1(aadt(str adtName1, list[AType] parameters1, SyntaxRole syntaxRole1), areified(_)) = true;
+
+default bool outerComparable1(AType l, AType r) {
+ return comparable(l, r);
+}
+
+bool outerComparable(list[AType] l, list[AType] r) = all(i <- index(l), outerComparable(l[i], r[i])) when size(l) == size(r) && size(l) > 0;
+default bool outerComparable(list[AType] l, list[AType] r) = size(l) == 0 && size(r) == 0;
+
+
@doc{
.Synopsis
Check if two types are equivalent.
@@ -638,6 +710,7 @@ AType addADTLabel(AType a1, AType a2, AType adt){
return adt;
}
+
//AType alub(acons(AType la, list[AType] _, list[Keyword] _), acons(AType ra, list[AType] _, list[Keyword] _)) = alub(la,ra);
AType alub(acons(AType lr, list[AType] lp, list[Keyword] lkw), acons(AType rr, list[AType] rp, list[Keyword] rkw)) {
if(size(lp) == size(rp)){
@@ -684,6 +757,42 @@ AType alub(AType l, p:aparameter(n, b, closed=true)) = lb == b ? p : lb when !(
AType alub(areified(AType l), areified(AType r)) = areified(alub(l,r));
AType alub(areified(AType l), anode(_)) = anode([]);
+AType alub(\asyntaxRoleModifier(SyntaxRole role, \aparameter(_,_)), a:aadt(_, _, role)) = a;
+
+AType alub(a:aadt(_, _, role), \asyntaxRoleModifier(SyntaxRole role, \aparameter(_,_))) = a;
+
+AType alub(\asyntaxRoleModifier(_, \aparameter(_, _)), anode(l)) = \anode(l);
+AType alub(\anode(l), \asyntaxRoleModifier(_, \aparameter(_, _))) = \anode(l);
+
+AType alub(\asyntaxRoleModifier(SyntaxRole role, \aparameter(_, _)), aadt("Tree",[], dataSyntax()))
+ = aadt("Tree",[], dataSyntax())
+ when role in treeSyntaxRoles;
+
+AType alub(aadt("Tree",[], dataSyntax()), \asyntaxRoleModifier(SyntaxRole role, \aparameter(_, _)))
+ = aadt("Tree",[], dataSyntax())
+ when role in treeSyntaxRoles;
+
+AType alub(\asyntaxRoleModifier(SyntaxRole role, p:\aparameter(_,_)), \asyntaxRoleModifier(!role, p)) = p;
+
+// ---
+
+@synopsis{Different role, but same parameter, keep the parameter}
+AType alub(\asyntaxRoleModifier(SyntaxRole role, \aparameter(str x, _)),
+ \asyntaxRoleModifier(!role, \aparameter(x, _))) = \aparameter(x);
+
+@synopsis{node is the least above data on the left}
+AType alub(\asyntaxRoleModifier(dataSyntax(), \aparameter(str x, _)),
+ \asyntaxRoleModifier(SyntaxRole _, \aparameter(!x, _))) = anode([]);
+
+@synopsis{node is the least above data on the right}
+AType alub(\asyntaxRoleModifier(SyntaxRole _, \aparameter(str x, _)),
+ \asyntaxRoleModifier(dataSyntax(), \aparameter(!x, _))) = anode([]);
+
+@synopsis{Tree is the least above all others}
+AType alub(\asyntaxRoleModifier(SyntaxRole a, \aparameter(x, _)),
+ \asyntaxRoleModifier(SyntaxRole b, \aparameter(!x, _))) = aadt("Tree",[], dataSyntax())
+ when {a,b} < treeSyntaxRoles;
+
AType alub(l:\achar-class(_), r:\achar-class(_)) = union(l, r);
AType alub(\iter(AType l), \iter(AType r)) = aadt("Tree", [], dataSyntax()) when l != r;
@@ -852,5 +961,20 @@ public AType aglb(afunc(AType lr, list[AType] lp, list[Keyword] kwl), afunc(ATyp
return avalue();
}
+@synopsis{Node on the right, defaults to the syntax role modifier}
+AType aglb(a:asyntaxRoleModifier(SyntaxRole _, aparameter(_,_)), \anode(_)) = a;
+
+@synopsis{Node on the left, defaults to the syntax role modifier}
+AType aglb(\anode(_), a:asyntaxRoleModifier(SyntaxRole _, aparameter(_,_))) = a;
+
+@synopsis{Tree on the left, defaults to the syntax role modifier}
+AType aglb(a:asyntaxRoleModifier(SyntaxRole role, aparameter(_,_)), aadt("Tree", [], dataSyntax())) = a
+ when role in treeSyntaxRoles;
+
+@synopsis{Tree on the right, defaults to the syntax role modifier}
+AType aglb(aadt("Tree", [], dataSyntax()), a:asyntaxRoleModifier(SyntaxRole role, aparameter(_,_))) = a
+ when role in treeSyntaxRoles;
+
+
public list[AType] aglbList(list[AType] l, list[AType] r) = [aglb(l[idx],r[idx]) | idx <- index(l)] when size(l) == size(r);
public default list[AType] aglbList(list[AType] l, list[AType] r) = [avalue()];
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc
index 62e3fe12171..86f6c247ee8 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc
@@ -107,7 +107,6 @@ AType overloadedAType(rel[loc, IdRole, AType] overloads){
syntaxRole = overloadSyntaxRole(synRoles);
if(syntaxRole == illegalSyntax()) fail overloadedAType;
-
return aadt(adtName, adtParams, syntaxRole);
} else {
otypes = overloads<2>;
@@ -203,9 +202,17 @@ data SyntaxRole
| illegalSyntax()
;
+str prettySyntaxRole(str name, dataSyntax()) = "data[]";
+str prettySyntaxRole(str name, contextFreeSyntax()) = "syntax[]";
+str prettySyntaxRole(str name, lexicalSyntax()) = "lexical[]";
+str prettySyntaxRole(str name, keywordSyntax()) = "keyword[]";
+str prettySyntaxRole(str name, layoutSyntax()) = "layout[]";
+str prettySyntaxRole(str name, illegalSyntax()) = "?role?[]";
+
SyntaxRole overloadSyntaxRole(set[SyntaxRole] syntaxRoles) {
if({SyntaxRole sr} := syntaxRoles) return sr;
- if({SyntaxRole sr, dataSyntax()} := syntaxRoles) return sr;
+ // this hides ambiguity between data syntax and normal syntax roles, producing broken type assignments instead of clear errors
+ // if({SyntaxRole sr, dataSyntax()} := syntaxRoles) return sr;
return illegalSyntax();
}
@@ -356,6 +363,24 @@ data AType
| \start(AType atype)
;
+@synopsis{These are the syntax role modifier constructors}
+data AType = \asyntaxRoleModifier(SyntaxRole role, AType modified);
+
+@synopsis{this is the core modifier feature: force the "role", keep the rest}
+@description{
+Note that when the oldRole is `illegalSyntax()` it will be overwritten and corrected here,
+before that ends up triggering a user error. This happens in return types where
+a &T parameter was modifier to different roles in the signature earlier.
+}
+AType asyntaxRoleModifier(SyntaxRole newRole, aadt(n, ps, SyntaxRole _oldRole)) = aadt(n, ps, newRole);
+
+@synopsis{A modifier can resolve the conflict between names which are not uniquely resolvable, using the role}
+AType asyntaxRoleModifier(SyntaxRole role, overloadedAType({<_, _, match:aadt(_,_, role)>, *_})) = match;
+
+@synopsis{The outermost modifier eventually always wins, even on open modified types.}
+AType asyntaxRoleModifier(SyntaxRole role, asyntaxRoleModifier(_, AType s))
+ = asyntaxRoleModifier(role, s);
+
//public AType \iter-seps(AType atype, []) = \iter(atype);
//public AType \iter-star-seps(AType atype, []) = \iter-star(atype);
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeInstantiation.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeInstantiation.rsc
index 07df4c713a2..b846e4f1b58 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeInstantiation.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeInstantiation.rsc
@@ -201,6 +201,15 @@ public Bindings matchRascalTypeParams0(AType r, AType s, Bindings b) {
}
return b;
}
+
+ if (asyntaxRoleModifier(SyntaxRole role, p1) := r && asyntaxRoleModifier(role, p2) := s) {
+ return matchRascalTypeParams0(p1, p2, b);
+ }
+
+ if (asyntaxRoleModifier(_, _) := r && aparameter(_, _) := s) {
+ // the parameter misses a role
+ throw invalidMatch("Type parameter misses an explicit syntax role like data[] or syntax[]");
+ }
if(comparable(r, s)) return b;
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc
index 697640d2347..f1f72920954 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc
@@ -154,6 +154,12 @@ private str prettyAssoc(\aassoc()) = "assoc";
private str prettyAssoc(\a-non-assoc()) = "non-assoc";
private default str prettyAssoc(v) = "";
+str prettyAType(asyntaxRoleModifier(contextFreeSyntax(), AType arg)) = "syntax[]";
+str prettyAType(asyntaxRoleModifier(lexicalSyntax(), AType arg)) = "lexical[]";
+str prettyAType(asyntaxRoleModifier(dataSyntax(), AType arg)) = "data[]";
+str prettyAType(asyntaxRoleModifier(keywordSyntax(), AType arg)) = "keyword[]";
+str prettyAType(asyntaxRoleModifier(layoutSyntax(), AType arg)) = "layout[]";
+
@doc{Rascal abstract types to classic Symbols}
Symbol atype2symbol(AType tp){
//println("atype2symbol: ");
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectDeclaration.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectDeclaration.rsc
index 1d689c4441c..e82169c60eb 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectDeclaration.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectDeclaration.rsc
@@ -182,6 +182,7 @@ void collect(current: (Declaration) ` ( <{Expression ","}*
reportMissingNonTerminalCases(current, overloads, validOverloads, actuals, s);
next_cons:
for(ovl: <- overloads){
- if(acons(ret:aadt(adtName, list[AType] _, _), list[AType] fields, list[Keyword] kwFields) := tp){
+ if(acons(ret:aadt(adtName, list[AType] _, SyntaxRole sr), list[AType] fields, list[Keyword] kwFields) := tp){
try {
- validReturnTypeOverloads += ;
+ validReturnTypeOverloads += ;
validOverloads += ovl;
} catch checkFailed(list[FailMessage] _):
continue next_cons;
@@ -665,8 +665,8 @@ void collect(current: (Expression) ` ( <{Expression ","}*
}
return res;
}
- if(acons(ret:aadt(adtName, list[AType] _,_), list[AType] fields, list[Keyword] kwFields) := texp){
- res = computeADTType(expression, adtName, scope, ret, fields, kwFields, actuals, keywordArguments, [true | int _ <- index(fields)], s);
+ if(acons(ret:aadt(adtName, list[AType] _, SyntaxRole sr), list[AType] fields, list[Keyword] kwFields) := texp){
+ res = computeADTType(expression, adtName, sr, scope, ret, fields, kwFields, actuals, keywordArguments, [true | int _ <- index(fields)], s);
return res;
}
reportCallError(current, expression, actuals, keywordArguments, s);
@@ -859,8 +859,9 @@ private AType computeReturnType(Expression current, loc _src, AType retType, lis
iactualTypesU[i] = actual_i;
}
- try
+ try {
bindings = unifyRascalTypeParams(iformalTypesU, iactualTypesU, bindings);
+ }
catch invalidMatch(str reason):
s.report(error(current, reason));
//s.report(error(i < size(actuals) ? actuals[i] : current, reason))
@@ -875,8 +876,9 @@ private AType computeReturnType(Expression current, loc _src, AType retType, lis
}
checkExpressionKwArgs(kwFormals, keywordArguments, bindings, s);
- if(isEmpty(bindings))
+ if(isEmpty(bindings)) {
return retType;
+ }
try {
res = instantiateRascalTypeParameters(current, retTypeU, bindings, s);
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectOperators.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectOperators.rsc
index 6501a9ef264..607a19d1d2a 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectOperators.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectOperators.rsc
@@ -202,15 +202,24 @@ private AType do_computeSpliceType(Tree current, AType t1, Solver s){
// ---- asType
-void collect(current: (Expression)`[ ] `, Collector c){
+void collect(current: (Expression)`[ ] `, Collector c) {
+ scope = c.getScope();
+ roleIds = {lexicalId(), nonterminalId(), keywordId(), layoutId()};
+
+ collectNameInRoleContext(t, c, roleIds);
+ collect(e, c);
+
c.calculate("asType", current, [t, e],
AType(Solver s) {
- if(!(s.subtype(e, astr()) || s.subtype(e, aloc()))) s.report(error(e, "Expected `str` or `loc`, instead found %t", e));
- return s.getType(t);
+ if(!(s.subtype(e, astr()) || s.subtype(e, aloc()))) {
+ s.report(error(e, "Expected `str` or `loc`, instead found %t", e));
+ }
+ res = s.getType(t);
+ return res;
});
checkSupportedByParserGenerator(t, c);
- collect(t, e, c);
+
}
// ---- composition
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectPattern.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectPattern.rsc
index bdec5b2125c..982edc1f65f 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectPattern.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectPattern.rsc
@@ -389,6 +389,7 @@ void collect(current: (Pattern) `type ( ,
// ---- asType
void collect(current: (Pattern) `[ ] `, Collector c){
+ // only syntax types here, no data.
c.fact(current, tp);
// If pattern is of type string, the string will be parsed using the non-terminal tp.
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectStatement.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectStatement.rsc
index 94daa312cbb..8dcfae75b7f 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectStatement.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectStatement.rsc
@@ -707,6 +707,7 @@ private AType computeAssignmentRhsType(Statement current, AType lhsType, str ope
return avalue();
}
}
+
s.requireComparable(lhsType, resultType, error(current, "Cannot assign righthand side of type %t to lefthand side of type %t", resultType, lhsType));
return resultType;
}
@@ -733,7 +734,7 @@ private void checkAssignment(Statement current, (Assignable) `", name)){
+ if(c.isAlreadyDefined("", name)) {
c.use(name, variableRoles);
} else {
c.define(name.names[-1], variableId(), name, defLub([statement, name], AType(Solver s){
@@ -765,14 +766,16 @@ private void checkAssignment(Statement current, (Assignable) `` of assignment: " + msg));
}
}
- if(operator == "=")
+ if(operator == "=") {
s.requireComparable(asgType, nameType, error(current, "Incompatible type %t in assignment to %t variable %q", asgType, nameType, ""));
+ }
return asgType;
});
}
private AType computeReceiverType(Statement current, (Assignable) ``, loc scope, Solver s){
- return s.getType(name);
+ res = s.getType(name);
+ return res;
}
private AType computeReceiverType(Statement current, asg: (Assignable) ` [ ]`, loc scope, Solver s){
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectType.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectType.rsc
index 8c617e9c020..7eb46c541e6 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectType.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/CollectType.rsc
@@ -26,7 +26,7 @@ POSSIBILITY OF SUCH DAMAGE.
}
@contributor{Mark Hills - Mark.Hills@cwi.nl (CWI)}
@contributor{Paul Klint - Paul.Klint@cwi.nl (CWI)}
-@bootstrapParser
+// @bootstrapParser commented out for bootstrapping purposes
module lang::rascalcore::check::CollectType
/*
@@ -445,12 +445,16 @@ tuple[list[FailMessage] msgs, AType atype] handleUserType(QualifiedName n, AType
if(!isEmpty(neededTypeParams))
msgs += error(n, "Type variables in aliased type %t are unbound", aliased);
return;
+ } else if (overloadedAType({<_,_,aadt(str name, ps, _)>, *_}) := baseType) {
+ return <[error(n, " is not uniquely resolvable.",
+ causes=[info("", l) | <- baseType.overloads])],
+ aadt(name, ps, illegalSyntax())>;
} else {
return <[], baseType>;
}
}
-@doc{Convert Rascal user types into their abstract representation.}
+@synopsis{Convert Rascal user types into their abstract representation.}
void collect(current:(UserType) ``, Collector c){
= splitQualifiedName(n);
if(isEmpty(qualifier)){
@@ -473,6 +477,36 @@ void collect(current:(UserType) ``, Collector c){
});
}
+@synopsis{special casing without using defaults}
+void collectNameInRoleContext(Type t:!(Type) ``, Collector c, set[IdRole] roles) = collect(t, c);
+void collectNameInRoleContext(Type t: (Type) ``, Collector c, set[IdRole] roles) = collectNameInRoleContext(u, c, roles);
+
+// TODO: parametrized user types
+void collectNameInRoleContext(UserType u:!(UserType) ``, Collector c, set[IdRole] roles) = collect(u, c);
+
+@synopsis{Convert Rascal user types into their abstract representation, but with a given IdRole context}
+void collectNameInRoleContext(current:(UserType) ``, Collector c, set[IdRole] roles){
+ = splitQualifiedName(n);
+ if(isEmpty(qualifier)){
+ c.use(n, roles);
+ } else {
+ c.useQualified([qualifier, base], n, roles, roles + {moduleId()});
+ }
+
+ try {
+ = handleUserType(n, c.getType(n));
+ for(m <- msgs) c.report(m);
+ c.fact(current, result);
+ } catch TypeUnavailable():
+
+ c.calculate("type without parameters", current, [n],
+ AType(Solver s){
+ = handleUserType(n, s.getType(n));
+ for(m <- msgs) s.report(m);
+ return result;
+ });
+}
+
void collect(current:(UserType) `[ <{Type ","}+ ts> ]`, Collector c){
= splitQualifiedName(n);
if(isEmpty(qualifier)){
@@ -889,7 +923,55 @@ void collect(current: (TypeVar) `& \<: `, Collector c){
collect(tp, c);
}
-@doc{A parsing function, useful for generating test cases.}
+// syntax type modifiers
+
+void collect(current: (Type) `data[]`, Collector c)
+ = collectSyntaxRoleModifiers(dataSyntax(), current, tp, c, dataId());
+
+void collect(current: (Type) `syntax[]`, Collector c)
+ = collectSyntaxRoleModifiers(contextFreeSyntax(), current, tp, c, nonterminalId());
+
+void collect(current: (Type) `lexical[]`, Collector c)
+ = collectSyntaxRoleModifiers(lexicalSyntax(), current, tp, c, lexicalId());
+
+void collect(current: (Type) `keyword[]`, Collector c)
+ = collectSyntaxRoleModifiers(keywordSyntax(), current, tp, c, keywordId());
+
+void collect(current: (Type) `layout[]`, Collector c)
+ = collectSyntaxRoleModifiers(layoutSyntax(), current, tp, c, layoutId());
+
+private void collectSyntaxRoleModifiers(SyntaxRole role, Type current, tp:(Type) ``, Collector c, IdRole id) {
+ collectNameInRoleContext(tp, c, {id});
+ scope = c.getScope();
+
+ c.calculate("syntax role", current, [tp], AType(Solver s) {
+ AType par = s.getTypeInScope(tp, scope, {id});
+
+ if(!par is aparameter && !par is aadt && !par is asyntaxRoleModifier && overloadedAType({<_, _, aadt(_,_,_)>, *_}) !:= par) {
+ s.report(error(current, "Unable to handle the parameter kind in ``; only type parameters like `&T`, and abstract or concrete syntax names are understood."));
+ return par;
+ }
+ else {
+ return asyntaxRoleModifier(role, par);
+ }
+ });
+}
+
+// TODO: this is broken
+
+private void collectSyntaxRoleModifiers(SyntaxRole role, Type current, tp:(Type) `&`, Collector c, IdRole id) {
+ c.use(n, {typeVarId()});
+ scope = c.getScope();
+
+ collect(tp, c);
+
+ c.calculate("syntax role", current, [tp], AType(Solver s) {
+ return asyntaxRoleModifier(role, s.getType(tp));
+ });
+}
+
+
+@synopsis{A parsing function, useful for generating test cases.}
public Type parseType(str s) {
return parse(#Type, s);
}
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ComputeType.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ComputeType.rsc
index 23fdcd4a264..e6456779dc9 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ComputeType.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ComputeType.rsc
@@ -76,7 +76,10 @@ void checkNonVoid(Tree e, AType t, Solver s, str msg){
}
AType(Solver) makeGetSyntaxType(Type varType)
- = AType(Solver s) { Tree t = varType; return getSyntaxType(t, s); };
+ = AType(Solver s) {
+ Tree t = varType;
+ return getSyntaxType(t, s);
+ };
rel[loc key, IdRole idRole, AType atype]
checkAndFilterOverloads(Tree expr, rel[loc key, IdRole idRole, AType atype] overloads, AType expected, Solver s){
@@ -238,8 +241,8 @@ AType ternaryOp(str op, AType(Tree, AType, AType, AType, Solver) computeType, Tr
return computeType(current, t1, t2, t3, s);
}
-AType computeADTType(Tree current, str adtName, loc scope, AType retType, list[AType] formals, list[Keyword] kwFormals, actuals, keywordArguments, list[bool] identicalFormals, Solver s){
- //println("---- , identicalFormals: ");
+AType computeADTType(Tree current, str adtName, SyntaxRole role, loc scope, AType retType, list[AType] formals, list[Keyword] kwFormals, actuals, keywordArguments, list[bool] identicalFormals, Solver s){
+ // println("---- compute ADT type , identicalFormals: ");
requireFullyInstantiated(s, retType);
nactuals = size(actuals); nformals = size(formals);
if(nactuals != nformals){
@@ -269,14 +272,11 @@ AType computeADTType(Tree current, str adtName, loc scope, AType retType, list[A
for(int i <- index_formals){
if(overloadedAType(rel[loc, IdRole, AType] overloads) := actualTypes[i]){ // TODO only handles a single overloaded actual
- //println("computeADTType: ");
- //iprintln(overloads);
returnTypeForOverloadedActuals = {};
for( <- overloads){
try {
actualTypes[i] = tp;
- returnTypeForOverloadedActuals += ;
- //println("succeeds: ");
+ returnTypeForOverloadedActuals += ;
} catch checkFailed(list[FailMessage] _): /* continue with next overload */;
catch NoBinding(): /* continue with next overload */;
}
@@ -285,10 +285,18 @@ AType computeADTType(Tree current, str adtName, loc scope, AType retType, list[A
}
}
- return computeADTReturnType(current, adtName, scope, formalTypes, actualTypes, kwFormals, keywordArguments, identicalFormals, dontCare, isExpression, s);
+ return computeADTReturnType(current, adtName, role, scope, formalTypes, actualTypes, kwFormals, keywordArguments, identicalFormals, dontCare, isExpression, s);
}
-AType computeADTReturnType(Tree current, str adtName, loc scope, list[AType] formalTypes, list[AType] actualTypes, list[Keyword] kwFormals, keywordArguments, list[bool] identicalFormals, list[bool] dontCare, bool isExpression, Solver s){
+IdRole toIdRole(dataSyntax()) = dataId();
+IdRole toIdRole(contextFreeSyntax()) = nonterminalId();
+IdRole toIdRole(lexicalSyntax()) = lexicalId();
+IdRole toIdRole(keywordSyntax()) = keywordId();
+IdRole toIdRole(layoutSyntax()) = layoutId();
+
+
+AType computeADTReturnType(Tree current, str adtName, SyntaxRole role, loc scope, list[AType] formalTypes, list[AType] actualTypes, list[Keyword] kwFormals, keywordArguments, list[bool] identicalFormals, list[bool] dontCare, bool isExpression, Solver s){
+// println("--- computeADTReturnType in ");
Bindings bindings = ();
fsuffix = "f";
asuffix = "a";
@@ -317,7 +325,8 @@ AType computeADTReturnType(Tree current, str adtName, loc scope, list[AType] for
}
s.requireComparable(aiU, iformalsU[i], error(current, "Argument %v should have type %t, found %t", i, formalTypesU[i], aiU));
}
- adtType = s.getTypeInScopeFromName(adtName, scope, dataOrSyntaxRoles);
+
+ adtType = s.getTypeInScopeFromName(adtName, scope, {toIdRole(role)});
switch(keywordArguments){
case (KeywordArguments[Expression]) ``:
@@ -355,7 +364,7 @@ AType computeADTReturnType(Tree current, str adtName, loc scope, list[AType] for
} catch TypeUnavailable(): /* ignore */ ;
catch invalidInstantiation(str _msg): /* nothing to instantiate */ ;
try {
- res = deUnique(instantiateRascalTypeParameters(current, makeUniqueTypeParams(s.getTypeInScopeFromName(adtName, scope, dataOrSyntaxRoles), fsuffix), bindings, s));
+ res = deUnique(instantiateRascalTypeParameters(current, makeUniqueTypeParams(s.getTypeInScopeFromName(adtName, scope, {toIdRole(role)}), fsuffix), bindings, s));
res = visit(res){ case ap:aparameter(_,_) => unset(ap, "closed") };
return res;
} catch invalidInstantiation(str msg):
@@ -368,6 +377,7 @@ AType computeADTReturnType(Tree current, str adtName, loc scope, list[AType] for
} else {
return instantiateRascalTypeParameters(current, adtType, bindings, s);
}
+
return adtType;
}
@@ -1127,7 +1137,6 @@ private AType getSplicePatternType(Pattern current, Pattern argument, AType sub
}
AType instantiateAndCompare(Tree current, AType patType, AType subjectType, Solver s){
- // println("instantiateAndCompare: , , ");
if(!s.isFullyInstantiated(patType) || !s.isFullyInstantiated(subjectType)){
s.requireUnify(patType, subjectType, error(current, "Type of pattern could not be computed"));
s.fact(current, patType); // <====
@@ -1228,9 +1237,9 @@ private AType getPatternType0(current: (Pattern) ` ( <{Patte
validOverloads = {};
next_cons:
for(ovl: <- overloads){
- if(acons(adtType:aadt(adtName, list[AType] _, _), list[AType] fields, list[Keyword] kwFields) := tp){
+ if(acons(adtType:aadt(adtName, list[AType] _, SyntaxRole role), list[AType] fields, list[Keyword] kwFields) := tp){
try {
- validReturnTypeOverloads += ;
+ validReturnTypeOverloads += ;
validOverloads += ovl;
} catch _: checkFailed(list[FailMessage] _): {
continue next_cons;
@@ -1249,8 +1258,8 @@ private AType getPatternType0(current: (Pattern) ` ( <{Patte
}
}
- if(acons(adtType:aadt(adtName, list[AType] _, _), list[AType] fields, list[Keyword] kwFields) := texp){
- return computeADTType(current, adtName, scope, adtType, fields, kwFields, pats, keywordArguments, [true | int _ <- index(fields)], s);
+ if(acons(adtType:aadt(adtName, list[AType] _, SyntaxRole role), list[AType] fields, list[Keyword] kwFields) := texp){
+ return computeADTType(current, adtName, role, scope, adtType, fields, kwFields, pats, keywordArguments, [true | int _ <- index(fields)], s);
}
s.report(error(current, "No pattern constructor found for %q of expected type %t", expression, subjectType));
return avalue();
@@ -1364,7 +1373,9 @@ private AType getPatternType0(current: (Pattern) `type ( , ] `, AType subjectType, loc scope, Solver s){
getPatternType(p, avalue(), scope, s); // to force nested type calculations
- return s.getType(tp);
+ // only lookup nonterminal names, not data types
+ res = s.getTypeInScope(tp, scope, {lexicalId(), nonterminalId(), layoutId(), keywordId()});
+ return res;
}
// ---- anti
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/StaticTestingUtils.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/StaticTestingUtils.rsc
index e6f587d002b..2f5cf8e479e 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/StaticTestingUtils.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/StaticTestingUtils.rsc
@@ -175,23 +175,41 @@ bool checkModuleAndFilter(list[loc] mlocs, list[str] expected, bool matchAll = f
if(matchAll) {
return all(e <- expected, e in matched);
}
- throw abbrev("");
+
+ if (expected != []) {
+ println("Checked ,");
+ println("Expected one of these messages:
+ '*
+ '<}>");
+ println("But got only these messages:");
+ println(write([*msgs]));
+ return false;
+ }
+ else {
+ println("Checked ,");
+ println("Unexpected messages:");
+ println(write([*msgs]));
+ return false;
+ }
}
bool checkOK(str stmts) {
- errors = getErrorMessages(checkStatements(stmts));
- if(size(errors) == 0)
+ errors = getErrorMessages(checkStatements(stmts));
+ if(size(errors) == 0)
return true;
- throw errors;
+ println(write([*errors]));
+ return false;
}
bool checkModuleOK(loc moduleToCheck, PathConfig pathConfig = pathConfigForTesting()) = checkModulesOK([moduleToCheck], pathConfig = pathConfig);
bool checkModulesOK(list[loc] modulesToCheck, PathConfig pathConfig = pathConfigForTesting()) {
- errors = getErrorMessages(rascalTModelForLocs(modulesToCheck, rascalCompilerConfig(pathConfig)[infoModuleChecked=true][verbose=verbose], dummy_compile1));
- if(size(errors) == 0)
- return true;
- throw abbrev("");
+ errors = getErrorMessages(rascalTModelForLocs(modulesToCheck, rascalCompilerConfig(pathConfig)[infoModuleChecked=true][verbose=verbose], dummy_compile1));
+ if(size(errors) == 0)
+ return true;
+
+ println(write([*errors]));
+ return false;
}
bool checkModuleOK(str moduleText, PathConfig pathConfig = pathConfigForTesting()){
@@ -325,7 +343,9 @@ list[str] unexpectedTypeMsgs = [
"Expected a binary relation, found _",
"Constructor _ is overloaded",
"Expression _ is overloaded",
- "Base expression _ of field selection should have a unique type"
+ "Base expression _ of field selection should have a unique type",
+ "_ is not uniquely resolvable",
+ "Type parameter _ misses an explicit syntax role like data[_] or syntax[_]"
];
bool unexpectedTypeInModule(str moduleText, PathConfig pathConfig = getDefaultTestingPathConfig())
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxDeclarationTCTests.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxDeclarationTCTests.rsc
index 2397c13323d..aa7ac31be9d 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxDeclarationTCTests.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxDeclarationTCTests.rsc
@@ -597,10 +597,23 @@ test bool Issue465c(){
module Issue465c
import MMM;
data Exp = con(int n);
- void main() { Exp c = con(5); }
+ void main() { data[Exp] c = con(5); }
");
}
+test bool Issue465c2(){
+ writeModule("module MMM
+ lexical IntegerLiteral = [0-9]+;
+ start syntax Exp = con: IntegerLiteral;");
+ return unexpectedTypeInModule("
+ module Issue465c
+ import MMM;
+ data Exp = con(int n);
+ void main() { Exp c = con(5); } // should trigger an error
+ ");
+}
+
+
test bool Issue465d(){
writeModule("module MMM
lexical IntegerLiteral = [0-9]+;
@@ -609,7 +622,19 @@ test bool Issue465d(){
module Issue465d
import MMM;
data Exp = con(int n);
- void main() { MMM::Exp c = [MMM::Exp] \"3\"; }
+ void main() { MMM::Exp c = [MMM::Exp] \"3\"; } // should work because data Exp is not in MMM
+ ");
+}
+
+test bool Issue465d2(){
+ writeModule("module MMM
+ lexical IntegerLiteral = [0-9]+;
+ start syntax Exp = con: IntegerLiteral;");
+ return checkModuleOK("
+ module Issue465d
+ import MMM;
+ data Exp = con(int n);
+ void main() { syntax[Exp] c = [Exp] \"3\"; }
");
}
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxRoleTCTests.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxRoleTCTests.rsc
new file mode 100644
index 00000000000..85d5a2842eb
--- /dev/null
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/tests/SyntaxRoleTCTests.rsc
@@ -0,0 +1,129 @@
+@license{
+Copyright (c) 2018-2025, NWO-I CWI, Swat.engineering and Paul Klint
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+}
+module lang::rascalcore::check::tests::SyntaxRoleTCTests
+
+import lang::rascalcore::check::tests::StaticTestingUtils;
+
+private str exampleGrammar
+ = "lexical Z = [a-z]+;
+ 'syntax A = \"a\" | \"b\" \"b\";
+ 'layout L = [\\ ]*;
+ 'syntax E = \"e\";
+ 'data A = a();
+ 'data E = e();
+ '";
+
+test bool MiniTest() = checkModuleOK(
+ "module MiniTest
+ ' data E = e();
+ ' data[E] exData = e();
+ '"
+);
+
+test bool MiniTest2() = unexpectedTypeInModule(
+ "module MiniTest2
+ ' syntax E = \"foo\";
+ ' data E = e();
+ ' E exData = e(); // E is not uniquely resolvable
+ '"
+);
+
+test bool MiniTest3() = unexpectedTypeInModule(
+ "module MiniTest2
+ ' syntax E = \"foo\";
+ ' data E = e();
+ ' E exData = (E) `foo`; // E is not uniquely resolvable
+ '"
+);
+
+
+test bool OverloadingTest1() = checkModuleOK(
+ "module OverloadingTest1
+ ' syntax E = \"foo\";
+ ' data E = e();
+ ' data[E] ex1 = e(); // e() should have type data[E] not syntax[E]
+ ");
+
+test bool OverloadingTest2() = checkModuleOK(
+ "module OverloadingTest2
+ ' syntax E = \"e\";
+ ' data E = e();
+ ' syntax[E] ex2 = (E) `e`;
+ ");
+
+test bool OverloadingTest3() = unexpectedTypeInModule(
+ "module OverloadingTest3
+ ' syntax E = \"e\";
+ ' data E = e();
+ ' syntax[E] ex2 = e(); // this is not a compatible assignment
+ ");
+
+test bool OverloadingTest4() = unexpectedTypeInModule(
+ "module OverloadingTest4
+ ' syntax E = \"e\";
+ ' data E = e();
+ ' data[E] ex2 = (E) `e`; // this is not a compatible assignment
+ ");
+
+test bool TestSimpleModificationOfRoles() = checkModuleOK(
+ "module TestSimpleModificationOfRoles
+ '
+ ' data[E] exData = e();
+ ' syntax[E] exSyntax = (E) `e`;
+ "
+);
+
+test bool NoGenericUseOfModifiers() = checkModuleOK(
+ "module NoGenericUseOfModifiers
+ ' syntax E = \"e\";
+ ' data E = e();
+ ' data[E] implode(type[data[E]] grammar, syntax[E] tree) = e();
+ ' data[E] example = implode(#data[E], [E] \"e\");
+ ");
+
+test bool GenericUseOfModifiers() = checkModuleOK(
+ "module GenericUseOfModifiers
+ ' syntax E = \"e\";
+ ' data E = e();
+ ' data[E] tst = e();
+ ' data[&T] id(data[&T] a, syntax[&T] b) = a;
+ ' data[E] example = id(e(), (E) `e`);
+ ");
+
+test bool WrongGenericUseOfModifiers1() = unexpectedTypeInModule(
+ "module GenericUseOfModifiers
+ ' &T id(data[&T] a, syntax[&T] _b) = a; // return type is unmodified
+ ");
+
+test bool WrongGenericUseOfModifiers2() = unexpectedTypeInModule(
+ "module GenericUseOfModifiers
+ ' syntax E = \"e\";
+ ' data E = e();
+ ' &T id(data[&T] a, syntax[&T] _b) = a; // return type is unmodified
+ ' data[E] example = id(e(), (E) `e`);
+ ");
+
diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/compile/muRascal2Java/JGenie.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/compile/muRascal2Java/JGenie.rsc
index 9dc8be55f17..2caa491bf67 100644
--- a/src/org/rascalmpl/compiler/lang/rascalcore/compile/muRascal2Java/JGenie.rsc
+++ b/src/org/rascalmpl/compiler/lang/rascalcore/compile/muRascal2Java/JGenie.rsc
@@ -615,7 +615,24 @@ JGenie makeJGenie(MuModule m,
kwpTypeDecls += "$TS.declareKeywordParameter(,\"\", <_getATypeAccessor(kwpField.fieldType)>);\n";
}
}
- } else {
+ }
+ else if (asyntaxRoleModifier(SyntaxRole role, p:aparameter(_,_)) := s) {
+ // all other cases of this constructor have been rewritten to aadt(...) instances,
+ // or caused a fatal error in the type-checker.
+ isLocal = isEmpty(_getATypeAccessor(s));
+ if (isLocal) {
+ switch (role) {
+ case contextFreeSyntax() : r = "Syntax";
+ case lexicalSyntax() : r = "Lexical";
+ case keywordSyntax() : r = "Keyword";
+ case layoutSyntax() : r = "Layout";
+ case dataSyntax() : r = "Data";
+ }
+
+ return "$modifyTo()";
+ }
+ }
+ else {
tdecls += "public final io.usethesource.vallang.type.Type ;\t/**/\n";
tinits += " = ;\n";
}
diff --git a/src/org/rascalmpl/interpreter/matching/DescendantPattern.java b/src/org/rascalmpl/interpreter/matching/DescendantPattern.java
index eddb65b77dd..40ed64f7366 100644
--- a/src/org/rascalmpl/interpreter/matching/DescendantPattern.java
+++ b/src/org/rascalmpl/interpreter/matching/DescendantPattern.java
@@ -24,7 +24,6 @@
import org.rascalmpl.interpreter.result.ResultFactory;
import org.rascalmpl.types.TypeReachability;
import org.rascalmpl.values.iterators.IteratorFactory;
-
import io.usethesource.vallang.IValue;
import io.usethesource.vallang.type.Type;
import io.usethesource.vallang.type.TypeFactory;
diff --git a/src/org/rascalmpl/interpreter/result/ConstructorResult.java b/src/org/rascalmpl/interpreter/result/ConstructorResult.java
index f8577dee587..c7f15124ba6 100644
--- a/src/org/rascalmpl/interpreter/result/ConstructorResult.java
+++ b/src/org/rascalmpl/interpreter/result/ConstructorResult.java
@@ -34,6 +34,7 @@
import org.rascalmpl.interpreter.staticErrors.UnexpectedType;
import org.rascalmpl.interpreter.staticErrors.UnsupportedOperation;
import org.rascalmpl.interpreter.utils.Names;
+import org.rascalmpl.types.RascalType;
import org.rascalmpl.uri.URIUtil;
import org.rascalmpl.values.RascalValueFactory;
@@ -43,6 +44,7 @@
import io.usethesource.vallang.IWithKeywordParameters;
import io.usethesource.vallang.exceptions.UndeclaredAbstractDataTypeException;
import io.usethesource.vallang.type.Type;
+import io.usethesource.vallang.type.TypeFactory;
import io.usethesource.vallang.type.TypeStore;
public class ConstructorResult extends NodeResult {
@@ -106,6 +108,15 @@ public Result fieldAccess(String name, TypeStore store) {
else if (getValue().getUninstantiatedConstructorType().hasKeywordField(name, store)) {
return keywordFieldAccess(consType, name, store);
}
+ else if (getStaticType().isExternalType() && ((RascalType) getStaticType()).isRoleModifier()) {
+ // if it's an open syntax role, we always have the src field
+ if ("src".equals(name)) {
+ return keywordFieldAccess(consType, name, store);
+ }
+ else {
+ throw new UndeclaredField(name, getStaticType(), ctx.getCurrentAST());
+ }
+ }
else {
// If the keyword field was defined on any of the other constructors, then
// we see this as a dynamic error. (the programmer could not have known since
@@ -145,7 +156,10 @@ public Result positionalFieldAccess(Type consType, String
public Result keywordFieldAccess(Type consType, String name, TypeStore store) {
try {
if (getValue().mayHaveKeywordParameters()) {
- Type kwType = store.getKeywordParameterType(getValue().getUninstantiatedConstructorType(), name);
+ var ucons = getValue().getUninstantiatedConstructorType();
+ Type kwType = "src".equals(name)
+ ? TypeFactory.getInstance().sourceLocationType()
+ : store.getKeywordParameterType(ucons, name);
if (kwType == null) {
throw new UndeclaredKeywordParameter(getValue().getUninstantiatedConstructorType().getName(), name, ctx.getCurrentAST());
diff --git a/src/org/rascalmpl/interpreter/result/ResultFactory.java b/src/org/rascalmpl/interpreter/result/ResultFactory.java
index d30ecc94ef5..a25637f3ccb 100644
--- a/src/org/rascalmpl/interpreter/result/ResultFactory.java
+++ b/src/org/rascalmpl/interpreter/result/ResultFactory.java
@@ -240,6 +240,16 @@ else if (RascalType.isNonterminal(externalType)) {
else if (RascalType.isReified(externalType)) {
return new ConstructorResult(externalType, (IConstructor) value, ctx);
}
+ else if (RascalType.isRoleModifier(externalType)) {
+ RascalType modifier = (RascalType) externalType;
+ if (modifier.isDataRoleModifier()) {
+ return new ConstructorResult(externalType, (IConstructor) value, ctx);
+ }
+ else {
+ assert modifier.isSyntaxRoleModifier() || modifier.isLayoutRoleModifier() || modifier.isLexicalRoleModifier() || modifier.isKeywordRoleModifier() : "not expecting: " + externalType;
+ return new ConcreteSyntaxResult(externalType, (IConstructor) value, ctx);
+ }
+ }
return new ValueResult(declaredType, value, ctx);
}
diff --git a/src/org/rascalmpl/interpreter/staticErrors/JavaMethodNotFound.java b/src/org/rascalmpl/interpreter/staticErrors/JavaMethodNotFound.java
new file mode 100644
index 00000000000..c958c4b9ac6
--- /dev/null
+++ b/src/org/rascalmpl/interpreter/staticErrors/JavaMethodNotFound.java
@@ -0,0 +1,12 @@
+package org.rascalmpl.interpreter.staticErrors;
+
+import io.usethesource.vallang.ISourceLocation;
+
+public class JavaMethodNotFound extends StaticError {
+ private static final long serialVersionUID = 6760221123820619061L;
+
+ public JavaMethodNotFound(String message, ISourceLocation loc, Throwable cause) {
+ super(message, loc, cause);
+ }
+
+}
diff --git a/src/org/rascalmpl/interpreter/staticErrors/UnexpectedType.java b/src/org/rascalmpl/interpreter/staticErrors/UnexpectedType.java
index 706b97018ff..ca40ab85243 100644
--- a/src/org/rascalmpl/interpreter/staticErrors/UnexpectedType.java
+++ b/src/org/rascalmpl/interpreter/staticErrors/UnexpectedType.java
@@ -14,6 +14,10 @@
package org.rascalmpl.interpreter.staticErrors;
import org.rascalmpl.ast.AbstractAST;
+import org.rascalmpl.types.NonTerminalType;
+import org.rascalmpl.types.RascalType;
+import org.rascalmpl.values.parsetrees.SymbolAdapter;
+
import io.usethesource.vallang.ISourceLocation;
import io.usethesource.vallang.type.Type;
@@ -21,10 +25,22 @@ public class UnexpectedType extends StaticError {
private static final long serialVersionUID = -9009407553448884728L;
public UnexpectedType(Type expected, Type got, AbstractAST ast) {
- super("Expected " + expected + ", but got " + got, ast);
+ super(computeMessage(expected, got), ast);
}
public UnexpectedType(Type expected, Type got, ISourceLocation loc) {
- super("Expected " + expected + ", but got " + got, loc);
+ super(computeMessage(expected, got), loc);
+ }
+
+ private static String computeMessage(Type expected, Type got) {
+ if (expected.isAbstractData() && (got.isExternalType() && ((RascalType) got).isNonterminal())) {
+ return "Expected data[" + expected + "], but got " + (SymbolAdapter.isSort(((NonTerminalType) got).getSymbol()) ? "syntax" : "lexical") + "[" + got + "]";
+ }
+ else if (got.isAbstractData() && (expected.isExternalType() && ((RascalType) expected).isNonterminal())) {
+ return "Expected " + (SymbolAdapter.isSort(((NonTerminalType) expected).getSymbol()) ? "syntax" : "lexical") + "[" + expected + "], but got data[" + got + "]";
+ }
+ else {
+ return "Expected " + expected + ", but got " + got;
+ }
}
}
diff --git a/src/org/rascalmpl/interpreter/utils/JavaBridge.java b/src/org/rascalmpl/interpreter/utils/JavaBridge.java
index 2cb2ab389f2..de5a7ac9054 100644
--- a/src/org/rascalmpl/interpreter/utils/JavaBridge.java
+++ b/src/org/rascalmpl/interpreter/utils/JavaBridge.java
@@ -370,6 +370,22 @@ public Class> visitNonTerminal(RascalType type)
public Class> visitFunction(Type type) throws RuntimeException {
return IFunction.class;
}
+
+ @Override
+ public Class> visitRoleModifier(RascalType type) throws RuntimeException {
+ if (type.isDataRoleModifier()) {
+ return IConstructor.class;
+ }
+ else { // the others are parse tree kinds
+ assert type.isSyntaxRoleModifier() || type.isKeywordRoleModifier() || type.isLayoutRoleModifier() || type.isLexicalRoleModifier();
+ return ITree.class;
+ }
+ }
+
+ @Override
+ public Class> visitNamedPlaceHolder(RascalType THIS) throws RuntimeException {
+ return INode.class;
+ }
}
public synchronized Object getJavaClassInstance(FunctionDeclaration func, IRascalMonitor monitor, TypeStore store, PrintWriter out, PrintWriter err, Reader in, IEvaluatorContext ctx) {
diff --git a/src/org/rascalmpl/library/ParseTree.rsc b/src/org/rascalmpl/library/ParseTree.rsc
index 32124608040..06a7e206074 100644
--- a/src/org/rascalmpl/library/ParseTree.rsc
+++ b/src/org/rascalmpl/library/ParseTree.rsc
@@ -148,6 +148,9 @@ extend Type;
import Node;
import Set;
+extend Message;
+extend Type;
+
@synopsis{The Tree data type as produced by the parser.}
@description{
@@ -313,8 +316,12 @@ data Symbol
data Symbol // <19>
= \conditional(Symbol symbol, set[Condition] conditions);
-bool subtype(Symbol::\sort(_), Symbol::\adt("Tree", _)) = true;
-
+data Symbol
+ = \syntax(Symbol modified)
+ | \lexical(Symbol modified)
+ | \keyword(Symbol modified)
+ | \layout(Symbol modified)
+ ;
@synopsis{Datatype for declaring preconditions and postconditions on symbols}
@description{
@@ -335,6 +342,72 @@ data Condition
| \except(str label)
;
+Symbol \data(\syntax(Symbol s)) = \data(s);
+Symbol \data(\lexical(Symbol s)) = \data(s);
+Symbol \data(\keyword(Symbol s)) = \data(s);
+Symbol \data(\layout(Symbol s)) = \data(s);
+
+Symbol \data(a:adt(n, ps)) = a;
+Symbol \data(sort(n)) = \adt(n, []);
+Symbol \data(\parameterized-sort(n, ps)) = \adt(n, ps);
+Symbol \data(lex(n)) = \adt(n, []);
+Symbol \data(\parameterized-lex(n, ps)) = \adt(n, ps);
+Symbol \data(\keywords(n)) = \adt(n, []);
+Symbol \data(\layouts(n)) = \adt(n, []);
+
+Symbol \syntax(\data(Symbol s)) = \syntax(s);
+Symbol \syntax(\syntax(Symbol s)) = \syntax(s);
+Symbol \syntax(\lexical(Symbol s)) = \syntax(s);
+Symbol \syntax(\keyword(Symbol s)) = \syntax(s);
+Symbol \syntax(\layout(Symbol s)) = \syntax(s);
+
+Symbol \syntax(adt(n, [])) = sort(n);
+Symbol \syntax(adt(n, [p, *ps])) = \parameterized-sort(n, [p, *ps]);
+Symbol \syntax(lex(n)) = sort(n);
+Symbol \syntax(\parameterized-lex(n,ps)) = \parameterized-sort(n,ps);
+Symbol \syntax(sort(n)) = sort(n);
+Symbol \syntax(\parameterized-sort(n,ps))= \parameterized-sort(n,ps);
+Symbol \syntax(\keywords(n)) = sort(n);
+Symbol \syntax(\layouts(n)) = sort(n);
+
+Symbol \lexical(\data(Symbol s)) = \lexical(s);
+Symbol \lexical(\syntax(Symbol s)) = \lexical(s);
+Symbol \lexical(\lexical(Symbol s)) = \lexical(s);
+Symbol \lexical(\keyword(Symbol s)) = \lexical(s);
+Symbol \lexical(\layout(Symbol s)) = \lexical(s);
+
+Symbol \lexical(adt(n, [])) = lex(n);
+Symbol \lexical(adt(n, [p, *ps])) = \parameterized-lex(n, [p, *ps]);
+Symbol \lexical(lex(n)) = lex(n);
+Symbol \lexical(\parameterized-lex(n,ps)) = \parameterized-lex(n,ps);
+Symbol \lexical(sort(n)) = lex(n);
+Symbol \lexical(\parameterized-sort(n,ps))= \parameterized-lex(n,ps);
+Symbol \lexical(\keywords(n)) = lex(n);
+Symbol \lexical(\layouts(n)) = lex(n);
+
+Symbol \keyword(\data(Symbol s)) = \keyword(s);
+Symbol \keyword(\syntax(Symbol s)) = \keyword(s);
+Symbol \keyword(\lexical(Symbol s)) = \keyword(s);
+Symbol \keyword(\keyword(Symbol s)) = \keyword(s);
+Symbol \keyword(\layout(Symbol s)) = \keyword(s);
+
+Symbol \keyword(adt(n, [])) = keywords(n);
+Symbol \keyword(lex(n)) = keywords(n);
+Symbol \keyword(sort(n)) = keywords(n);
+Symbol \keyword(\keywords(n)) = keywords(n);
+Symbol \keyword(\layouts(n)) = keywords(n);
+
+Symbol \layout(\data(Symbol s)) = \layout(s);
+Symbol \layout(\syntax(Symbol s)) = \layout(s);
+Symbol \layout(\lexical(Symbol s)) = \layout(s);
+Symbol \layout(\keyword(Symbol s)) = \layout(s);
+Symbol \layout(\layout(Symbol s)) = \layout(s);
+
+Symbol \layout(adt(n, [])) = layouts(n);
+Symbol \layout(lex(n)) = layouts(n);
+Symbol \layout(sort(n)) = layouts(n);
+Symbol \layout(\keywords(n)) = layouts(n);
+Symbol \layout(\layouts(n)) = layouts(n);
@synopsis{Nested priority is flattened.}
Production priority(Symbol s, [*Production a, priority(Symbol _, list[Production] b), *Production c])
@@ -785,7 +858,8 @@ Can be imploded into:
data Exp = add(Exp, Exp);
```
}
-java &T<:value implode(type[&T<:value] t, Tree tree);
+// java data[&T] implode(type[data[&T]] t, syntax[&T] tree);
+java &T implode(type[&T] grammar, Tree tree);
@synopsis{Tree search result type for ((treeAt)).}
data TreeSearchResult[&T<:Tree] = treeFound(&T tree) | treeNotFound();
diff --git a/src/org/rascalmpl/library/Prelude.java b/src/org/rascalmpl/library/Prelude.java
index e9e486cc8a3..546f0129a45 100644
--- a/src/org/rascalmpl/library/Prelude.java
+++ b/src/org/rascalmpl/library/Prelude.java
@@ -2496,9 +2496,8 @@ protected Set findConstructors(Type type, java.lang.String constructorName
}
// REFLECT -- copy in {@link PreludeCompiled}
- public IValue implode(IValue reifiedType, IConstructor arg) {
- ITree tree = (ITree) arg;
-
+ public IValue implode(IValue reifiedType, IConstructor input) {
+ ITree tree = (ITree) input;
TypeStore store = new TypeStore();
Type type = tr.valueToType((IConstructor) reifiedType, store);
try {
diff --git a/src/org/rascalmpl/library/Type.java b/src/org/rascalmpl/library/Type.java
index 2c6b2c8adf9..9a59eb29854 100644
--- a/src/org/rascalmpl/library/Type.java
+++ b/src/org/rascalmpl/library/Type.java
@@ -11,33 +11,33 @@
*******************************************************************************/
package org.rascalmpl.library;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
+import java.util.HashSet;
import java.util.Map;
-import java.util.Map.Entry;
+import java.util.stream.Collectors;
import org.rascalmpl.exceptions.RuntimeExceptionFactory;
import org.rascalmpl.types.TypeReifier;
+import org.rascalmpl.values.IRascalValueFactory;
+import org.rascalmpl.values.RascalValueFactory;
import io.usethesource.vallang.IBool;
import io.usethesource.vallang.IConstructor;
import io.usethesource.vallang.IList;
import io.usethesource.vallang.IMap;
+import io.usethesource.vallang.INode;
+import io.usethesource.vallang.ISetWriter;
import io.usethesource.vallang.IString;
+import io.usethesource.vallang.ITuple;
import io.usethesource.vallang.IValue;
-import io.usethesource.vallang.IValueFactory;
import io.usethesource.vallang.exceptions.FactTypeUseException;
import io.usethesource.vallang.type.TypeFactory;
import io.usethesource.vallang.type.TypeStore;
public class Type {
- private final IValueFactory vf;
- private final IMap emptyMap;
+ private final IRascalValueFactory vf;
- public Type(IValueFactory vf) {
+ public Type(IRascalValueFactory vf) {
this.vf = vf;
- emptyMap = vf.mapWriter().done();
}
public IValue typeOf(IValue v) {
@@ -48,39 +48,44 @@ public IValue typeOf(IValue v) {
).get("symbol");
}
+ public IValue getConstructor(INode v) {
+ assert v.getType().isAbstractData();
+ io.usethesource.vallang.type.Type constructor = ((IConstructor) v).getUninstantiatedConstructorType();
+
+ TypeStore store = new TypeStore();
+ store.declareAbstractDataType(v.getType());
+ store.declareConstructor(constructor);
+
+ ISetWriter grammar = vf.setWriter();
+
+ new TypeReifier(vf).typeToValue(constructor, store, vf.map());
+
+ constructor.asProductions(vf, store, grammar, new HashSet<>());
+
+ return grammar.done().stream().map(t -> ((ITuple) t).get(1)).findFirst().get();
+ }
+
public IBool eq(IValue x, IValue y) {
return vf.bool(x.equals(y));
}
public IValue make(IValue type, IString name, IList args) {
- return make(type, name, args, emptyMap);
+ return make(type, name, args, vf.map());
}
public IValue make(IValue type, IString name, IList args, IMap keywordParameters) {
- TypeStore store = new TypeStore();
- io.usethesource.vallang.type.Type t = new TypeReifier(vf).valueToType((IConstructor) type, store);
-
- IValue[] children = new IValue[args.length()];
- io.usethesource.vallang.type.Type[] argsTypes = new io.usethesource.vallang.type.Type[args.length()];
+ Map kwMap = keywordParameters
+ .stream()
+ .map(v -> (ITuple) v)
+ .collect(Collectors.toMap(t -> ((IString) t.get(0)).getValue(), t -> t.get(1)));
- for (int i = 0; i < args.length(); i++) {
- children[i] = args.get(i);
- argsTypes[i] = children[i].getType();
- }
+ IValue[] children = args.stream().toArray(IValue[]::new);
- Map kwmap;
-
- if(keywordParameters.size() == 0){
- kwmap = Collections.emptyMap();
- } else {
-
- Iterator> iter = keywordParameters.entryIterator();
- kwmap = new HashMap();
- while(iter.hasNext()){
- Entry entry = iter.next();
- kwmap.put(((IString) entry.getKey()).getValue(), entry.getValue());
- }
- }
+ io.usethesource.vallang.type.Type[] argsTypes
+ = args.stream().map(v -> v.getType()).toArray(io.usethesource.vallang.type.Type[]::new);
+
+ TypeStore store = new TypeStore();
+ io.usethesource.vallang.type.Type t = new TypeReifier(vf).valueToType((IConstructor) type, store);
try {
@@ -88,15 +93,40 @@ public IValue make(IValue type, IString name, IList args, IMap keywordParameters
= store.lookupConstructor(t, name.getValue(), TypeFactory.getInstance().tupleType(argsTypes));
if (constructor == null) {
- // TODO: improve error messaging, using specialized exception
- throw RuntimeExceptionFactory.illegalArgument(type, null, null);
+ throw RuntimeExceptionFactory.illegalArgument(type, vf.string("one of the parameters of the constructor did not fit its declaration."));
}
- return vf.constructor(constructor, children, kwmap);
+
+ return vf.constructor(constructor, children, kwMap);
+
+ }
+ catch (FactTypeUseException e) {
+ throw RuntimeExceptionFactory.illegalArgument(type, vf.string("one of the (keyword) parameters of the constructor did not fit its declaration."));
+ }
+ }
+ public IValue make(IConstructor cons, IList args, IMap keywordParameters) {
+ Map kwMap = keywordParameters
+ .stream()
+ .map(v -> (ITuple) v)
+ .collect(Collectors.toMap(t -> ((IString) t.get(0)).getValue(), t -> t.get(1)));
+
+ if (cons.getConstructorType() == RascalValueFactory.Production_Default) {
+ // this is a parse tree production. We can just return the tree, and add the keyword parameters
+ return vf.appl(cons, args).asWithKeywordParameters().setParameters(kwMap);
+ }
+
+ if (cons.getConstructorType() != RascalValueFactory.Production_Cons) {
+ throw RuntimeExceptionFactory.illegalArgument(cons, "must be a cons or a prod rule.");
+ }
+
+ io.usethesource.vallang.type.Type constructor = new TypeReifier(vf).productionToConstructorType(cons);
+
+ try {
+ IValue[] children = args.stream().toArray(IValue[]::new);
+ return vf.constructor(constructor, children, kwMap);
}
catch (FactTypeUseException e) {
- // TODO: improve error messaging, using specialized exception
- throw RuntimeExceptionFactory.illegalArgument(type, null, null);
+ throw RuntimeExceptionFactory.illegalArgument(cons, vf.string("one of the parameters of the constructor did not fit its declaration."));
}
}
diff --git a/src/org/rascalmpl/library/Type.rsc b/src/org/rascalmpl/library/Type.rsc
index 7dd0f2cbe5e..0750afb597f 100644
--- a/src/org/rascalmpl/library/Type.rsc
+++ b/src/org/rascalmpl/library/Type.rsc
@@ -104,6 +104,8 @@ data Symbol // <4>
= \parameter(str name, Symbol bound)
;
+data Symbol = \data(Symbol modified); // to-data modifier
+
@synopsis{rel types are syntactic sugar for sets of tuples.}
Symbol \rel(list[Symbol] symbols)
= \set(\tuple(symbols));
@@ -112,7 +114,6 @@ Symbol \rel(list[Symbol] symbols)
Symbol \lrel(list[Symbol] symbols)
= \list(\tuple(symbols));
-
@synopsis{Overloaded/union types are always reduced to the least upper bound of their constituents.}
@description{
This semantics of overloading in the type system is essential to make sure it remains a _lattice_.
@@ -318,8 +319,31 @@ This function can be used to validate external data sources against a data type
java &T make(type[&T] typ, str name, list[value] args);
@javaClass{org.rascalmpl.library.Type}
-java &T make(type[&T] typ, str name, list[value] args, map[str,value] keywordArgs);
-
+public java &T make(type[&T] typ, str name, list[value] args, map[str,value] keywordArgs);
+
+@javaClass{org.rascalmpl.library.Type}
+@synopsis{Instantiate a constructor value by first declaring the given constructor and then applying it to the given parameters.}
+@description{
+The grammar rules for data constructors in a reified type can inversely be applied
+again to construct constructor instances, dynamically.
+
+This "reflection" feature is dynamically typed, so we don't know statically which type
+of ADT will come out.
+}
+@examples{
+This is the value-ified represention of `data Exp = constant(int n)`:
+```rascal-shell
+import Type;
+rule = cons(label("constant",adt("Exp",[])),[label("n",\int())],[],{});
+// we can use it to instantiate a constructor value that uses that rule:
+example = make(rule, [1]);
+// to illustrate we now construct it the normal way and test for equivalence:
+data Exp = constant(int n);
+example == constant(1);
+```
+}
+public java node make(Production cons, list[value] args, map[str,value] keywordArgs=());
+
@synopsis{Returns the dynamic type of a value as a ((Type-Symbol)).}
@description{
As opposed to the # operator, which produces the type of a value statically, this
@@ -343,4 +367,7 @@ Note that the `typeOf` function does not produce definitions, like the
reify operator `#` does, since values may escape the scope in which they've been constructed.
}
@javaClass{org.rascalmpl.library.Type}
-java Symbol typeOf(value v);
\ No newline at end of file
+public java Symbol typeOf(value v);
+
+@javaClass{org.rascalmpl.library.Type}
+public java Production getConstructor(&A <: node constructor);
diff --git a/src/org/rascalmpl/library/lang/rascal/ide/Outline.rsc b/src/org/rascalmpl/library/lang/rascal/ide/Outline.rsc
index d4a39d54a8c..e442c78a1d8 100644
--- a/src/org/rascalmpl/library/lang/rascal/ide/Outline.rsc
+++ b/src/org/rascalmpl/library/lang/rascal/ide/Outline.rsc
@@ -7,18 +7,6 @@ import Map;
import List;
import String;
-data FunctionDeclaration(loc src = |unknown:///|, str label="");
-
-data Declaration(loc src = |unknown:///|, str label="");
-
-data Name(loc src = |unknown:///|, str label="");
-
-data QualifiedName(loc src = |unknown:///|, str label="");
-
-data Signature(loc src = |unknown:///|, str label="");
-
-data Prod(loc src = |unknown:///|, str label="");
-
node outline(start[Module] m) = outline(m.top);
node outline(Module m) {
diff --git a/src/org/rascalmpl/library/lang/rascal/syntax/Rascal.rsc b/src/org/rascalmpl/library/lang/rascal/syntax/Rascal.rsc
index aa4b0feac1c..15c11f43ed2 100644
--- a/src/org/rascalmpl/library/lang/rascal/syntax/Rascal.rsc
+++ b/src/org/rascalmpl/library/lang/rascal/syntax/Rascal.rsc
@@ -157,10 +157,10 @@ lexical Name
;
syntax SyntaxDefinition
- = @Foldable \layout : Visibility vis "layout" Sym defined "=" Prod production ";"
- | @Foldable \lexical : "lexical" Sym defined "=" Prod production ";"
- | @Foldable \keyword : "keyword" Sym defined "=" Prod production ";"
- | @Foldable language: Start start "syntax" Sym defined "=" Prod production ";" ;
+ = @Foldable \layout : Visibility vis "layout" Sym!characterClass defined "=" Prod production ";"
+ | @Foldable \lexical : "lexical" Sym!characterClass defined "=" Prod production ";"
+ | @Foldable \keyword : "keyword" Sym!characterClass defined "=" Prod production ";"
+ | @Foldable language: Start start "syntax" Sym!characterClass defined "=" Prod production ";" ;
syntax Kind
= function: "function"
@@ -748,6 +748,15 @@ syntax Type
| selector: DataTypeSelector selector
| variable: TypeVar typeVar
| symbol: Sym!nonterminal!labeled!parametrized!parameter symbol
+ | modifier: SyntaxRoleModifier modifier
+ ;
+
+syntax SyntaxRoleModifier
+ = \syntax: "syntax" "[" Type arg "]"
+ | \lexical: "lexical" "[" Type arg "]"
+ | \layout: "layout" "[" Type arg "]"
+ | \keyword: "keyword" "[" Type arg "]"
+ | \data: "data" "[" Type arg "]"
;
syntax Declaration
diff --git a/src/org/rascalmpl/library/lang/rascal/syntax/RascalParser.java b/src/org/rascalmpl/library/lang/rascal/syntax/RascalParser.java
index c30d882dd57..f928934fa71 100644
--- a/src/org/rascalmpl/library/lang/rascal/syntax/RascalParser.java
+++ b/src/org/rascalmpl/library/lang/rascal/syntax/RascalParser.java
@@ -79,29 +79,113 @@ protected static IntegerKeyedHashMap _initDontNest() {
- _putDontNest(result, 5428, 5552);
+ _putDontNest(result, 1056, 1290);
- _putDontNest(result, 5428, 5541);
+ _putDontNest(result, 1056, 1202);
- _putDontNest(result, 5428, 5579);
+ _putDontNest(result, 1056, 1446);
- _putDontNest(result, 5428, 5573);
+ _putDontNest(result, 1056, 1268);
- _putDontNest(result, 5428, 5561);
+ _putDontNest(result, 1056, 1500);
- _putDontNest(result, 17430, 17421);
+ _putDontNest(result, 1056, 1331);
- _putDontNest(result, 17430, 17412);
+ _putDontNest(result, 1056, 1341);
- _putDontNest(result, 17430, 17403);
+ _putDontNest(result, 1056, 1389);
- _putDontNest(result, 17430, 17430);
+ _putDontNest(result, 1056, 1196);
- _putDontNest(result, 17430, 17440);
+ _putDontNest(result, 1056, 1280);
- _putDontNest(result, 8344, 8356);
+ _putDontNest(result, 1056, 1236);
- _putDontNest(result, 8344, 8344);
+ _putDontNest(result, 1056, 1321);
+
+ _putDontNest(result, 1056, 1311);
+
+ _putDontNest(result, 1056, 1259);
+
+ _putDontNest(result, 1056, 1475);
+
+ _putDontNest(result, 1056, 1300);
+
+ _putDontNest(result, 1056, 1245);
+
+ _putDontNest(result, 1056, 1465);
+
+ _putDontNest(result, 1056, 1216);
+
+ _putDontNest(result, 1056, 1380);
+
+ _putDontNest(result, 1056, 1437);
+
+ _putDontNest(result, 1056, 1226);
+
+ _putDontNest(result, 1056, 1408);
+
+ _putDontNest(result, 1056, 1485);
+
+ _putDontNest(result, 1056, 1362);
+
+ _putDontNest(result, 1056, 1428);
+
+ _putDontNest(result, 1056, 1371);
+
+ _putDontNest(result, 1056, 1209);
+
+ _putDontNest(result, 1056, 1350);
+
+ _putDontNest(result, 1056, 1399);
+
+ _putDontNest(result, 1056, 1418);
+
+ _putDontNest(result, 1056, 1456);
+
+ _putDontNest(result, 17335, 17526);
+
+ _putDontNest(result, 17335, 17508);
+
+ _putDontNest(result, 17335, 17517);
+
+ _putDontNest(result, 17335, 17499);
+
+ _putDontNest(result, 17335, 17536);
+
+ _putDontNest(result, 1345, 1446);
+
+ _putDontNest(result, 1345, 1500);
+
+ _putDontNest(result, 1345, 1475);
+
+ _putDontNest(result, 1345, 1465);
+
+ _putDontNest(result, 1345, 1341);
+
+ _putDontNest(result, 1345, 1389);
+
+ _putDontNest(result, 1345, 1408);
+
+ _putDontNest(result, 1345, 1371);
+
+ _putDontNest(result, 1345, 1380);
+
+ _putDontNest(result, 1345, 1437);
+
+ _putDontNest(result, 1345, 1485);
+
+ _putDontNest(result, 1345, 1362);
+
+ _putDontNest(result, 1345, 1428);
+
+ _putDontNest(result, 1345, 1350);
+
+ _putDontNest(result, 1345, 1399);
+
+ _putDontNest(result, 1345, 1418);
+
+ _putDontNest(result, 1345, 1456);
_putDontNest(result, 845, 1290);
@@ -173,16 +257,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 845, 1184);
- _putDontNest(result, 17297, 17421);
-
- _putDontNest(result, 17297, 17412);
-
- _putDontNest(result, 17297, 17403);
-
- _putDontNest(result, 17297, 17430);
-
- _putDontNest(result, 17297, 17440);
-
_putDontNest(result, 1290, 1290);
_putDontNest(result, 1290, 1500);
@@ -275,6 +349,20 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1573, 1584);
+ _putDontNest(result, 12528, 12485);
+
+ _putDontNest(result, 12528, 12654);
+
+ _putDontNest(result, 17326, 17526);
+
+ _putDontNest(result, 17326, 17508);
+
+ _putDontNest(result, 17326, 17517);
+
+ _putDontNest(result, 17326, 17499);
+
+ _putDontNest(result, 17326, 17536);
+
_putDontNest(result, 1451, 1500);
_putDontNest(result, 1451, 1475);
@@ -285,6 +373,16 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1451, 1456);
+ _putDontNest(result, 17402, 17526);
+
+ _putDontNest(result, 17402, 17508);
+
+ _putDontNest(result, 17402, 17517);
+
+ _putDontNest(result, 17402, 17499);
+
+ _putDontNest(result, 17402, 17536);
+
_putDontNest(result, 1563, 1573);
_putDontNest(result, 1563, 1563);
@@ -367,8 +465,20 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1375, 1456);
+ _putDontNest(result, 17494, 17536);
+
_putDontNest(result, 1480, 1500);
+ _putDontNest(result, 17343, 17526);
+
+ _putDontNest(result, 17343, 17508);
+
+ _putDontNest(result, 17343, 17517);
+
+ _putDontNest(result, 17343, 17499);
+
+ _putDontNest(result, 17343, 17536);
+
_putDontNest(result, 1403, 1446);
_putDontNest(result, 1403, 1500);
@@ -391,16 +501,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1403, 1456);
- _putDontNest(result, 17421, 17421);
-
- _putDontNest(result, 17421, 17412);
-
- _putDontNest(result, 17421, 17403);
-
- _putDontNest(result, 17421, 17430);
-
- _putDontNest(result, 17421, 17440);
-
_putDontNest(result, 1026, 1290);
_putDontNest(result, 1026, 1202);
@@ -465,6 +565,12 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1026, 1456);
+ _putDontNest(result, 17512, 17536);
+
+ _putDontNest(result, 12478, 12485);
+
+ _putDontNest(result, 12478, 12654);
+
_putDontNest(result, 1144, 1290);
_putDontNest(result, 1144, 1202);
@@ -581,13 +687,9 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1558, 1584);
- _putDontNest(result, 2792, 17393);
+ _putDontNest(result, 12545, 12485);
- _putDontNest(result, 2792, 17278);
-
- _putDontNest(result, 2792, 17294);
-
- _putDontNest(result, 2792, 17386);
+ _putDontNest(result, 12545, 12654);
_putDontNest(result, 1273, 1290);
@@ -633,77 +735,15 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1273, 1456);
- _putDontNest(result, 8339, 8356);
-
- _putDontNest(result, 10033, 871);
-
- _putDontNest(result, 1056, 1290);
-
- _putDontNest(result, 1056, 1202);
-
- _putDontNest(result, 1056, 1446);
-
- _putDontNest(result, 1056, 1268);
-
- _putDontNest(result, 1056, 1500);
-
- _putDontNest(result, 1056, 1331);
-
- _putDontNest(result, 1056, 1341);
-
- _putDontNest(result, 1056, 1389);
+ _putDontNest(result, 17393, 17526);
- _putDontNest(result, 1056, 1196);
+ _putDontNest(result, 17393, 17508);
- _putDontNest(result, 1056, 1280);
+ _putDontNest(result, 17393, 17517);
- _putDontNest(result, 1056, 1236);
+ _putDontNest(result, 17393, 17499);
- _putDontNest(result, 1056, 1321);
-
- _putDontNest(result, 1056, 1311);
-
- _putDontNest(result, 1056, 1259);
-
- _putDontNest(result, 1056, 1475);
-
- _putDontNest(result, 1056, 1300);
-
- _putDontNest(result, 1056, 1245);
-
- _putDontNest(result, 1056, 1465);
-
- _putDontNest(result, 1056, 1216);
-
- _putDontNest(result, 1056, 1380);
-
- _putDontNest(result, 1056, 1437);
-
- _putDontNest(result, 1056, 1226);
-
- _putDontNest(result, 1056, 1408);
-
- _putDontNest(result, 1056, 1485);
-
- _putDontNest(result, 1056, 1362);
-
- _putDontNest(result, 1056, 1428);
-
- _putDontNest(result, 1056, 1371);
-
- _putDontNest(result, 1056, 1209);
-
- _putDontNest(result, 1056, 1350);
-
- _putDontNest(result, 1056, 1399);
-
- _putDontNest(result, 1056, 1418);
-
- _putDontNest(result, 1056, 1456);
-
- _putDontNest(result, 17788, 1418);
-
- _putDontNest(result, 17407, 17440);
+ _putDontNest(result, 17393, 17536);
_putDontNest(result, 1231, 1290);
@@ -751,13 +791,13 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1231, 1456);
- _putDontNest(result, 12439, 12558);
+ _putDontNest(result, 2816, 17482);
- _putDontNest(result, 12439, 12389);
+ _putDontNest(result, 2816, 17374);
- _putDontNest(result, 12698, 12558);
+ _putDontNest(result, 2816, 17390);
- _putDontNest(result, 12698, 12389);
+ _putDontNest(result, 2816, 17489);
_putDontNest(result, 1321, 1290);
@@ -797,15 +837,15 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1321, 1456);
- _putDontNest(result, 17306, 17421);
+ _putDontNest(result, 17526, 17526);
- _putDontNest(result, 17306, 17412);
+ _putDontNest(result, 17526, 17508);
- _putDontNest(result, 17306, 17403);
+ _putDontNest(result, 17526, 17517);
- _putDontNest(result, 17306, 17430);
+ _putDontNest(result, 17526, 17499);
- _putDontNest(result, 17306, 17440);
+ _putDontNest(result, 17526, 17536);
_putDontNest(result, 1311, 1290);
@@ -845,11 +885,69 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1311, 1456);
- _putDontNest(result, 10038, 12558);
+ _putDontNest(result, 1073, 1290);
+
+ _putDontNest(result, 1073, 1202);
+
+ _putDontNest(result, 1073, 1446);
+
+ _putDontNest(result, 1073, 1268);
+
+ _putDontNest(result, 1073, 1500);
- _putDontNest(result, 10038, 12395);
+ _putDontNest(result, 1073, 1331);
- _putDontNest(result, 10038, 12389);
+ _putDontNest(result, 1073, 1341);
+
+ _putDontNest(result, 1073, 1389);
+
+ _putDontNest(result, 1073, 1196);
+
+ _putDontNest(result, 1073, 1280);
+
+ _putDontNest(result, 1073, 1236);
+
+ _putDontNest(result, 1073, 1321);
+
+ _putDontNest(result, 1073, 1311);
+
+ _putDontNest(result, 1073, 1259);
+
+ _putDontNest(result, 1073, 1475);
+
+ _putDontNest(result, 1073, 1300);
+
+ _putDontNest(result, 1073, 1245);
+
+ _putDontNest(result, 1073, 1465);
+
+ _putDontNest(result, 1073, 1216);
+
+ _putDontNest(result, 1073, 1380);
+
+ _putDontNest(result, 1073, 1437);
+
+ _putDontNest(result, 1073, 1226);
+
+ _putDontNest(result, 1073, 1408);
+
+ _putDontNest(result, 1073, 1485);
+
+ _putDontNest(result, 1073, 1362);
+
+ _putDontNest(result, 1073, 1428);
+
+ _putDontNest(result, 1073, 1371);
+
+ _putDontNest(result, 1073, 1209);
+
+ _putDontNest(result, 1073, 1350);
+
+ _putDontNest(result, 1073, 1399);
+
+ _putDontNest(result, 1073, 1418);
+
+ _putDontNest(result, 1073, 1456);
_putDontNest(result, 1259, 1290);
@@ -913,80 +1011,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1475, 1485);
- _putDontNest(result, 17412, 17421);
-
- _putDontNest(result, 17412, 17412);
-
- _putDontNest(result, 17412, 17403);
-
- _putDontNest(result, 17412, 17430);
-
- _putDontNest(result, 17412, 17440);
-
- _putDontNest(result, 1073, 1290);
-
- _putDontNest(result, 1073, 1202);
-
- _putDontNest(result, 1073, 1446);
-
- _putDontNest(result, 1073, 1268);
-
- _putDontNest(result, 1073, 1500);
-
- _putDontNest(result, 1073, 1331);
-
- _putDontNest(result, 1073, 1341);
-
- _putDontNest(result, 1073, 1389);
-
- _putDontNest(result, 1073, 1196);
-
- _putDontNest(result, 1073, 1280);
-
- _putDontNest(result, 1073, 1236);
-
- _putDontNest(result, 1073, 1321);
-
- _putDontNest(result, 1073, 1311);
-
- _putDontNest(result, 1073, 1259);
-
- _putDontNest(result, 1073, 1475);
-
- _putDontNest(result, 1073, 1300);
-
- _putDontNest(result, 1073, 1245);
-
- _putDontNest(result, 1073, 1465);
-
- _putDontNest(result, 1073, 1216);
-
- _putDontNest(result, 1073, 1380);
-
- _putDontNest(result, 1073, 1437);
-
- _putDontNest(result, 1073, 1226);
-
- _putDontNest(result, 1073, 1408);
-
- _putDontNest(result, 1073, 1485);
-
- _putDontNest(result, 1073, 1362);
-
- _putDontNest(result, 1073, 1428);
-
- _putDontNest(result, 1073, 1371);
-
- _putDontNest(result, 1073, 1209);
-
- _putDontNest(result, 1073, 1350);
-
- _putDontNest(result, 1073, 1399);
-
- _putDontNest(result, 1073, 1418);
-
- _putDontNest(result, 1073, 1456);
-
_putDontNest(result, 1240, 1290);
_putDontNest(result, 1240, 1446);
@@ -1039,7 +1063,7 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1553, 1584);
- _putDontNest(result, 17425, 17440);
+ _putDontNest(result, 9060, 17457);
_putDontNest(result, 1355, 1446);
@@ -1155,17 +1179,9 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1413, 1456);
- _putDontNest(result, 8356, 8356);
-
- _putDontNest(result, 17390, 17421);
-
- _putDontNest(result, 17390, 17412);
+ _putDontNest(result, 12627, 802);
- _putDontNest(result, 17390, 17403);
-
- _putDontNest(result, 17390, 17430);
-
- _putDontNest(result, 17390, 17440);
+ _putDontNest(result, 12627, 871);
_putDontNest(result, 1263, 1290);
@@ -1303,6 +1319,8 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1245, 1456);
+ _putDontNest(result, 8448, 8448);
+
_putDontNest(result, 1035, 1290);
_putDontNest(result, 1035, 1202);
@@ -1367,6 +1385,16 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1035, 1456);
+ _putDontNest(result, 8431, 8448);
+
+ _putDontNest(result, 10134, 12485);
+
+ _putDontNest(result, 10134, 12654);
+
+ _putDontNest(result, 10134, 12491);
+
+ _putDontNest(result, 9032, 17457);
+
_putDontNest(result, 1584, 1584);
_putDontNest(result, 937, 1290);
@@ -1493,9 +1521,23 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1216, 1456);
- _putDontNest(result, 12382, 12558);
+ _putDontNest(result, 12794, 12485);
+
+ _putDontNest(result, 12794, 12654);
- _putDontNest(result, 12382, 12389);
+ _putDontNest(result, 12535, 12485);
+
+ _putDontNest(result, 12535, 12654);
+
+ _putDontNest(result, 17508, 17526);
+
+ _putDontNest(result, 17508, 17508);
+
+ _putDontNest(result, 17508, 17517);
+
+ _putDontNest(result, 17508, 17499);
+
+ _putDontNest(result, 17508, 17536);
_putDontNest(result, 1331, 1500);
@@ -1527,16 +1569,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1331, 1456);
- _putDontNest(result, 12432, 12558);
-
- _putDontNest(result, 12432, 12389);
-
- _putDontNest(result, 17398, 17440);
-
- _putDontNest(result, 12456, 12558);
-
- _putDontNest(result, 12456, 12389);
-
_putDontNest(result, 1341, 1500);
_putDontNest(result, 1341, 1475);
@@ -1565,6 +1597,8 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1341, 1456);
+ _putDontNest(result, 17521, 17536);
+
_putDontNest(result, 917, 1290);
_putDontNest(result, 917, 1202);
@@ -1631,67 +1665,9 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 917, 1418);
- _putDontNest(result, 917, 1456);
-
- _putDontNest(result, 917, 1184);
-
- _putDontNest(result, 17342, 17421);
-
- _putDontNest(result, 17342, 17412);
-
- _putDontNest(result, 17342, 17403);
-
- _putDontNest(result, 17342, 17430);
-
- _putDontNest(result, 17342, 17440);
-
- _putDontNest(result, 12531, 802);
-
- _putDontNest(result, 12531, 871);
-
- _putDontNest(result, 1345, 1446);
-
- _putDontNest(result, 1345, 1500);
-
- _putDontNest(result, 1345, 1475);
-
- _putDontNest(result, 1345, 1465);
-
- _putDontNest(result, 1345, 1341);
-
- _putDontNest(result, 1345, 1389);
-
- _putDontNest(result, 1345, 1408);
-
- _putDontNest(result, 1345, 1371);
-
- _putDontNest(result, 1345, 1380);
-
- _putDontNest(result, 1345, 1437);
-
- _putDontNest(result, 1345, 1485);
-
- _putDontNest(result, 1345, 1362);
-
- _putDontNest(result, 1345, 1428);
-
- _putDontNest(result, 1345, 1350);
-
- _putDontNest(result, 1345, 1399);
-
- _putDontNest(result, 1345, 1418);
-
- _putDontNest(result, 1345, 1456);
-
- _putDontNest(result, 17239, 17421);
-
- _putDontNest(result, 17239, 17412);
-
- _putDontNest(result, 17239, 17403);
-
- _putDontNest(result, 17239, 17430);
+ _putDontNest(result, 917, 1456);
- _putDontNest(result, 17239, 17440);
+ _putDontNest(result, 917, 1184);
_putDontNest(result, 1389, 1500);
@@ -1771,21 +1747,27 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1221, 1456);
- _putDontNest(result, 17403, 17421);
+ _putDontNest(result, 8436, 8448);
+
+ _putDontNest(result, 8436, 8436);
+
+ _putDontNest(result, 9077, 17457);
- _putDontNest(result, 17403, 17412);
+ _putDontNest(result, 17884, 1418);
- _putDontNest(result, 17403, 17403);
+ _putDontNest(result, 1165, 2820);
- _putDontNest(result, 17403, 17430);
+ _putDontNest(result, 9046, 17457);
- _putDontNest(result, 17403, 17440);
+ _putDontNest(result, 5460, 5584);
- _putDontNest(result, 12503, 12558);
+ _putDontNest(result, 5460, 5573);
- _putDontNest(result, 12503, 12389);
+ _putDontNest(result, 5460, 5605);
- _putDontNest(result, 1165, 2796);
+ _putDontNest(result, 5460, 5593);
+
+ _putDontNest(result, 5460, 5611);
_putDontNest(result, 1108, 1290);
@@ -1925,31 +1907,13 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1326, 1456);
- _putDontNest(result, 1408, 1500);
-
- _putDontNest(result, 1408, 1475);
-
- _putDontNest(result, 1408, 1465);
-
- _putDontNest(result, 1408, 1408);
-
- _putDontNest(result, 1408, 1485);
-
- _putDontNest(result, 1408, 1399);
-
- _putDontNest(result, 1408, 1418);
-
- _putDontNest(result, 1408, 1456);
-
- _putDontNest(result, 17285, 17421);
-
- _putDontNest(result, 17285, 17412);
+ _putDontNest(result, 12512, 12485);
- _putDontNest(result, 17285, 17403);
+ _putDontNest(result, 12512, 12654);
- _putDontNest(result, 17285, 17430);
+ _putDontNest(result, 12552, 12485);
- _putDontNest(result, 17285, 17440);
+ _putDontNest(result, 12552, 12654);
_putDontNest(result, 1226, 1290);
@@ -2001,6 +1965,22 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1226, 1456);
+ _putDontNest(result, 1408, 1500);
+
+ _putDontNest(result, 1408, 1475);
+
+ _putDontNest(result, 1408, 1465);
+
+ _putDontNest(result, 1408, 1408);
+
+ _putDontNest(result, 1408, 1485);
+
+ _putDontNest(result, 1408, 1399);
+
+ _putDontNest(result, 1408, 1418);
+
+ _putDontNest(result, 1408, 1456);
+
_putDontNest(result, 961, 1290);
_putDontNest(result, 961, 1202);
@@ -2095,12 +2075,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1362, 1456);
- _putDontNest(result, 12887, 12558);
-
- _putDontNest(result, 12887, 12395);
-
- _putDontNest(result, 12887, 12389);
-
_putDontNest(result, 1428, 1500);
_putDontNest(result, 1428, 1475);
@@ -2111,10 +2085,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1428, 1456);
- _putDontNest(result, 12659, 12558);
-
- _putDontNest(result, 12659, 12389);
-
_putDontNest(result, 1485, 1500);
_putDontNest(result, 1485, 1485);
@@ -2155,8 +2125,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1304, 1456);
- _putDontNest(result, 17440, 17440);
-
_putDontNest(result, 1181, 1290);
_putDontNest(result, 1181, 1202);
@@ -2285,9 +2253,29 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1098, 1456);
- _putDontNest(result, 12449, 12558);
+ _putDontNest(result, 17503, 17536);
+
+ _putDontNest(result, 1394, 1446);
+
+ _putDontNest(result, 1394, 1500);
+
+ _putDontNest(result, 1394, 1475);
+
+ _putDontNest(result, 1394, 1465);
+
+ _putDontNest(result, 1394, 1437);
+
+ _putDontNest(result, 1394, 1408);
+
+ _putDontNest(result, 1394, 1399);
+
+ _putDontNest(result, 1394, 1485);
+
+ _putDontNest(result, 1394, 1428);
+
+ _putDontNest(result, 1394, 1418);
- _putDontNest(result, 12449, 12389);
+ _putDontNest(result, 1394, 1456);
_putDontNest(result, 1371, 1500);
@@ -2367,37 +2355,15 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1209, 1456);
- _putDontNest(result, 1394, 1446);
-
- _putDontNest(result, 1394, 1500);
-
- _putDontNest(result, 1394, 1475);
-
- _putDontNest(result, 1394, 1465);
-
- _putDontNest(result, 1394, 1437);
-
- _putDontNest(result, 1394, 1408);
-
- _putDontNest(result, 1394, 1399);
-
- _putDontNest(result, 1394, 1485);
-
- _putDontNest(result, 1394, 1428);
-
- _putDontNest(result, 1394, 1418);
-
- _putDontNest(result, 1394, 1456);
-
- _putDontNest(result, 17247, 17421);
+ _putDontNest(result, 17517, 17526);
- _putDontNest(result, 17247, 17412);
+ _putDontNest(result, 17517, 17508);
- _putDontNest(result, 17247, 17403);
+ _putDontNest(result, 17517, 17517);
- _putDontNest(result, 17247, 17430);
+ _putDontNest(result, 17517, 17499);
- _putDontNest(result, 17247, 17440);
+ _putDontNest(result, 17517, 17536);
_putDontNest(result, 1196, 1290);
@@ -2453,10 +2419,6 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1196, 1456);
- _putDontNest(result, 12590, 12558);
-
- _putDontNest(result, 12590, 12389);
-
_putDontNest(result, 1012, 1290);
_putDontNest(result, 1012, 1202);
@@ -2527,6 +2489,14 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1012, 1184);
+ _putDontNest(result, 10129, 871);
+
+ _putDontNest(result, 12755, 12485);
+
+ _putDontNest(result, 12755, 12654);
+
+ _putDontNest(result, 17536, 17536);
+
_putDontNest(result, 1280, 1290);
_putDontNest(result, 1280, 1500);
@@ -2567,9 +2537,15 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1280, 1456);
- _putDontNest(result, 12416, 12558);
+ _putDontNest(result, 17499, 17526);
+
+ _putDontNest(result, 17499, 17508);
+
+ _putDontNest(result, 17499, 17517);
+
+ _putDontNest(result, 17499, 17499);
- _putDontNest(result, 12416, 12389);
+ _putDontNest(result, 17499, 17536);
_putDontNest(result, 1249, 1290);
@@ -2617,6 +2593,22 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1249, 1456);
+ _putDontNest(result, 12983, 12485);
+
+ _putDontNest(result, 12983, 12654);
+
+ _putDontNest(result, 12983, 12491);
+
+ _putDontNest(result, 17381, 17526);
+
+ _putDontNest(result, 17381, 17508);
+
+ _putDontNest(result, 17381, 17517);
+
+ _putDontNest(result, 17381, 17499);
+
+ _putDontNest(result, 17381, 17536);
+
_putDontNest(result, 1350, 1500);
_putDontNest(result, 1350, 1475);
@@ -2655,6 +2647,16 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1460, 1456);
+ _putDontNest(result, 17438, 17526);
+
+ _putDontNest(result, 17438, 17508);
+
+ _putDontNest(result, 17438, 17517);
+
+ _putDontNest(result, 17438, 17499);
+
+ _putDontNest(result, 17438, 17536);
+
_putDontNest(result, 1399, 1500);
_putDontNest(result, 1399, 1475);
@@ -2785,6 +2787,10 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1418, 1456);
+ _putDontNest(result, 12686, 12485);
+
+ _putDontNest(result, 12686, 12654);
+
_putDontNest(result, 1456, 1500);
_putDontNest(result, 1456, 1475);
@@ -2835,17 +2841,9 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1316, 1456);
- _putDontNest(result, 17416, 17440);
-
- _putDontNest(result, 17230, 17421);
+ _putDontNest(result, 12599, 12485);
- _putDontNest(result, 17230, 17412);
-
- _putDontNest(result, 17230, 17403);
-
- _putDontNest(result, 17230, 17430);
-
- _putDontNest(result, 17230, 17440);
+ _putDontNest(result, 12599, 12654);
_putDontNest(result, 1236, 1290);
@@ -2895,6 +2893,16 @@ protected static IntegerKeyedHashMap _initDontNest() {
_putDontNest(result, 1236, 1456);
+ _putDontNest(result, 17486, 17526);
+
+ _putDontNest(result, 17486, 17508);
+
+ _putDontNest(result, 17486, 17517);
+
+ _putDontNest(result, 17486, 17499);
+
+ _putDontNest(result, 17486, 17536);
+
_putDontNest(result, 1384, 1446);
_putDontNest(result, 1384, 1500);
@@ -2934,11 +2942,31 @@ protected static IntegerMap _initDontNestGroups() {
++resultStoreId;
- result.putUnsafe(2792, resultStoreId);
+ result.putUnsafe(9060, resultStoreId);
+ result.putUnsafe(9032, resultStoreId);
+ result.putUnsafe(9077, resultStoreId);
+ result.putUnsafe(9046, resultStoreId);
++resultStoreId;
- result.putUnsafe(8339, resultStoreId);
- result.putUnsafe(8356, resultStoreId);
+ result.putUnsafe(2816, resultStoreId);
+ ++resultStoreId;
+
+ result.putUnsafe(17326, resultStoreId);
+ result.putUnsafe(17402, resultStoreId);
+ result.putUnsafe(17343, resultStoreId);
+ result.putUnsafe(17393, resultStoreId);
+ result.putUnsafe(17526, resultStoreId);
+ result.putUnsafe(17335, resultStoreId);
+ result.putUnsafe(17508, resultStoreId);
+ result.putUnsafe(17517, resultStoreId);
+ result.putUnsafe(17438, resultStoreId);
+ result.putUnsafe(17486, resultStoreId);
+ result.putUnsafe(17499, resultStoreId);
+ result.putUnsafe(17381, resultStoreId);
+ ++resultStoreId;
+
+ result.putUnsafe(8448, resultStoreId);
+ result.putUnsafe(8431, resultStoreId);
++resultStoreId;
result.putUnsafe(1584, resultStoreId);
@@ -2952,10 +2980,6 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1553, resultStoreId);
++resultStoreId;
- result.putUnsafe(1403, resultStoreId);
- result.putUnsafe(1394, resultStoreId);
- ++resultStoreId;
-
result.putUnsafe(1451, resultStoreId);
result.putUnsafe(1446, resultStoreId);
result.putUnsafe(1465, resultStoreId);
@@ -2965,13 +2989,6 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1456, resultStoreId);
++resultStoreId;
- result.putUnsafe(17407, resultStoreId);
- result.putUnsafe(17425, resultStoreId);
- result.putUnsafe(17398, resultStoreId);
- result.putUnsafe(17440, resultStoreId);
- result.putUnsafe(17416, resultStoreId);
- ++resultStoreId;
-
result.putUnsafe(1331, resultStoreId);
++resultStoreId;
@@ -2982,27 +2999,30 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1012, resultStoreId);
++resultStoreId;
+ result.putUnsafe(17494, resultStoreId);
+ result.putUnsafe(17512, resultStoreId);
+ result.putUnsafe(17521, resultStoreId);
+ result.putUnsafe(17503, resultStoreId);
+ result.putUnsafe(17536, resultStoreId);
+ ++resultStoreId;
+
result.putUnsafe(1470, resultStoreId);
result.putUnsafe(1485, resultStoreId);
++resultStoreId;
- result.putUnsafe(10038, resultStoreId);
- result.putUnsafe(12887, resultStoreId);
+ result.putUnsafe(8436, resultStoreId);
++resultStoreId;
result.putUnsafe(1413, resultStoreId);
++resultStoreId;
- result.putUnsafe(5428, resultStoreId);
- ++resultStoreId;
-
result.putUnsafe(1231, resultStoreId);
result.putUnsafe(1240, resultStoreId);
result.putUnsafe(1263, resultStoreId);
result.putUnsafe(1249, resultStoreId);
++resultStoreId;
- result.putUnsafe(12531, resultStoreId);
+ result.putUnsafe(12627, resultStoreId);
++resultStoreId;
result.putUnsafe(1408, resultStoreId);
@@ -3017,24 +3037,12 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1273, resultStoreId);
++resultStoreId;
- result.putUnsafe(8344, resultStoreId);
+ result.putUnsafe(1165, resultStoreId);
++resultStoreId;
result.putUnsafe(1475, resultStoreId);
++resultStoreId;
- result.putUnsafe(12456, resultStoreId);
- result.putUnsafe(12503, resultStoreId);
- result.putUnsafe(12659, resultStoreId);
- result.putUnsafe(12449, resultStoreId);
- result.putUnsafe(12590, resultStoreId);
- result.putUnsafe(12416, resultStoreId);
- result.putUnsafe(12439, resultStoreId);
- result.putUnsafe(12698, resultStoreId);
- result.putUnsafe(12432, resultStoreId);
- result.putUnsafe(12382, resultStoreId);
- ++resultStoreId;
-
result.putUnsafe(1285, resultStoreId);
result.putUnsafe(1294, resultStoreId);
result.putUnsafe(1304, resultStoreId);
@@ -3053,24 +3061,17 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1366, resultStoreId);
++resultStoreId;
- result.putUnsafe(17297, resultStoreId);
- result.putUnsafe(17421, resultStoreId);
- result.putUnsafe(17390, resultStoreId);
- result.putUnsafe(17403, resultStoreId);
- result.putUnsafe(17430, resultStoreId);
- result.putUnsafe(17285, resultStoreId);
- result.putUnsafe(17247, resultStoreId);
- result.putUnsafe(17230, resultStoreId);
- result.putUnsafe(17306, resultStoreId);
- result.putUnsafe(17412, resultStoreId);
- result.putUnsafe(17342, resultStoreId);
- result.putUnsafe(17239, resultStoreId);
+ result.putUnsafe(5460, resultStoreId);
++resultStoreId;
result.putUnsafe(1341, resultStoreId);
result.putUnsafe(1350, resultStoreId);
++resultStoreId;
+ result.putUnsafe(10134, resultStoreId);
+ result.putUnsafe(12983, resultStoreId);
+ ++resultStoreId;
+
result.putUnsafe(1268, resultStoreId);
result.putUnsafe(1245, resultStoreId);
result.putUnsafe(1236, resultStoreId);
@@ -3086,7 +3087,20 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1300, resultStoreId);
++resultStoreId;
- result.putUnsafe(1165, resultStoreId);
+ result.putUnsafe(1403, resultStoreId);
+ result.putUnsafe(1394, resultStoreId);
+ ++resultStoreId;
+
+ result.putUnsafe(12528, resultStoreId);
+ result.putUnsafe(12478, resultStoreId);
+ result.putUnsafe(12545, resultStoreId);
+ result.putUnsafe(12755, resultStoreId);
+ result.putUnsafe(12686, resultStoreId);
+ result.putUnsafe(12599, resultStoreId);
+ result.putUnsafe(12794, resultStoreId);
+ result.putUnsafe(12535, resultStoreId);
+ result.putUnsafe(12512, resultStoreId);
+ result.putUnsafe(12552, resultStoreId);
++resultStoreId;
result.putUnsafe(1280, resultStoreId);
@@ -3122,10 +3136,10 @@ protected static IntegerMap _initDontNestGroups() {
result.putUnsafe(1221, resultStoreId);
++resultStoreId;
- result.putUnsafe(10033, resultStoreId);
+ result.putUnsafe(10129, resultStoreId);
++resultStoreId;
- result.putUnsafe(17788, resultStoreId);
+ result.putUnsafe(17884, resultStoreId);
++resultStoreId;
result.putUnsafe(1209, resultStoreId);
@@ -3191,6 +3205,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsYWJlbCgiZmFpbCIsc29ydCgiU3RhdGVtZW50IikpLFtsaXQoImZhaWwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInRhcmdldCIsc29ydCgiVGFyZ2V0IikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIjsiKV0se3RhZygiYnJlYWthYmxlIigpKX0p = (IConstructor) _read("prod(label(\"fail\",sort(\"Statement\")),[lit(\"fail\"),layouts(\"LAYOUTLIST\"),label(\"target\",sort(\"Target\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"breakable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsZXgoIkJhY2tzbGFzaCIpLFtjb25kaXRpb25hbChcY2hhci1jbGFzcyhbcmFuZ2UoOTIsOTIpXSkse1xub3QtZm9sbG93KFxjaGFyLWNsYXNzKFtyYW5nZSg0Nyw0NykscmFuZ2UoNjAsNjApLHJhbmdlKDYyLDYyKSxyYW5nZSg5Miw5MildKSl9KV0se30p = (IConstructor) _read("prod(lex(\"Backslash\"),[conditional(\\char-class([range(92,92)]),{\\not-follow(\\char-class([range(47,47),range(60,60),range(62,62),range(92,92)]))})],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiY29tcHJlaGVuc2lvbiIsc29ydCgiRXhwcmVzc2lvbiIpKSxbbGFiZWwoImNvbXByZWhlbnNpb24iLHNvcnQoIkNvbXByZWhlbnNpb24iKSldLHt9KQ0000 = (IConstructor) _read("prod(label(\"comprehension\",sort(\"Expression\")),[label(\"comprehension\",sort(\"Comprehension\"))],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgibGF5b3V0Iixzb3J0KCJTeW50YXhEZWZpbml0aW9uIikpLFtsYWJlbCgidmlzIixzb3J0KCJWaXNpYmlsaXR5IikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoImxheW91dCIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiZGVmaW5lZCIsY29uZGl0aW9uYWwoc29ydCgiU3ltIikse2V4Y2VwdCgiY2hhcmFjdGVyQ2xhc3MiKX0pKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCI9IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJwcm9kdWN0aW9uIixzb3J0KCJQcm9kIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIjsiKV0se3RhZygiRm9sZGFibGUiKCkpfSk00 = (IConstructor) _read("prod(label(\"layout\",sort(\"SyntaxDefinition\")),[label(\"vis\",sort(\"Visibility\")),layouts(\"LAYOUTLIST\"),lit(\"layout\"),layouts(\"LAYOUTLIST\"),label(\"defined\",conditional(sort(\"Sym\"),{except(\"characterClass\")})),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIioiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDQyLDQyKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"*\"),[\\char-class([range(42,42)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgibmFtZSIsc29ydCgiRmllbGQiKSksW2xhYmVsKCJmaWVsZE5hbWUiLGxleCgiTmFtZSIpKV0se30p = (IConstructor) _read("prod(label(\"name\",sort(\"Field\")),[label(\"fieldName\",lex(\"Name\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJJbnRlZ2VyTGl0ZXJhbFwiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg3Myw3MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzYsNzYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"sort(\\\"IntegerLiteral\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(73,73)]),\\char-class([range(110,110)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(76,76)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
@@ -3301,6 +3316,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJPcHRpb25hbFRlcm1pbmF0b3JcIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzksNzkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMiwxMTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4NCw4NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA5LDEwOSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"OptionalTerminator\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(79,79)]),\\char-class([range(112,112)]),\\char-class([range(116,116)]),\\char-class([range(105,105)]),\\char-class([range(111,111)]),\\char-class([range(110,110)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(84,84)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(109,109)]),\\char-class([range(105,105)]),\\char-class([range(110,110)]),\\char-class([range(97,97)]),\\char-class([range(116,116)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgicmlnaHQiLHNvcnQoIkFzc29jIikpLFtsaXQoInJpZ2h0IildLHt9KQ0000 = (IConstructor) _read("prod(label(\"right\",sort(\"Assoc\")),[lit(\"right\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlw8PT1cPiIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoNjAsNjApXSksXGNoYXItY2xhc3MoW3JhbmdlKDYxLDYxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg2MSw2MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNjIsNjIpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"\\<==\\>\"),[\\char-class([range(60,60)]),\\char-class([range(61,61)]),\\char-class([range(61,61)]),\\char-class([range(62,62)])],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgic3ludGF4Iixzb3J0KCJTeW50YXhSb2xlTW9kaWZpZXIiKSksW2xpdCgic3ludGF4IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiWyIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiYXJnIixzb3J0KCJUeXBlIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIl0iKV0se30p = (IConstructor) _read("prod(label(\"syntax\",sort(\"SyntaxRoleModifier\")),[lit(\"syntax\"),layouts(\"LAYOUTLIST\"),lit(\"[\"),layouts(\"LAYOUTLIST\"),label(\"arg\",sort(\"Type\")),layouts(\"LAYOUTLIST\"),lit(\"]\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsZXgoIlBvc3RTdHJpbmdDaGFycyIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoNjIsNjIpXSksXGl0ZXItc3RhcihsZXgoIlN0cmluZ0NoYXJhY3RlciIpKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSldLHt0YWcoImNhdGVnb3J5Iigic3RyaW5nIikpfSk00 = (IConstructor) _read("prod(lex(\"PostStringChars\"),[\\char-class([range(62,62)]),\\iter-star(lex(\"StringCharacter\")),\\char-class([range(34,34)])],{tag(\"category\"(\"string\"))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixsZXgoIkp1c3REYXRlIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIkp1c3REYXRlXCIpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihsZXgoIkp1c3REYXRlIikpKX0p = (IConstructor) _read("prod(label(\"$MetaHole\",lex(\"JustDate\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"JustDate\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(lex(\"JustDate\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJMb2NhbFZhcmlhYmxlRGVjbGFyYXRpb25cIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzYsNzYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk5LDk5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODYsODYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTgsOTgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDY4LDY4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"sort(\\\"LocalVariableDeclaration\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(76,76)]),\\char-class([range(111,111)]),\\char-class([range(99,99)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(86,86)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(105,105)]),\\char-class([range(97,97)]),\\char-class([range(98,98)]),\\char-class([range(108,108)]),\\char-class([range(101,101)]),\\char-class([range(68,68)]),\\char-class([range(101,101)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(116,116)]),\\char-class([range(105,105)]),\\char-class([range(111,111)]),\\char-class([range(110,110)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
@@ -3566,7 +3582,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoInNlcShbXFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSxvcHQoXFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSldKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEzLDExMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDkxLDkxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTksOTkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNCwxMDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NSw0NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTksOTkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTEsOTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTIsNTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDU2LDU2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTMsNTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDU1LDU1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTMsOTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEyLDExMildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5MSw5MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Miw1MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTYsNTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Myw1MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTUsNTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Myw5MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Myw5MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"seq([\\\\char-class([range(48,57)]),opt(\\\\char-class([range(48,57)]))])\"),[\\char-class([range(115,115)]),\\char-class([range(101,101)]),\\char-class([range(113,113)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(52,52)]),\\char-class([range(56,56)]),\\char-class([range(44,44)]),\\char-class([range(53,53)]),\\char-class([range(55,55)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(111,111)]),\\char-class([range(112,112)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(52,52)]),\\char-class([range(56,56)]),\\char-class([range(44,44)]),\\char-class([range(53,53)]),\\char-class([range(55,55)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixsZXgoIlByZVBhdGhDaGFycyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoInNvcnQoXCJQcmVQYXRoQ2hhcnNcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKGxleCgiUHJlUGF0aENoYXJzIikpKX0p = (IConstructor) _read("prod(label(\"$MetaHole\",lex(\"PrePathChars\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"PrePathChars\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(lex(\"PrePathChars\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiZGVmYXVsdFN0cmF0ZWd5Iixzb3J0KCJWaXNpdCIpKSxbbGl0KCJ2aXNpdCIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIigiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInN1YmplY3QiLHNvcnQoIkV4cHJlc3Npb24iKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiKSIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoInsiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoImNhc2VzIixcaXRlci1zZXBzKHNvcnQoIkNhc2UiKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIn0iKV0se30p = (IConstructor) _read("prod(label(\"defaultStrategy\",sort(\"Visit\")),[lit(\"visit\"),layouts(\"LAYOUTLIST\"),lit(\"(\"),layouts(\"LAYOUTLIST\"),label(\"subject\",sort(\"Expression\")),layouts(\"LAYOUTLIST\"),lit(\")\"),layouts(\"LAYOUTLIST\"),lit(\"{\"),layouts(\"LAYOUTLIST\"),label(\"cases\",\\iter-seps(sort(\"Case\"),[layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),lit(\"}\")],{})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixcY2hhci1jbGFzcyhbcmFuZ2UoMSw5KSxyYW5nZSgxMSwxMikscmFuZ2UoMTQsMTExNDExMSldKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJpdGVyKFxcY2hhci1jbGFzcyhbcmFuZ2UoMSw5KSxyYW5nZSgxMSwxMikscmFuZ2UoMTQsMTExNDExMSldKSkiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDEsOSkscmFuZ2UoMTEsMTIpLHJhbmdlKDE0LDExMTQxMTEpXSkpKSl9KQ0000 = (IConstructor) _read("prod(label(\"$MetaHole\",\\char-class([range(1,9),range(11,12),range(14,1114111)])),[\\char-class([range(0,0)]),lit(\"iter(\\\\char-class([range(1,9),range(11,12),range(14,1114111)]))\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(iter(\\char-class([range(1,9),range(11,12),range(14,1114111)]))))})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgid2hpbGUiLHNvcnQoIlN0cmluZ1RlbXBsYXRlIikpLFtsaXQoIndoaWxlIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiKCIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiY29uZGl0aW9uIixzb3J0KCJFeHByZXNzaW9uIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIikiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCJ7IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJwcmVTdGF0cyIsXGl0ZXItc3Rhci1zZXBzKHNvcnQoIlN0YXRlbWVudCIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIildKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJib2R5Iixzb3J0KCJTdHJpbmdNaWRkbGUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJwb3N0U3RhdHMiLFxpdGVyLXN0YXItc2Vwcyhzb3J0KCJTdGF0ZW1lbnQiKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIn0iKV0se30p = (IConstructor) _read("prod(label(\"while\",sort(\"StringTemplate\")),[lit(\"while\"),layouts(\"LAYOUTLIST\"),lit(\"(\"),layouts(\"LAYOUTLIST\"),label(\"condition\",sort(\"Expression\")),layouts(\"LAYOUTLIST\"),lit(\")\"),layouts(\"LAYOUTLIST\"),lit(\"{\"),layouts(\"LAYOUTLIST\"),label(\"preStats\",\\iter-star-seps(sort(\"Statement\"),[layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),label(\"body\",sort(\"StringMiddle\")),layouts(\"LAYOUTLIST\"),label(\"postStats\",\\iter-star-seps(sort(\"Statement\"),[layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),lit(\"}\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiYnMiLGxleCgiQ29uY3JldGVQYXJ0IikpLFtsaXQoIlxcXFwiKV0se3RhZygiY2F0ZWdvcnkiKCJzdHJpbmciKSl9KQ0000 = (IConstructor) _read("prod(label(\"bs\",lex(\"ConcretePart\")),[lit(\"\\\\\\\\\")],{tag(\"category\"(\"string\"))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgicHJlc2VudCIsc29ydCgiU3RhcnQiKSksW2xpdCgic3RhcnQiKV0se30p = (IConstructor) _read("prod(label(\"present\",sort(\"Start\")),[lit(\"start\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJGb3JtYWxzIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIkZvcm1hbHNcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKHNvcnQoIkZvcm1hbHMiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Formals\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"Formals\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"Formals\")))})", RascalValueFactory.Production);
@@ -3582,8 +3598,8 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJIZXhJbnRlZ2VyTGl0ZXJhbFwiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg3Miw3MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTIwLDEyMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzMsNzMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDc2LDc2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"sort(\\\"HexIntegerLiteral\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(72,72)]),\\char-class([range(101,101)]),\\char-class([range(120,120)]),\\char-class([range(73,73)]),\\char-class([range(110,110)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(76,76)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJUeXBlXCIpIiksW1xjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDg0LDg0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMjEsMTIxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTIsMTEyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"sort(\\\"Type\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(121,121)]),\\char-class([range(112,112)]),\\char-class([range(101,101)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInRhZyIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"tag\"),[\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(103,103)])],{})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgia2V5d29yZCIsc29ydCgiU3ludGF4RGVmaW5pdGlvbiIpKSxbbGl0KCJrZXl3b3JkIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJkZWZpbmVkIixzb3J0KCJTeW0iKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiPSIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgicHJvZHVjdGlvbiIsc29ydCgiUHJvZCIpKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCI7IildLHt0YWcoIkZvbGRhYmxlIigpKX0p = (IConstructor) _read("prod(label(\"keyword\",sort(\"SyntaxDefinition\")),[lit(\"keyword\"),layouts(\"LAYOUTLIST\"),label(\"defined\",sort(\"Sym\")),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgid2hpbGUiLHNvcnQoIlN0cmluZ1RlbXBsYXRlIikpLFtsaXQoIndoaWxlIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiKCIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiY29uZGl0aW9uIixzb3J0KCJFeHByZXNzaW9uIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIikiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCJ7IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJwcmVTdGF0cyIsXGl0ZXItc3Rhci1zZXBzKHNvcnQoIlN0YXRlbWVudCIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIildKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJib2R5Iixzb3J0KCJTdHJpbmdNaWRkbGUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJwb3N0U3RhdHMiLFxpdGVyLXN0YXItc2Vwcyhzb3J0KCJTdGF0ZW1lbnQiKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIn0iKV0se30p = (IConstructor) _read("prod(label(\"while\",sort(\"StringTemplate\")),[lit(\"while\"),layouts(\"LAYOUTLIST\"),lit(\"(\"),layouts(\"LAYOUTLIST\"),label(\"condition\",sort(\"Expression\")),layouts(\"LAYOUTLIST\"),lit(\")\"),layouts(\"LAYOUTLIST\"),lit(\"{\"),layouts(\"LAYOUTLIST\"),label(\"preStats\",\\iter-star-seps(sort(\"Statement\"),[layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),label(\"body\",sort(\"StringMiddle\")),layouts(\"LAYOUTLIST\"),label(\"postStats\",\\iter-star-seps(sort(\"Statement\"),[layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),lit(\"}\")],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixcY2hhci1jbGFzcyhbcmFuZ2UoMSw5KSxyYW5nZSgxMSwxMikscmFuZ2UoMTQsMTExNDExMSldKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJpdGVyKFxcY2hhci1jbGFzcyhbcmFuZ2UoMSw5KSxyYW5nZSgxMSwxMikscmFuZ2UoMTQsMTExNDExMSldKSkiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDEsOSkscmFuZ2UoMTEsMTIpLHJhbmdlKDE0LDExMTQxMTEpXSkpKSl9KQ0000 = (IConstructor) _read("prod(label(\"$MetaHole\",\\char-class([range(1,9),range(11,12),range(14,1114111)])),[\\char-class([range(0,0)]),lit(\"iter(\\\\char-class([range(1,9),range(11,12),range(14,1114111)]))\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(iter(\\char-class([range(1,9),range(11,12),range(14,1114111)]))))})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgibGV4aWNhbCIsc29ydCgiU3ludGF4Um9sZU1vZGlmaWVyIikpLFtsaXQoImxleGljYWwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCJbIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJhcmciLHNvcnQoIlR5cGUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiXSIpXSx7fSk00 = (IConstructor) _read("prod(label(\"lexical\",sort(\"SyntaxRoleModifier\")),[lit(\"lexical\"),layouts(\"LAYOUTLIST\"),lit(\"[\"),layouts(\"LAYOUTLIST\"),label(\"arg\",sort(\"Type\")),layouts(\"LAYOUTLIST\"),lit(\"]\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiY2FsbE9yVHJlZSIsc29ydCgiRXhwcmVzc2lvbiIpKSxbbGFiZWwoImV4cHJlc3Npb24iLGNvbmRpdGlvbmFsKHNvcnQoIkV4cHJlc3Npb24iKSx7ZXhjZXB0KCJpc0RlZmluZWQiKSxleGNlcHQoInRyYW5zaXRpdmVDbG9zdXJlIiksZXhjZXB0KCJ0cmFuc2l0aXZlUmVmbGV4aXZlQ2xvc3VyZSIpfSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIigiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoImFyZ3VtZW50cyIsXGl0ZXItc3Rhci1zZXBzKHNvcnQoIkV4cHJlc3Npb24iKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiLCIpLGxheW91dHMoIkxBWU9VVExJU1QiKV0pKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoImtleXdvcmRBcmd1bWVudHMiLFxwYXJhbWV0ZXJpemVkLXNvcnQoIktleXdvcmRBcmd1bWVudHMiLFtzb3J0KCJFeHByZXNzaW9uIildKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiKSIpXSx7fSk00 = (IConstructor) _read("prod(label(\"callOrTree\",sort(\"Expression\")),[label(\"expression\",conditional(sort(\"Expression\"),{except(\"isDefined\"),except(\"transitiveClosure\"),except(\"transitiveReflexiveClosure\")})),layouts(\"LAYOUTLIST\"),lit(\"(\"),layouts(\"LAYOUTLIST\"),label(\"arguments\",\\iter-star-seps(sort(\"Expression\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),label(\"keywordArguments\",\\parameterized-sort(\"KeywordArguments\",[sort(\"Expression\")])),layouts(\"LAYOUTLIST\"),lit(\")\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChrZXl3b3JkcygiUmFzY2FsS2V5d29yZHMiKSxbbGl0KCJ2YWx1ZSIpXSx7fSk00 = (IConstructor) _read("prod(keywords(\"RascalKeywords\"),[lit(\"value\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiaW5zZXJ0QmVmb3JlIixzb3J0KCJFeHByZXNzaW9uIikpLFtsYWJlbCgibGhzIixzb3J0KCJFeHByZXNzaW9uIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIlw11XD4iKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInJocyIsc29ydCgiRXhwcmVzc2lvbiIpKV0se30p = (IConstructor) _read("prod(label(\"insertBefore\",sort(\"Expression\")),[label(\"lhs\",sort(\"Expression\")),layouts(\"LAYOUTLIST\"),lit(\"\\>\\>\"),layouts(\"LAYOUTLIST\"),label(\"rhs\",sort(\"Expression\"))],{})", RascalValueFactory.Production);
@@ -3604,10 +3620,10 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NykscmFuZ2UoNjUsNzApLHJhbmdlKDk3LDEwMildKSkp = (IConstructor) _read("regular(iter(\\char-class([range(48,57),range(65,70),range(97,102)])))", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihvcHQoc2VxKFtcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpLHJhbmdlKDQ2LDQ2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSxvcHQoc2VxKFtcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSksb3B0KFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSldKSldKSkp = (IConstructor) _read("regular(opt(seq([\\char-class([range(44,44),range(46,46)]),\\char-class([range(48,57)]),opt(seq([\\char-class([range(48,57)]),opt(\\char-class([range(48,57)]))]))])))", RascalValueFactory.Production);
private static final IConstructor cHJvZChrZXl3b3JkcygiUmFzY2FsS2V5d29yZHMiKSxbbGl0KCJtYXAiKV0se30p = (IConstructor) _read("prod(keywords(\"RascalKeywords\"),[lit(\"map\")],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgibW9kaWZpZXIiLHNvcnQoIlR5cGUiKSksW2xhYmVsKCJtb2RpZmllciIsc29ydCgiU3ludGF4Um9sZU1vZGlmaWVyIikpXSx7fSk00 = (IConstructor) _read("prod(label(\"modifier\",sort(\"Type\")),[label(\"modifier\",sort(\"SyntaxRoleModifier\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlxcaXRlci1zdGFyLXNlcHMoc29ydChcIlF1YWxpZmllZE5hbWVcIiksW2xpdChcIixcIildKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoOTIsOTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDUsNDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMiwxMTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDgxLDgxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTcsMTE3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAyLDEwMildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAwLDEwMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzgsNzgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDksMTA5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5MSw5MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Myw5MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"\\\\iter-star-seps(sort(\\\"QualifiedName\\\"),[lit(\\\",\\\")])\"),[\\char-class([range(92,92)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(115,115)]),\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(115,115)]),\\char-class([range(101,101)]),\\char-class([range(112,112)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(81,81)]),\\char-class([range(117,117)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(105,105)]),\\char-class([range(102,102)]),\\char-class([range(105,105)]),\\char-class([range(101,101)]),\\char-class([range(100,100)]),\\char-class([range(78,78)]),\\char-class([range(97,97)]),\\char-class([range(109,109)]),\\char-class([range(101,101)]),\\char-class([range(34,34)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(91,91)]),\\char-class([range(108,108)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(44,44)]),\\char-class([range(34,34)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgidGFnIixzb3J0KCJLaW5kIikpLFtsaXQoInRhZyIpXSx7fSk00 = (IConstructor) _read("prod(label(\"tag\",sort(\"Kind\")),[lit(\"tag\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJEYXRlVGltZUxpdGVyYWwiKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJzb3J0KFwiRGF0ZVRpbWVMaXRlcmFsXCIpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihzb3J0KCJEYXRlVGltZUxpdGVyYWwiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"DateTimeLiteral\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"DateTimeLiteral\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"DateTimeLiteral\")))})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgibGFuZ3VhZ2UiLHNvcnQoIlN5bnRheERlZmluaXRpb24iKSksW2xhYmVsKCJzdGFydCIsc29ydCgiU3RhcnQiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgic3ludGF4IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJkZWZpbmVkIixzb3J0KCJTeW0iKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiPSIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgicHJvZHVjdGlvbiIsc29ydCgiUHJvZCIpKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCI7IildLHt0YWcoIkZvbGRhYmxlIigpKX0p = (IConstructor) _read("prod(label(\"language\",sort(\"SyntaxDefinition\")),[label(\"start\",sort(\"Start\")),layouts(\"LAYOUTLIST\"),lit(\"syntax\"),layouts(\"LAYOUTLIST\"),label(\"defined\",sort(\"Sym\")),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgicmVnRXhwIixzb3J0KCJMaXRlcmFsIikpLFtsYWJlbCgicmVnRXhwTGl0ZXJhbCIsbGV4KCJSZWdFeHBMaXRlcmFsIikpXSx7dGFnKCJjYXRlZ29yeSIoInJlZ2V4cCIpKX0p = (IConstructor) _read("prod(label(\"regExp\",sort(\"Literal\")),[label(\"regExpLiteral\",lex(\"RegExpLiteral\"))],{tag(\"category\"(\"regexp\"))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJUYWdTdHJpbmdcIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODQsODQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Myw4MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"sort(\\\"TagString\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(97,97)]),\\char-class([range(103,103)]),\\char-class([range(83,83)]),\\char-class([range(116,116)]),\\char-class([range(114,114)]),\\char-class([range(105,105)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlxcaXRlci1zdGFyKFxcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpLHJhbmdlKDY1LDcwKSxyYW5nZSg5NywxMDIpXSkpIiksW1xjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDUsNDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTIsOTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk5LDk5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDQsMTA0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDUsNDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk5LDk5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDkxLDkxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDUyLDUyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Niw1NildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDUzLDUzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1NSw1NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDU0LDU0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Myw1MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDU1LDU1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw0OCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDU3LDU3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1NSw1NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ5LDQ5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw0OCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTAsNTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Myw5MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"\\\\iter-star(\\\\char-class([range(48,57),range(65,70),range(97,102)]))\"),[\\char-class([range(92,92)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(115,115)]),\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(40,40)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(52,52)]),\\char-class([range(56,56)]),\\char-class([range(44,44)]),\\char-class([range(53,53)]),\\char-class([range(55,55)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(54,54)]),\\char-class([range(53,53)]),\\char-class([range(44,44)]),\\char-class([range(55,55)]),\\char-class([range(48,48)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(57,57)]),\\char-class([range(55,55)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(48,48)]),\\char-class([range(50,50)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
@@ -3706,7 +3722,6 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoIndoaWxlIiksW1xjaGFyLWNsYXNzKFtyYW5nZSgxMTksMTE5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDQsMTA0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"while\"),[\\char-class([range(119,119)]),\\char-class([range(104,104)]),\\char-class([range(105,105)]),\\char-class([range(108,108)]),\\char-class([range(101,101)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJUYXJnZXQiKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJzb3J0KFwiVGFyZ2V0XCIpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihzb3J0KCJUYXJnZXQiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Target\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"Target\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"Target\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixccGFyYW1ldGVyaXplZC1zb3J0KCJLZXl3b3JkQXJndW1lbnQiLFtzb3J0KCJFeHByZXNzaW9uIildKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJcXGl0ZXItc3Rhci1zZXBzKFxccGFyYW1ldGVyaXplZC1zb3J0KFwiS2V5d29yZEFyZ3VtZW50XCIsW3NvcnQoXCJFeHByZXNzaW9uXCIpXSksW2xpdChcIixcIildKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoXGl0ZXItc3Rhci1zZXBzKFxwYXJhbWV0ZXJpemVkLXNvcnQoIktleXdvcmRBcmd1bWVudCIsW3NvcnQoIkV4cHJlc3Npb24iKV0pLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpKX0p = (IConstructor) _read("prod(label(\"$MetaHole\",\\parameterized-sort(\"KeywordArgument\",[sort(\"Expression\")])),[\\char-class([range(0,0)]),lit(\"\\\\iter-star-seps(\\\\parameterized-sort(\\\"KeywordArgument\\\",[sort(\\\"Expression\\\")]),[lit(\\\",\\\")])\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-star-seps(\\parameterized-sort(\"KeywordArgument\",[sort(\"Expression\")]),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])))})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsaXQoInNvcnQoXCJUYXJnZXRcIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODQsODQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"sort(\\\"Target\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(116,116)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChrZXl3b3JkcygiUmFzY2FsS2V5d29yZHMiKSxbbGl0KCJyZWFsIildLHt9KQ0000 = (IConstructor) _read("prod(keywords(\"RascalKeywords\"),[lit(\"real\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoImJhZyIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoOTgsOTgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"bag\"),[\\char-class([range(98,98)]),\\char-class([range(97,97)]),\\char-class([range(103,103)])],{})", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihcaXRlci1zdGFyLXNlcHMoc29ydCgiVHlwZVZhciIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkp = (IConstructor) _read("regular(\\iter-star-seps(sort(\"TypeVar\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")]))", RascalValueFactory.Production);
@@ -3736,6 +3751,8 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cmVndWxhcihcaXRlci1zZXBzKGxleCgiTmFtZSIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCI6OiIpLGxheW91dHMoIkxBWU9VVExJU1QiKV0pKQ0000 = (IConstructor) _read("regular(\\iter-seps(lex(\"Name\"),[layouts(\"LAYOUTLIST\"),lit(\"::\"),layouts(\"LAYOUTLIST\")]))", RascalValueFactory.Production);
private static final IConstructor cHJvZChrZXl3b3JkcygiUmFzY2FsS2V5d29yZHMiKSxbbGl0KCJmaW5hbGx5IildLHt9KQ0000 = (IConstructor) _read("prod(keywords(\"RascalKeywords\"),[lit(\"finally\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIml0ZXIoc29ydChcIkNhdGNoXCIpKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNjcsNjcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"iter(sort(\\\"Catch\\\"))\"),[\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(40,40)]),\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(67,67)]),\\char-class([range(97,97)]),\\char-class([range(116,116)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(34,34)]),\\char-class([range(41,41)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsaXQoInNvcnQoXCJUYXJnZXRcIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODQsODQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"sort(\\\"Target\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(116,116)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsaXQoInNvcnQoXCJTeW50YXhSb2xlTW9kaWZpZXJcIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODMsODMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEyMSwxMjEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMjAsMTIwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Miw4MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzcsNzcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMCwxMDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMiwxMDIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"SyntaxRoleModifier\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(83,83)]),\\char-class([range(121,121)]),\\char-class([range(110,110)]),\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(120,120)]),\\char-class([range(82,82)]),\\char-class([range(111,111)]),\\char-class([range(108,108)]),\\char-class([range(101,101)]),\\char-class([range(77,77)]),\\char-class([range(111,111)]),\\char-class([range(100,100)]),\\char-class([range(105,105)]),\\char-class([range(102,102)]),\\char-class([range(105,105)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChrZXl3b3JkcygiUmFzY2FsS2V5d29yZHMiKSxbbGl0KCJ2b2lkIildLHt9KQ0000 = (IConstructor) _read("prod(keywords(\"RascalKeywords\"),[lit(\"void\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixhbHQoe3NlcShbbGl0KCJcXCIpLFxjaGFyLWNsYXNzKFtyYW5nZSgxMjMsMTIzKSxyYW5nZSgxMjUsMTI1KV0pXSksbGV4KCJUYWdTdHJpbmciKSxcY2hhci1jbGFzcyhbcmFuZ2UoMSwxMjIpLHJhbmdlKDEyNCwxMjQpLHJhbmdlKDEyNiwxMTE0MTExKV0pfSkpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgiXFxpdGVyLXN0YXIoYWx0KHtzZXEoW2xpdChcIlxcXFxcIiksXFxjaGFyLWNsYXNzKFtyYW5nZSgxMjMsMTIzKSxyYW5nZSgxMjUsMTI1KV0pXSksc29ydChcIlRhZ1N0cmluZ1wiKSxcXGNoYXItY2xhc3MoW3JhbmdlKDEsMTIyKSxyYW5nZSgxMjQsMTI0KSxyYW5nZSgxMjYsMTExNDExMSldKX0pKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoXGl0ZXItc3RhcihhbHQoe3NlcShbbGl0KCJcXCIpLFxjaGFyLWNsYXNzKFtyYW5nZSgxMjMsMTIzKSxyYW5nZSgxMjUsMTI1KV0pXSksbGV4KCJUYWdTdHJpbmciKSxcY2hhci1jbGFzcyhbcmFuZ2UoMSwxMjIpLHJhbmdlKDEyNCwxMjQpLHJhbmdlKDEyNiwxMTE0MTExKV0pfSkpKSl9KQ0000 = (IConstructor) _read("prod(label(\"$MetaHole\",alt({seq([lit(\"\\\\\"),\\char-class([range(123,123),range(125,125)])]),lex(\"TagString\"),\\char-class([range(1,122),range(124,124),range(126,1114111)])})),[\\char-class([range(0,0)]),lit(\"\\\\iter-star(alt({seq([lit(\\\"\\\\\\\\\\\"),\\\\char-class([range(123,123),range(125,125)])]),sort(\\\"TagString\\\"),\\\\char-class([range(1,122),range(124,124),range(126,1114111)])}))\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-star(alt({seq([lit(\"\\\\\"),\\char-class([range(123,123),range(125,125)])]),lex(\"TagString\"),\\char-class([range(1,122),range(124,124),range(126,1114111)])}))))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJNb2R1bGVQYXJhbWV0ZXJzIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIk1vZHVsZVBhcmFtZXRlcnNcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKHNvcnQoIk1vZHVsZVBhcmFtZXRlcnMiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"ModuleParameters\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"ModuleParameters\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"ModuleParameters\")))})", RascalValueFactory.Production);
@@ -3801,7 +3818,6 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoIm1vZHVsZXMiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDEwOSwxMDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMCwxMDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNywxMTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"modules\"),[\\char-class([range(109,109)]),\\char-class([range(111,111)]),\\char-class([range(100,100)]),\\char-class([range(117,117)]),\\char-class([range(108,108)]),\\char-class([range(101,101)]),\\char-class([range(115,115)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiZXh0ZW5kIixzb3J0KCJJbXBvcnQiKSksW2xpdCgiZXh0ZW5kIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJtb2R1bGUiLHNvcnQoIkltcG9ydGVkTW9kdWxlIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIjsiKV0se30p = (IConstructor) _read("prod(label(\"extend\",sort(\"Import\")),[lit(\"extend\"),layouts(\"LAYOUTLIST\"),label(\"module\",sort(\"ImportedModule\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJTdHJpbmdUYWlsIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIlN0cmluZ1RhaWxcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKHNvcnQoIlN0cmluZ1RhaWwiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"StringTail\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"StringTail\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"StringTail\")))})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgibGV4aWNhbCIsc29ydCgiU3ludGF4RGVmaW5pdGlvbiIpKSxbbGl0KCJsZXhpY2FsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJkZWZpbmVkIixzb3J0KCJTeW0iKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiPSIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgicHJvZHVjdGlvbiIsc29ydCgiUHJvZCIpKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCI7IildLHt0YWcoIkZvbGRhYmxlIigpKX0p = (IConstructor) _read("prod(label(\"lexical\",sort(\"SyntaxDefinition\")),[lit(\"lexical\"),layouts(\"LAYOUTLIST\"),label(\"defined\",sort(\"Sym\")),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlxcaXRlci1zdGFyKGFsdCh7c2VxKFtsaXQoXCJcXFxcXCIpLFxcY2hhci1jbGFzcyhbcmFuZ2UoMTIzLDEyMykscmFuZ2UoMTI1LDEyNSldKV0pLHNvcnQoXCJUYWdTdHJpbmdcIiksXFxjaGFyLWNsYXNzKFtyYW5nZSgxLDEyMikscmFuZ2UoMTI0LDEyNCkscmFuZ2UoMTI2LDExMTQxMTEpXSl9KSkiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NSw0NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEyMywxMjMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMywxMTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5MSw5MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTIsOTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5MSw5MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTAsNTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDUxLDUxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDksNDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDUwLDUwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1MSw1MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ5LDQ5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1MCw1MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTMsNTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTAsNTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDUzLDUzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTMsOTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Myw5MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDg0LDg0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODMsODMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5MSw5MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ5LDQ5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1MCw1MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTAsNTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTAsNTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDUyLDUyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDksNDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDUwLDUwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Miw1MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ5LDQ5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1MCw1MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTQsNTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDksNDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ5LDQ5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Miw1MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDksNDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ5LDQ5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkzLDkzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTI1LDEyNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"\\\\iter-star(alt({seq([lit(\\\"\\\\\\\\\\\"),\\\\char-class([range(123,123),range(125,125)])]),sort(\\\"TagString\\\"),\\\\char-class([range(1,122),range(124,124),range(126,1114111)])}))\"),[\\char-class([range(92,92)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(115,115)]),\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(40,40)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(123,123)]),\\char-class([range(115,115)]),\\char-class([range(101,101)]),\\char-class([range(113,113)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(108,108)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(92,92)]),\\char-class([range(92,92)]),\\char-class([range(34,34)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(51,51)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(51,51)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(53,53)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(53,53)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(97,97)]),\\char-class([range(103,103)]),\\char-class([range(83,83)]),\\char-class([range(116,116)]),\\char-class([range(114,114)]),\\char-class([range(105,105)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(34,34)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(49,49)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(50,50)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(52,52)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(52,52)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(54,54)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(49,49)]),\\char-class([range(49,49)]),\\char-class([range(52,52)]),\\char-class([range(49,49)]),\\char-class([range(49,49)]),\\char-class([range(49,49)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(125,125)]),\\char-class([range(41,41)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJDbGFzc1wiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg2Nyw2NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"Class\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(67,67)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgic2V0Iixzb3J0KCJDb21wcmVoZW5zaW9uIikpLFtsaXQoInsiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInJlc3VsdHMiLFxpdGVyLXNlcHMoc29ydCgiRXhwcmVzc2lvbiIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoInwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoImdlbmVyYXRvcnMiLFxpdGVyLXNlcHMoc29ydCgiRXhwcmVzc2lvbiIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIn0iKV0se3RhZygiYnJlYWthYmxlIigie3Jlc3VsdHMsZ2VuZXJhdG9yc30iKSl9KQ0000 = (IConstructor) _read("prod(label(\"set\",sort(\"Comprehension\")),[lit(\"{\"),layouts(\"LAYOUTLIST\"),label(\"results\",\\iter-seps(sort(\"Expression\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),lit(\"|\"),layouts(\"LAYOUTLIST\"),label(\"generators\",\\iter-seps(sort(\"Expression\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),lit(\"}\")],{tag(\"breakable\"(\"{results,generators}\"))})", RascalValueFactory.Production);
@@ -3883,7 +3899,6 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJLaW5kIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIktpbmRcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKHNvcnQoIktpbmQiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Kind\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"Kind\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"Kind\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixsZXgoIkJvb2xlYW5MaXRlcmFsIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIkJvb2xlYW5MaXRlcmFsXCIpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihsZXgoIkJvb2xlYW5MaXRlcmFsIikpKX0p = (IConstructor) _read("prod(label(\"$MetaHole\",lex(\"BooleanLiteral\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"BooleanLiteral\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(lex(\"BooleanLiteral\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJBc3NpZ25hYmxlIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgiXFxpdGVyLXNlcHMoc29ydChcIkFzc2lnbmFibGVcIiksW2xpdChcIixcIildKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoXGl0ZXItc2Vwcyhzb3J0KCJBc3NpZ25hYmxlIiksW2xheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIiwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Assignable\")),[\\char-class([range(0,0)]),lit(\"\\\\iter-seps(sort(\\\"Assignable\\\"),[lit(\\\",\\\")])\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-seps(sort(\"Assignable\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])))})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgibGF5b3V0Iixzb3J0KCJTeW50YXhEZWZpbml0aW9uIikpLFtsYWJlbCgidmlzIixzb3J0KCJWaXNpYmlsaXR5IikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoImxheW91dCIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiZGVmaW5lZCIsc29ydCgiU3ltIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIj0iKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInByb2R1Y3Rpb24iLHNvcnQoIlByb2QiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiOyIpXSx7dGFnKCJGb2xkYWJsZSIoKSl9KQ0000 = (IConstructor) _read("prod(label(\"layout\",sort(\"SyntaxDefinition\")),[label(\"vis\",sort(\"Visibility\")),layouts(\"LAYOUTLIST\"),lit(\"layout\"),layouts(\"LAYOUTLIST\"),label(\"defined\",sort(\"Sym\")),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgiXFxpdGVyLXN0YXIoXFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKFxpdGVyLXN0YXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",\\char-class([range(48,57)])),[\\char-class([range(0,0)]),lit(\"\\\\iter-star(\\\\char-class([range(48,57)]))\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-star(\\char-class([range(48,57)]))))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJFeHByZXNzaW9uIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgiXFxpdGVyLXN0YXItc2Vwcyhzb3J0KFwiRXhwcmVzc2lvblwiKSxbbGl0KFwiLFwiKV0pIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihcaXRlci1zdGFyLXNlcHMoc29ydCgiRXhwcmVzc2lvbiIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpKX0p = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Expression\")),[\\char-class([range(0,0)]),lit(\"\\\\iter-star-seps(sort(\\\"Expression\\\"),[lit(\\\",\\\")])\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-star-seps(sort(\"Expression\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlwiIiksW1xjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKV0se30p = (IConstructor) _read("prod(lit(\"\\\"\"),[\\char-class([range(34,34)])],{})", RascalValueFactory.Production);
@@ -3986,7 +4001,6 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cmVndWxhcihvcHQoc2VxKFtcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSksb3B0KFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSldKSkp = (IConstructor) _read("regular(opt(seq([\\char-class([range(48,57)]),opt(\\char-class([range(48,57)]))])))", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJTdGF0ZW1lbnQiKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJzb3J0KFwiU3RhdGVtZW50XCIpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihzb3J0KCJTdGF0ZW1lbnQiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Statement\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"Statement\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"Statement\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInVuZXh0ZW5kIiksW1xjaGFyLWNsYXNzKFtyYW5nZSgxMTcsMTE3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMjAsMTIwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDAsMTAwKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"unextend\"),[\\char-class([range(117,117)]),\\char-class([range(110,110)]),\\char-class([range(101,101)]),\\char-class([range(120,120)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(110,110)]),\\char-class([range(100,100)])],{})", RascalValueFactory.Production);
- private static final IConstructor cHJvZChsYWJlbCgiZnVuY3Rpb24iLHNvcnQoIkRlY2xhcmF0aW9uIikpLFtsYWJlbCgiZnVuY3Rpb25EZWNsYXJhdGlvbiIsc29ydCgiRnVuY3Rpb25EZWNsYXJhdGlvbiIpKV0se30p = (IConstructor) _read("prod(label(\"function\",sort(\"Declaration\")),[label(\"functionDeclaration\",sort(\"FunctionDeclaration\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgidW5sYWJlbGVkIixzb3J0KCJQcm9kIikpLFtsYWJlbCgibW9kaWZpZXJzIixcaXRlci1zdGFyLXNlcHMoc29ydCgiUHJvZE1vZGlmaWVyIiksW2xheW91dHMoIkxBWU9VVExJU1QiKV0pKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInN5bXMiLFxpdGVyLXN0YXItc2Vwcyhzb3J0KCJTeW0iKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpXSx7fSk00 = (IConstructor) _read("prod(label(\"unlabeled\",sort(\"Prod\")),[label(\"modifiers\",\\iter-star-seps(sort(\"ProdModifier\"),[layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),label(\"syms\",\\iter-star-seps(sort(\"Sym\"),[layouts(\"LAYOUTLIST\")]))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJSZWdFeHBMaXRlcmFsXCIpIiksW1xjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDgyLDgyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg2OSw2OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTIwLDEyMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEyLDExMildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzYsNzYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"sort(\\\"RegExpLiteral\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(82,82)]),\\char-class([range(101,101)]),\\char-class([range(103,103)]),\\char-class([range(69,69)]),\\char-class([range(120,120)]),\\char-class([range(112,112)]),\\char-class([range(76,76)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(108,108)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYXlvdXRzKCJMQVlPVVRMSVNUIiksW2NvbmRpdGlvbmFsKFxpdGVyLXN0YXIobGV4KCJMQVlPVVQiKSkse1xub3QtZm9sbG93KFxjaGFyLWNsYXNzKFtyYW5nZSg5LDEzKSxyYW5nZSgzMiwzMikscmFuZ2UoMTMzLDEzMykscmFuZ2UoMTYwLDE2MCkscmFuZ2UoNTc2MCw1NzYwKSxyYW5nZSg2MTU4LDYxNTgpLHJhbmdlKDgxOTIsODIwMikscmFuZ2UoODIzMiw4MjMzKSxyYW5nZSg4MjM5LDgyMzkpLHJhbmdlKDgyODcsODI4NykscmFuZ2UoMTIyODgsMTIyODgpXSkpLFxub3QtZm9sbG93KGxpdCgiLy8iKSksXG5vdC1mb2xsb3cobGl0KCIvKiIpKX0pXSx7fSk00 = (IConstructor) _read("prod(layouts(\"LAYOUTLIST\"),[conditional(\\iter-star(lex(\"LAYOUT\")),{\\not-follow(\\char-class([range(9,13),range(32,32),range(133,133),range(160,160),range(5760,5760),range(6158,6158),range(8192,8202),range(8232,8233),range(8239,8239),range(8287,8287),range(12288,12288)])),\\not-follow(lit(\"//\")),\\not-follow(lit(\"/*\"))})],{})", RascalValueFactory.Production);
@@ -4004,6 +4018,8 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoImluc2VydCIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKV0se30p = (IConstructor) _read("prod(lit(\"insert\"),[\\char-class([range(105,105)]),\\char-class([range(110,110)]),\\char-class([range(115,115)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(116,116)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJDb21tb25LZXl3b3JkUGFyYW1ldGVyc1wiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg2Nyw2NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA5LDEwOSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA5LDEwOSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNzUsNzUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEyMSwxMjEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExOSwxMTkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMCwxMDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDgwLDgwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOSwxMDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"CommonKeywordParameters\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(67,67)]),\\char-class([range(111,111)]),\\char-class([range(109,109)]),\\char-class([range(109,109)]),\\char-class([range(111,111)]),\\char-class([range(110,110)]),\\char-class([range(75,75)]),\\char-class([range(101,101)]),\\char-class([range(121,121)]),\\char-class([range(119,119)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(100,100)]),\\char-class([range(80,80)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(109,109)]),\\char-class([range(101,101)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(115,115)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlxcaXRlci1zdGFyKHNvcnQoXCJUYWdcIikpIiksW1xjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDUsNDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4NCw4NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"\\\\iter-star(sort(\\\"Tag\\\"))\"),[\\char-class([range(92,92)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(115,115)]),\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(40,40)]),\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(97,97)]),\\char-class([range(103,103)]),\\char-class([range(34,34)]),\\char-class([range(41,41)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJTeW50YXhSb2xlTW9kaWZpZXIiKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJzb3J0KFwiU3ludGF4Um9sZU1vZGlmaWVyXCIpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihzb3J0KCJTeW50YXhSb2xlTW9kaWZpZXIiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"SyntaxRoleModifier\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"SyntaxRoleModifier\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"SyntaxRoleModifier\")))})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgiZnVuY3Rpb24iLHNvcnQoIkRlY2xhcmF0aW9uIikpLFtsYWJlbCgiZnVuY3Rpb25EZWNsYXJhdGlvbiIsc29ydCgiRnVuY3Rpb25EZWNsYXJhdGlvbiIpKV0se30p = (IConstructor) _read("prod(label(\"function\",sort(\"Declaration\")),[label(\"functionDeclaration\",sort(\"FunctionDeclaration\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJUeXBlQXJnIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgiXFxpdGVyLXNlcHMoc29ydChcIlR5cGVBcmdcIiksW2xpdChcIixcIildKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoXGl0ZXItc2Vwcyhzb3J0KCJUeXBlQXJnIiksW2xheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIiwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"TypeArg\")),[\\char-class([range(0,0)]),lit(\"\\\\iter-seps(sort(\\\"TypeArg\\\"),[lit(\\\",\\\")])\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-seps(sort(\"TypeArg\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiYnEiLGxleCgiQ29uY3JldGVQYXJ0IikpLFtsaXQoIlxcYCIpXSx7dGFnKCJjYXRlZ29yeSIoInN0cmluZyIpKX0p = (IConstructor) _read("prod(label(\"bq\",lex(\"ConcretePart\")),[lit(\"\\\\`\")],{tag(\"category\"(\"string\"))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJUYWciKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJpdGVyKHNvcnQoXCJUYWdcIikpIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihcaXRlci1zZXBzKHNvcnQoIlRhZyIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Tag\")),[\\char-class([range(0,0)]),lit(\"iter(sort(\\\"Tag\\\"))\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(\\iter-seps(sort(\"Tag\"),[layouts(\"LAYOUTLIST\")])))})", RascalValueFactory.Production);
@@ -4162,7 +4178,9 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsaXQoIml0ZXIoXFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NykscmFuZ2UoNjUsNzApLHJhbmdlKDk3LDEwMildKSkiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTksOTkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNCwxMDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NSw0NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTksOTkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTEsOTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTIsNTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDU2LDU2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTMsNTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDU1LDU1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTQsNTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDUzLDUzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTUsNTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDQ4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDMsMTAzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTcsNTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDU1LDU1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDksNDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDQ4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1MCw1MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkzLDkzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000 = (IConstructor) _read("prod(lit(\"iter(\\\\char-class([range(48,57),range(65,70),range(97,102)]))\"),[\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(40,40)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(52,52)]),\\char-class([range(56,56)]),\\char-class([range(44,44)]),\\char-class([range(53,53)]),\\char-class([range(55,55)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(54,54)]),\\char-class([range(53,53)]),\\char-class([range(44,44)]),\\char-class([range(55,55)]),\\char-class([range(48,48)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(57,57)]),\\char-class([range(55,55)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(48,48)]),\\char-class([range(50,50)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiY2xlYXIiLHNvcnQoIlNoZWxsQ29tbWFuZCIpKSxbbGl0KCJjbGVhciIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgidGVybWluYXRvciIsbGV4KCJPcHRpb25hbFRlcm1pbmF0b3IiKSldLHt9KQ0000 = (IConstructor) _read("prod(label(\"clear\",sort(\"ShellCommand\")),[lit(\"clear\"),layouts(\"LAYOUTLIST\"),label(\"terminator\",lex(\"OptionalTerminator\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiZGVmYXVsdCIsc29ydCgiU3RydWN0dXJlZFR5cGUiKSksW2xhYmVsKCJiYXNpY1R5cGUiLHNvcnQoIkJhc2ljVHlwZSIpKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCJbIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJhcmd1bWVudHMiLFxpdGVyLXNlcHMoc29ydCgiVHlwZUFyZyIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIl0iKV0se30p = (IConstructor) _read("prod(label(\"default\",sort(\"StructuredType\")),[label(\"basicType\",sort(\"BasicType\")),layouts(\"LAYOUTLIST\"),lit(\"[\"),layouts(\"LAYOUTLIST\"),label(\"arguments\",\\iter-seps(sort(\"TypeArg\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")])),layouts(\"LAYOUTLIST\"),lit(\"]\")],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgiZGF0YSIsc29ydCgiU3ludGF4Um9sZU1vZGlmaWVyIikpLFtsaXQoImRhdGEiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCJbIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJhcmciLHNvcnQoIlR5cGUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiXSIpXSx7fSk00 = (IConstructor) _read("prod(label(\"data\",sort(\"SyntaxRoleModifier\")),[lit(\"data\"),layouts(\"LAYOUTLIST\"),lit(\"[\"),layouts(\"LAYOUTLIST\"),label(\"arg\",sort(\"Type\")),layouts(\"LAYOUTLIST\"),lit(\"]\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChrZXl3b3JkcygiUmFzY2FsS2V5d29yZHMiKSxbbGl0KCJub3RpbiIpXSx7fSk00 = (IConstructor) _read("prod(keywords(\"RascalKeywords\"),[lit(\"notin\")],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgibGF5b3V0Iixzb3J0KCJTeW50YXhSb2xlTW9kaWZpZXIiKSksW2xpdCgibGF5b3V0IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiWyIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiYXJnIixzb3J0KCJUeXBlIikpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIl0iKV0se30p = (IConstructor) _read("prod(label(\"layout\",sort(\"SyntaxRoleModifier\")),[lit(\"layout\"),layouts(\"LAYOUTLIST\"),lit(\"[\"),layouts(\"LAYOUTLIST\"),label(\"arg\",sort(\"Type\")),layouts(\"LAYOUTLIST\"),lit(\"]\")],{})", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihcaXRlci1zdGFyLXNlcHMoc29ydCgiRXhwcmVzc2lvbiIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkp = (IConstructor) _read("regular(\\iter-star-seps(sort(\"Expression\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")]))", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiZGVzY2VuZGFudCIsc29ydCgiUGF0dGVybiIpKSxbbGl0KCIvIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJwYXR0ZXJuIixzb3J0KCJQYXR0ZXJuIikpXSx7fSk00 = (IConstructor) _read("prod(label(\"descendant\",sort(\"Pattern\")),[lit(\"/\"),layouts(\"LAYOUTLIST\"),label(\"pattern\",sort(\"Pattern\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJTdHJhdGVneVwiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Myw4MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEyMSwxMjEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"Strategy\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(83,83)]),\\char-class([range(116,116)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(103,103)]),\\char-class([range(121,121)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
@@ -4248,6 +4266,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsYWJlbCgicG9zdCIsc29ydCgiUHJvdG9jb2xUYWlsIikpLFtsYWJlbCgicG9zdCIsbGV4KCJQb3N0UHJvdG9jb2xDaGFycyIpKV0se30p = (IConstructor) _read("prod(label(\"post\",sort(\"ProtocolTail\")),[label(\"post\",lex(\"PostProtocolChars\"))],{})", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihcaXRlci1zdGFyLXNlcHMoc29ydCgiVHlwZSIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkp = (IConstructor) _read("regular(\\iter-star-seps(sort(\"Type\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")]))", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIlxcaXRlci1zdGFyKFxcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpLHJhbmdlKDY1LDkwKSxyYW5nZSg5NSw5NSkscmFuZ2UoOTcsMTIyKV0pKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoOTIsOTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA4LDEwOCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5MSw5MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Miw1MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTYsNTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Myw1MyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTUsNTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1NCw1NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTMsNTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Nyw1NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Nyw1NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTMsNTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Nyw1NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTMsNTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg1Nyw1NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTUsNTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0OSw0OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNTAsNTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDUwLDUwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTMsOTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"\\\\iter-star(\\\\char-class([range(48,57),range(65,90),range(95,95),range(97,122)]))\"),[\\char-class([range(92,92)]),\\char-class([range(105,105)]),\\char-class([range(116,116)]),\\char-class([range(101,101)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(115,115)]),\\char-class([range(116,116)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(40,40)]),\\char-class([range(92,92)]),\\char-class([range(99,99)]),\\char-class([range(104,104)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(45,45)]),\\char-class([range(99,99)]),\\char-class([range(108,108)]),\\char-class([range(97,97)]),\\char-class([range(115,115)]),\\char-class([range(115,115)]),\\char-class([range(40,40)]),\\char-class([range(91,91)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(52,52)]),\\char-class([range(56,56)]),\\char-class([range(44,44)]),\\char-class([range(53,53)]),\\char-class([range(55,55)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(54,54)]),\\char-class([range(53,53)]),\\char-class([range(44,44)]),\\char-class([range(57,57)]),\\char-class([range(48,48)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(57,57)]),\\char-class([range(53,53)]),\\char-class([range(44,44)]),\\char-class([range(57,57)]),\\char-class([range(53,53)]),\\char-class([range(41,41)]),\\char-class([range(44,44)]),\\char-class([range(114,114)]),\\char-class([range(97,97)]),\\char-class([range(110,110)]),\\char-class([range(103,103)]),\\char-class([range(101,101)]),\\char-class([range(40,40)]),\\char-class([range(57,57)]),\\char-class([range(55,55)]),\\char-class([range(44,44)]),\\char-class([range(49,49)]),\\char-class([range(50,50)]),\\char-class([range(50,50)]),\\char-class([range(41,41)]),\\char-class([range(93,93)]),\\char-class([range(41,41)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgia2V5d29yZCIsc29ydCgiU3ludGF4RGVmaW5pdGlvbiIpKSxbbGl0KCJrZXl3b3JkIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJkZWZpbmVkIixjb25kaXRpb25hbChzb3J0KCJTeW0iKSx7ZXhjZXB0KCJjaGFyYWN0ZXJDbGFzcyIpfSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIj0iKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInByb2R1Y3Rpb24iLHNvcnQoIlByb2QiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiOyIpXSx7dGFnKCJGb2xkYWJsZSIoKSl9KQ0000 = (IConstructor) _read("prod(label(\"keyword\",sort(\"SyntaxDefinition\")),[lit(\"keyword\"),layouts(\"LAYOUTLIST\"),label(\"defined\",conditional(sort(\"Sym\"),{except(\"characterClass\")})),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiaGlzdG9yeSIsc29ydCgiU2hlbGxDb21tYW5kIikpLFtsaXQoImhpc3RvcnkiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInRlcm1pbmF0b3IiLGxleCgiT3B0aW9uYWxUZXJtaW5hdG9yIikpXSx7fSk00 = (IConstructor) _read("prod(label(\"history\",sort(\"ShellCommand\")),[lit(\"history\"),layouts(\"LAYOUTLIST\"),label(\"terminator\",lex(\"OptionalTerminator\"))],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsZXgoIlJlZ0V4cCIpLFtsaXQoIlw8IiksbGV4KCJOYW1lIiksbGl0KCI6IiksXGl0ZXItc3RhcihsZXgoIk5hbWVkUmVnRXhwIikpLGxpdCgiXD4iKV0se30p = (IConstructor) _read("prod(lex(\"RegExp\"),[lit(\"\\<\"),lex(\"Name\"),lit(\":\"),\\iter-star(lex(\"NamedRegExp\")),lit(\"\\>\")],{})", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihcaXRlci1zdGFyLXNlcHMoc29ydCgiVG9wbGV2ZWwiKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpXSkp = (IConstructor) _read("regular(\\iter-star-seps(sort(\"Toplevel\"),[layouts(\"LAYOUTLIST\")]))", RascalValueFactory.Production);
@@ -4315,6 +4334,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixsZXgoIlJlZ0V4cExpdGVyYWwiKSksW1xjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSksbGl0KCJzb3J0KFwiUmVnRXhwTGl0ZXJhbFwiKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIobGV4KCJSZWdFeHBMaXRlcmFsIikpKX0p = (IConstructor) _read("prod(label(\"$MetaHole\",lex(\"RegExpLiteral\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"RegExpLiteral\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(lex(\"RegExpLiteral\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIj8iKSxbXGNoYXItY2xhc3MoW3JhbmdlKDYzLDYzKV0pXSx7fSk00 = (IConstructor) _read("prod(lit(\"?\"),[\\char-class([range(63,63)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiYnJhY2tldCIsc29ydCgiQ2xhc3MiKSksW2xpdCgiKCIpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsYWJlbCgiY2hhckNsYXNzIixzb3J0KCJDbGFzcyIpKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIpIildLHticmFja2V0KCl9KQ0000 = (IConstructor) _read("prod(label(\"bracket\",sort(\"Class\")),[lit(\"(\"),layouts(\"LAYOUTLIST\"),label(\"charClass\",sort(\"Class\")),layouts(\"LAYOUTLIST\"),lit(\")\")],{bracket()})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgibGFuZ3VhZ2UiLHNvcnQoIlN5bnRheERlZmluaXRpb24iKSksW2xhYmVsKCJzdGFydCIsc29ydCgiU3RhcnQiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgic3ludGF4IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJkZWZpbmVkIixjb25kaXRpb25hbChzb3J0KCJTeW0iKSx7ZXhjZXB0KCJjaGFyYWN0ZXJDbGFzcyIpfSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIj0iKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInByb2R1Y3Rpb24iLHNvcnQoIlByb2QiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiOyIpXSx7dGFnKCJGb2xkYWJsZSIoKSl9KQ0000 = (IConstructor) _read("prod(label(\"language\",sort(\"SyntaxDefinition\")),[label(\"start\",sort(\"Start\")),layouts(\"LAYOUTLIST\"),lit(\"syntax\"),layouts(\"LAYOUTLIST\"),label(\"defined\",conditional(sort(\"Sym\"),{except(\"characterClass\")})),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsZXgoIk1pZFBhdGhDaGFycyIpLFtsaXQoIlw11IiksbGV4KCJVUkxDaGFycyIpLGxpdCgiXDwiKV0se30p = (IConstructor) _read("prod(lex(\"MidPathChars\"),[lit(\"\\>\"),lex(\"URLChars\"),lit(\"\\<\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJUeXBlVmFyXCIpIiksW1xjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDg0LDg0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMjEsMTIxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTIsMTEyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Niw4NildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"TypeVar\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(84,84)]),\\char-class([range(121,121)]),\\char-class([range(112,112)]),\\char-class([range(101,101)]),\\char-class([range(86,86)]),\\char-class([range(97,97)]),\\char-class([range(114,114)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJWaXNpdCIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoInNvcnQoXCJWaXNpdFwiKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoc29ydCgiVmlzaXQiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Visit\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"Visit\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"Visit\")))})", RascalValueFactory.Production);
@@ -4373,6 +4393,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cHJvZChsYWJlbCgicmF0aW9uYWwiLHNvcnQoIkJhc2ljVHlwZSIpKSxbbGl0KCJyYXQiKV0se30p = (IConstructor) _read("prod(label(\"rational\",sort(\"BasicType\")),[lit(\"rat\")],{})", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihcaXRlci1zdGFyLXNlcHMoc29ydCgiVmFyaWFibGUiKSxbbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiLCIpLGxheW91dHMoIkxBWU9VVExJU1QiKV0pKQ0000 = (IConstructor) _read("regular(\\iter-star-seps(sort(\"Variable\"),[layouts(\"LAYOUTLIST\"),lit(\",\"),layouts(\"LAYOUTLIST\")]))", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInNvcnQoXCJQcm90b2NvbFRhaWxcIikiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoODAsODApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk5LDk5KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4NCw4NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p = (IConstructor) _read("prod(lit(\"sort(\\\"ProtocolTail\\\")\"),[\\char-class([range(115,115)]),\\char-class([range(111,111)]),\\char-class([range(114,114)]),\\char-class([range(116,116)]),\\char-class([range(40,40)]),\\char-class([range(34,34)]),\\char-class([range(80,80)]),\\char-class([range(114,114)]),\\char-class([range(111,111)]),\\char-class([range(116,116)]),\\char-class([range(111,111)]),\\char-class([range(99,99)]),\\char-class([range(111,111)]),\\char-class([range(108,108)]),\\char-class([range(84,84)]),\\char-class([range(97,97)]),\\char-class([range(105,105)]),\\char-class([range(108,108)]),\\char-class([range(34,34)]),\\char-class([range(41,41)])],{})", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgia2V5d29yZCIsc29ydCgiU3ludGF4Um9sZU1vZGlmaWVyIikpLFtsaXQoImtleXdvcmQiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCJbIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJhcmciLHNvcnQoIlR5cGUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiXSIpXSx7fSk00 = (IConstructor) _read("prod(label(\"keyword\",sort(\"SyntaxRoleModifier\")),[lit(\"keyword\"),layouts(\"LAYOUTLIST\"),lit(\"[\"),layouts(\"LAYOUTLIST\"),label(\"arg\",sort(\"Type\")),layouts(\"LAYOUTLIST\"),lit(\"]\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJLZXl3b3JkRm9ybWFsIikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIktleXdvcmRGb3JtYWxcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKHNvcnQoIktleXdvcmRGb3JtYWwiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"KeywordFormal\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"KeywordFormal\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"KeywordFormal\")))})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgidmlldyIsc29ydCgiS2luZCIpKSxbbGl0KCJ2aWV3IildLHt9KQ0000 = (IConstructor) _read("prod(label(\"view\",sort(\"Kind\")),[lit(\"view\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoIm9uZSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKV0se30p = (IConstructor) _read("prod(lit(\"one\"),[\\char-class([range(111,111)]),\\char-class([range(110,110)]),\\char-class([range(101,101)])],{})", RascalValueFactory.Production);
@@ -4476,6 +4497,7 @@ protected IntegerList getFilteredParents(int childId) {
private static final IConstructor cmVndWxhcihpdGVyKGxleCgiTEFZT1VUIikpKQ0000 = (IConstructor) _read("regular(iter(lex(\"LAYOUT\")))", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJWYXJpYW50IikpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pLGxpdCgic29ydChcIlZhcmlhbnRcIikiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKHNvcnQoIlZhcmlhbnQiKSkpfSk00 = (IConstructor) _read("prod(label(\"$MetaHole\",sort(\"Variant\")),[\\char-class([range(0,0)]),lit(\"sort(\\\"Variant\\\")\"),lit(\":\"),iter(\\char-class([range(48,57)])),\\char-class([range(0,0)])],{tag(\"holeType\"(sort(\"Variant\")))})", RascalValueFactory.Production);
private static final IConstructor cmVndWxhcihvcHQoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSk00 = (IConstructor) _read("regular(opt(\\char-class([range(48,57)])))", RascalValueFactory.Production);
+ private static final IConstructor cHJvZChsYWJlbCgibGV4aWNhbCIsc29ydCgiU3ludGF4RGVmaW5pdGlvbiIpKSxbbGl0KCJsZXhpY2FsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJkZWZpbmVkIixjb25kaXRpb25hbChzb3J0KCJTeW0iKSx7ZXhjZXB0KCJjaGFyYWN0ZXJDbGFzcyIpfSkpLGxheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIj0iKSxsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGFiZWwoInByb2R1Y3Rpb24iLHNvcnQoIlByb2QiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiOyIpXSx7dGFnKCJGb2xkYWJsZSIoKSl9KQ0000 = (IConstructor) _read("prod(label(\"lexical\",sort(\"SyntaxDefinition\")),[lit(\"lexical\"),layouts(\"LAYOUTLIST\"),label(\"defined\",conditional(sort(\"Sym\"),{except(\"characterClass\")})),layouts(\"LAYOUTLIST\"),lit(\"=\"),layouts(\"LAYOUTLIST\"),label(\"production\",sort(\"Prod\")),layouts(\"LAYOUTLIST\"),lit(\";\")],{tag(\"Foldable\"())})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsYWJlbCgiZW1wdHkiLHNvcnQoIlN5bSIpKSxbbGl0KCIoIiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiKSIpXSx7fSk00 = (IConstructor) _read("prod(label(\"empty\",sort(\"Sym\")),[lit(\"(\"),layouts(\"LAYOUTLIST\"),lit(\")\")],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsZXgoIlByb3RvY29sQ2hhcnMiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDEyNCwxMjQpXSksbGV4KCJVUkxDaGFycyIpLGNvbmRpdGlvbmFsKGxpdCgiOi8vIikse1xub3QtZm9sbG93KFxjaGFyLWNsYXNzKFtyYW5nZSg5LDEwKSxyYW5nZSgxMywxMykscmFuZ2UoMzIsMzIpLHJhbmdlKDE2MCwxNjApLHJhbmdlKDU3NjAsNTc2MCkscmFuZ2UoODE5Miw4MjAyKSxyYW5nZSg4MjM5LDgyMzkpLHJhbmdlKDgyODcsODI4NykscmFuZ2UoMTIyODgsMTIyODgpXSkpfSldLHt9KQ0000 = (IConstructor) _read("prod(lex(\"ProtocolChars\"),[\\char-class([range(124,124)]),lex(\"URLChars\"),conditional(lit(\"://\"),{\\not-follow(\\char-class([range(9,10),range(13,13),range(32,32),range(160,160),range(5760,5760),range(8192,8202),range(8239,8239),range(8287,8287),range(12288,12288)]))})],{})", RascalValueFactory.Production);
private static final IConstructor cHJvZChsaXQoInJldHVybiIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE3LDExNyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKV0se30p = (IConstructor) _read("prod(lit(\"return\"),[\\char-class([range(114,114)]),\\char-class([range(101,101)]),\\char-class([range(116,116)]),\\char-class([range(117,117)]),\\char-class([range(114,114)]),\\char-class([range(110,110)])],{})", RascalValueFactory.Production);
@@ -6521,41 +6543,41 @@ protected static class Renaming {
protected static final void _init_cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJSZW5hbWluZyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIlxcaXRlci1zdGFyLXNlcHMoc29ydChcIlJlbmFtaW5nXCIpLFtsaXQoXCIsXCIpXSkiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKFxpdGVyLXN0YXItc2Vwcyhzb3J0KCJSZW5hbWluZyIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpKX0p(ExpectBuilder builder) {
AbstractStackNode[] tmp = (AbstractStackNode[]) new AbstractStackNode[5];
- tmp[0] = new CharStackNode(2080, 0, new int[][]{{0,0}}, null, null);
- tmp[1] = new LiteralStackNode(2081, 1, cHJvZChsaXQoIlxcaXRlci1zdGFyLXNlcHMoc29ydChcIlJlbmFtaW5nXCIpLFtsaXQoXCIsXCIpXSkiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NSw0NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTIsMTEyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Miw4MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOSwxMDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkxLDkxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkzLDkzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p, new int[] {92,105,116,101,114,45,115,116,97,114,45,115,101,112,115,40,115,111,114,116,40,34,82,101,110,97,109,105,110,103,34,41,44,91,108,105,116,40,34,44,34,41,93,41}, null, null);
- tmp[2] = new LiteralStackNode(2082, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
- tmp[3] = new ListStackNode(2084, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2083, 0, new int[][]{{48,57}}, null, null), true, null, null);
- tmp[4] = new CharStackNode(2085, 4, new int[][]{{0,0}}, null, null);
+ tmp[0] = new CharStackNode(2077, 0, new int[][]{{0,0}}, null, null);
+ tmp[1] = new LiteralStackNode(2078, 1, cHJvZChsaXQoIlxcaXRlci1zdGFyLXNlcHMoc29ydChcIlJlbmFtaW5nXCIpLFtsaXQoXCIsXCIpXSkiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NSw0NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ1LDQ1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTIsMTEyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Miw4MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOSwxMDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkxLDkxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDgsMTA4KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQ0LDQ0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDkzLDkzKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p, new int[] {92,105,116,101,114,45,115,116,97,114,45,115,101,112,115,40,115,111,114,116,40,34,82,101,110,97,109,105,110,103,34,41,44,91,108,105,116,40,34,44,34,41,93,41}, null, null);
+ tmp[2] = new LiteralStackNode(2079, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
+ tmp[3] = new ListStackNode(2081, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2080, 0, new int[][]{{48,57}}, null, null), true, null, null);
+ tmp[4] = new CharStackNode(2082, 4, new int[][]{{0,0}}, null, null);
builder.addAlternative(RascalParser.cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJSZW5hbWluZyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIlxcaXRlci1zdGFyLXNlcHMoc29ydChcIlJlbmFtaW5nXCIpLFtsaXQoXCIsXCIpXSkiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKFxpdGVyLXN0YXItc2Vwcyhzb3J0KCJSZW5hbWluZyIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIiksbGl0KCIsIiksbGF5b3V0cygiTEFZT1VUTElTVCIpXSkpKX0p, tmp);
}
protected static final void _init_cHJvZChsYWJlbCgiZGVmYXVsdCIsc29ydCgiUmVuYW1pbmciKSksW2xhYmVsKCJmcm9tIixsZXgoIk5hbWUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiPVw11IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJ0byIsbGV4KCJOYW1lIikpXSx7fSk00(ExpectBuilder builder) {
AbstractStackNode[] tmp = (AbstractStackNode[]) new AbstractStackNode[5];
- tmp[0] = new NonTerminalStackNode(2093, 0, "Name", null, null);
- tmp[1] = new NonTerminalStackNode(2095, 1, "$l_LAYOUTLIST", null, null);
- tmp[2] = new LiteralStackNode(2096, 2, cHJvZChsaXQoIj1cPiIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoNjEsNjEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDYyLDYyKV0pXSx7fSk00, new int[] {61,62}, null, null);
- tmp[3] = new NonTerminalStackNode(2097, 3, "$l_LAYOUTLIST", null, null);
- tmp[4] = new NonTerminalStackNode(2098, 4, "Name", null, null);
+ tmp[0] = new NonTerminalStackNode(2090, 0, "Name", null, null);
+ tmp[1] = new NonTerminalStackNode(2092, 1, "$l_LAYOUTLIST", null, null);
+ tmp[2] = new LiteralStackNode(2093, 2, cHJvZChsaXQoIj1cPiIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoNjEsNjEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDYyLDYyKV0pXSx7fSk00, new int[] {61,62}, null, null);
+ tmp[3] = new NonTerminalStackNode(2094, 3, "$l_LAYOUTLIST", null, null);
+ tmp[4] = new NonTerminalStackNode(2095, 4, "Name", null, null);
builder.addAlternative(RascalParser.cHJvZChsYWJlbCgiZGVmYXVsdCIsc29ydCgiUmVuYW1pbmciKSksW2xhYmVsKCJmcm9tIixsZXgoIk5hbWUiKSksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxpdCgiPVw11IiksbGF5b3V0cygiTEFZT1VUTElTVCIpLGxhYmVsKCJ0byIsbGV4KCJOYW1lIikpXSx7fSk00, tmp);
}
protected static final void _init_cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJSZW5hbWluZyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoInNvcnQoXCJSZW5hbWluZ1wiKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoc29ydCgiUmVuYW1pbmciKSkpfSk00(ExpectBuilder builder) {
AbstractStackNode[] tmp = (AbstractStackNode[]) new AbstractStackNode[5];
- tmp[0] = new CharStackNode(2102, 0, new int[][]{{0,0}}, null, null);
- tmp[1] = new LiteralStackNode(2103, 1, cHJvZChsaXQoInNvcnQoXCJSZW5hbWluZ1wiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Miw4MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOSwxMDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p, new int[] {115,111,114,116,40,34,82,101,110,97,109,105,110,103,34,41}, null, null);
- tmp[2] = new LiteralStackNode(2104, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
- tmp[3] = new ListStackNode(2106, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2105, 0, new int[][]{{48,57}}, null, null), true, null, null);
- tmp[4] = new CharStackNode(2107, 4, new int[][]{{0,0}}, null, null);
+ tmp[0] = new CharStackNode(2099, 0, new int[][]{{0,0}}, null, null);
+ tmp[1] = new LiteralStackNode(2100, 1, cHJvZChsaXQoInNvcnQoXCJSZW5hbWluZ1wiKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTExLDExMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg4Miw4MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOSwxMDkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMCwxMTApXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMywxMDMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p, new int[] {115,111,114,116,40,34,82,101,110,97,109,105,110,103,34,41}, null, null);
+ tmp[2] = new LiteralStackNode(2101, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
+ tmp[3] = new ListStackNode(2103, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2102, 0, new int[][]{{48,57}}, null, null), true, null, null);
+ tmp[4] = new CharStackNode(2104, 4, new int[][]{{0,0}}, null, null);
builder.addAlternative(RascalParser.cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJSZW5hbWluZyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoInNvcnQoXCJSZW5hbWluZ1wiKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoc29ydCgiUmVuYW1pbmciKSkpfSk00, tmp);
}
protected static final void _init_cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJSZW5hbWluZyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIlxcaXRlci1zZXBzKHNvcnQoXCJSZW5hbWluZ1wiKSxbbGl0KFwiLFwiKV0pIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihcaXRlci1zZXBzKHNvcnQoIlJlbmFtaW5nIiksW2xheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIiwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00(ExpectBuilder builder) {
AbstractStackNode[] tmp = (AbstractStackNode[]) new AbstractStackNode[5];
- tmp[0] = new CharStackNode(2111, 0, new int[][]{{0,0}}, null, null);
- tmp[1] = new LiteralStackNode(2112, 1, cHJvZChsaXQoIlxcaXRlci1zZXBzKHNvcnQoXCJSZW5hbWluZ1wiKSxbbGl0KFwiLFwiKV0pIiksW1xjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDUsNDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMiwxMTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDgyLDgyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA5LDEwOSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTEsOTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTMsOTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pXSx7fSk00, new int[] {92,105,116,101,114,45,115,101,112,115,40,115,111,114,116,40,34,82,101,110,97,109,105,110,103,34,41,44,91,108,105,116,40,34,44,34,41,93,41}, null, null);
- tmp[2] = new LiteralStackNode(2113, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
- tmp[3] = new ListStackNode(2115, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2114, 0, new int[][]{{48,57}}, null, null), true, null, null);
- tmp[4] = new CharStackNode(2116, 4, new int[][]{{0,0}}, null, null);
+ tmp[0] = new CharStackNode(2108, 0, new int[][]{{0,0}}, null, null);
+ tmp[1] = new LiteralStackNode(2109, 1, cHJvZChsaXQoIlxcaXRlci1zZXBzKHNvcnQoXCJSZW5hbWluZ1wiKSxbbGl0KFwiLFwiKV0pIiksW1xjaGFyLWNsYXNzKFtyYW5nZSg5Miw5MildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDUsNDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwMSwxMDEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMiwxMTIpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDgyLDgyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTAsMTEwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA5LDEwOSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTEwLDExMCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAzLDEwMyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NCw0NCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTEsOTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwOCwxMDgpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNSwxMDUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDQsNDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTMsOTMpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pXSx7fSk00, new int[] {92,105,116,101,114,45,115,101,112,115,40,115,111,114,116,40,34,82,101,110,97,109,105,110,103,34,41,44,91,108,105,116,40,34,44,34,41,93,41}, null, null);
+ tmp[2] = new LiteralStackNode(2110, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
+ tmp[3] = new ListStackNode(2112, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2111, 0, new int[][]{{48,57}}, null, null), true, null, null);
+ tmp[4] = new CharStackNode(2113, 4, new int[][]{{0,0}}, null, null);
builder.addAlternative(RascalParser.cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJSZW5hbWluZyIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIlxcaXRlci1zZXBzKHNvcnQoXCJSZW5hbWluZ1wiKSxbbGl0KFwiLFwiKV0pIiksbGl0KCI6IiksaXRlcihcY2hhci1jbGFzcyhbcmFuZ2UoNDgsNTcpXSkpLFxjaGFyLWNsYXNzKFtyYW5nZSgwLDApXSldLHt0YWcoImhvbGVUeXBlIihcaXRlci1zZXBzKHNvcnQoIlJlbmFtaW5nIiksW2xheW91dHMoIkxBWU9VVExJU1QiKSxsaXQoIiwiKSxsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00, tmp);
}
@@ -6587,53 +6609,53 @@ protected static class Catch {
protected static final void _init_cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJDYXRjaCIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIml0ZXIoc29ydChcIkNhdGNoXCIpKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoXGl0ZXItc2Vwcyhzb3J0KCJDYXRjaCIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00(ExpectBuilder builder) {
AbstractStackNode[] tmp = (AbstractStackNode[]) new AbstractStackNode[5];
- tmp[0] = new CharStackNode(2168, 0, new int[][]{{0,0}}, null, null);
- tmp[1] = new LiteralStackNode(2169, 1, cHJvZChsaXQoIml0ZXIoc29ydChcIkNhdGNoXCIpKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNjcsNjcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p, new int[] {105,116,101,114,40,115,111,114,116,40,34,67,97,116,99,104,34,41,41}, null, null);
- tmp[2] = new LiteralStackNode(2170, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
- tmp[3] = new ListStackNode(2172, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2171, 0, new int[][]{{48,57}}, null, null), true, null, null);
- tmp[4] = new CharStackNode(2173, 4, new int[][]{{0,0}}, null, null);
+ tmp[0] = new CharStackNode(2165, 0, new int[][]{{0,0}}, null, null);
+ tmp[1] = new LiteralStackNode(2166, 1, cHJvZChsaXQoIml0ZXIoc29ydChcIkNhdGNoXCIpKSIpLFtcY2hhci1jbGFzcyhbcmFuZ2UoMTA1LDEwNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTAxLDEwMSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE0LDExNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDAsNDApXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNSwxMTUpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExMSwxMTEpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNiwxMTYpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgzNCwzNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNjcsNjcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDk3LDk3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5OSw5OSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTA0LDEwNCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQxLDQxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKV0se30p, new int[] {105,116,101,114,40,115,111,114,116,40,34,67,97,116,99,104,34,41,41}, null, null);
+ tmp[2] = new LiteralStackNode(2167, 2, cHJvZChsaXQoIjoiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDU4LDU4KV0pXSx7fSk00, new int[] {58}, null, null);
+ tmp[3] = new ListStackNode(2169, 3, cmVndWxhcihpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSkp, new CharStackNode(2168, 0, new int[][]{{48,57}}, null, null), true, null, null);
+ tmp[4] = new CharStackNode(2170, 4, new int[][]{{0,0}}, null, null);
builder.addAlternative(RascalParser.cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJDYXRjaCIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIml0ZXIoc29ydChcIkNhdGNoXCIpKSIpLGxpdCgiOiIpLGl0ZXIoXGNoYXItY2xhc3MoW3JhbmdlKDQ4LDU3KV0pKSxcY2hhci1jbGFzcyhbcmFuZ2UoMCwwKV0pXSx7dGFnKCJob2xlVHlwZSIoXGl0ZXItc2Vwcyhzb3J0KCJDYXRjaCIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00, tmp);
}
protected static final void _init_cHJvZChsYWJlbCgiJE1ldGFIb2xlIixzb3J0KCJDYXRjaCIpKSxbXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKSxsaXQoIlxcaXRlci1zdGFyKHNvcnQoXCJDYXRjaFwiKSkiKSxsaXQoIjoiKSxpdGVyKFxjaGFyLWNsYXNzKFtyYW5nZSg0OCw1NyldKSksXGNoYXItY2xhc3MoW3JhbmdlKDAsMCldKV0se3RhZygiaG9sZVR5cGUiKFxpdGVyLXN0YXItc2Vwcyhzb3J0KCJDYXRjaCIpLFtsYXlvdXRzKCJMQVlPVVRMSVNUIildKSkpfSk00(ExpectBuilder builder) {
AbstractStackNode[] tmp = (AbstractStackNode[]) new AbstractStackNode[5];
- tmp[0] = new CharStackNode(2179, 0, new int[][]{{0,0}}, null, null);
- tmp[1] = new LiteralStackNode(2180, 1, cHJvZChsaXQoIlxcaXRlci1zdGFyKHNvcnQoXCJDYXRjaFwiKSkiKSxbXGNoYXItY2xhc3MoW3JhbmdlKDkyLDkyKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDUsMTA1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMDEsMTAxKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0NSw0NSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE1LDExNSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTcsOTcpXSksXGNoYXItY2xhc3MoW3JhbmdlKDExNCwxMTQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDQwLDQwKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTUsMTE1KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTEsMTExKV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTQsMTE0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSgxMTYsMTE2KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MCw0MCldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMzQsMzQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDY3LDY3KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg5Nyw5NyldKSxcY2hhci1jbGFzcyhbcmFuZ2UoMTE2LDExNildKSxcY2hhci1jbGFzcyhbcmFuZ2UoOTksOTkpXSksXGNoYXItY2xhc3MoW3JhbmdlKDEwNCwxMDQpXSksXGNoYXItY2xhc3MoW3JhbmdlKDM0LDM0KV0pLFxjaGFyLWNsYXNzKFtyYW5nZSg0MSw0MSldKSxcY2hhci1jbGFzcyhbcmFuZ2UoNDEsNDEpXSldLHt9KQ0000, new int[] {92,105,116,101,114,45,115,116,97,114,40,115,111,114,116,40,34,67,97,116,99,104,34,41,41}, null, null);
- tmp[2] = new LiteralStackNode