diff --git a/centaur/src/main/resources/standardTestCases/struct_literal.test b/centaur/src/main/resources/standardTestCases/struct_literal.test new file mode 100644 index 00000000000..72755145a02 --- /dev/null +++ b/centaur/src/main/resources/standardTestCases/struct_literal.test @@ -0,0 +1,12 @@ +name: struct_literal +testFormat: workflowsuccess + +files { + workflow: struct_literal/struct_literal.wdl +} + +metadata { + workflowName: struct_literal + status: Succeeded + "outputs.struct_literal.out": 44 +} diff --git a/centaur/src/main/resources/standardTestCases/struct_literal/struct_literal.wdl b/centaur/src/main/resources/standardTestCases/struct_literal/struct_literal.wdl new file mode 100644 index 00000000000..215fd40f8d3 --- /dev/null +++ b/centaur/src/main/resources/standardTestCases/struct_literal/struct_literal.wdl @@ -0,0 +1,68 @@ +version development-1.1 + +struct Plant { + String color + Int id +} + +struct Fungi { + File fungiFile +} + + +struct Animal { + Plant jacket + Fungi hat +} + +task a { + input { + Plant in_plant_literal = Plant{color: "red", id: 44} + } + + command { + echo "${in_plant_literal.id}" + } + + output { + Animal out_animal = Animal{jacket: Plant{color: "green", id: 10}, hat: Fungi{fungiFile: stdout()}} + } + + runtime { + docker: "ubuntu:latest" + } + + meta { + volatile: true + } +} + +task b { + input { + Animal in_animal + } + + command { + cat ${in_animal.hat.fungiFile} + } + + output { + Int out = read_int(stdout()) + } + + runtime { + docker: "ubuntu:latest" + } + + meta { + volatile: true + } +} + +workflow struct_literal { + call a + call b {input: in_animal=a.out_animal} + output { + Int out = b.out + } +} diff --git a/wdl/model/draft3/src/main/scala/wdl/model/draft3/elements/ExpressionElement.scala b/wdl/model/draft3/src/main/scala/wdl/model/draft3/elements/ExpressionElement.scala index d6d8948d700..44e4c60a23a 100644 --- a/wdl/model/draft3/src/main/scala/wdl/model/draft3/elements/ExpressionElement.scala +++ b/wdl/model/draft3/src/main/scala/wdl/model/draft3/elements/ExpressionElement.scala @@ -33,6 +33,8 @@ object ExpressionElement { final case class KvPair(key: String, value: ExpressionElement) final case class ObjectLiteral(elements: Map[String, ExpressionElement]) extends ExpressionElement + final case class StructLiteral(structTypeName: String, elements: Map[String, ExpressionElement]) + extends ExpressionElement final case class ArrayLiteral(elements: Seq[ExpressionElement]) extends ExpressionElement final case class MapLiteral(elements: Map[ExpressionElement, ExpressionElement]) extends ExpressionElement final case class PairLiteral(left: ExpressionElement, right: ExpressionElement) extends ExpressionElement diff --git a/wdl/transforms/biscayne/src/main/java/wdl/biscayne/parser/WdlParser.java b/wdl/transforms/biscayne/src/main/java/wdl/biscayne/parser/WdlParser.java index 26a2ea35d2e..3e4867c7784 100644 --- a/wdl/transforms/biscayne/src/main/java/wdl/biscayne/parser/WdlParser.java +++ b/wdl/transforms/biscayne/src/main/java/wdl/biscayne/parser/WdlParser.java @@ -1,9 +1,9 @@ /* - * This file was generated by Hermes Parser Generator on Wed Mar 22 19:44:20 2023 + * This file was generated by Hermes Parser Generator on Fri Mar 15 14:50:13 2024 * - * Hermes command: hermes generate resources/grammar.hgr --language=java --directory=./java --name=wdl --java-package=wdl.biscayne.parser --java-use-apache-commons --java-imports=org.apache.commons.lang3.StringEscapeUtils --header - * Run from: .. (relative to this file) + * Hermes command: hermes generate src/main/resources/grammar.hgr --language=java --directory=src/main/java --name=wdl --java-package=wdl.biscayne.parser --java-use-apache-commons --java-imports=org.apache.commons.lang3.StringEscapeUtils --header + * Run from: ../../.. (relative to this file) * Hermes version: hermes-parser 2.0rc6 * * !!! DO NOT CHANGE THIS FILE DIRECTLY !!! @@ -252,12 +252,12 @@ public interface ParseTreeNode { } public static class Terminal implements AstNode, ParseTreeNode { - public int id; - public String terminal_str; - public String source_string; - public String resource; - public int line; - public int col; + private int id; + private String terminal_str; + private String source_string; + private String resource; + private int line; + private int col; public Terminal(int id, String terminal_str, String source_string, String resource, int line, int col) { this.id = id; this.terminal_str = terminal_str; @@ -516,73 +516,73 @@ public interface TerminalIdentifier { public String string(); } public enum WdlTerminalIdentifier implements TerminalIdentifier { - TERMINAL_AFTER(23, "after"), - TERMINAL_ALIAS(27, "alias"), - TERMINAL_AS(10, "as"), - TERMINAL_ASTERISK(18, "asterisk"), - TERMINAL_BOOLEAN(13, "boolean"), - TERMINAL_CALL(60, "call"), - TERMINAL_CMD_ATTR_HINT(50, "cmd_attr_hint"), - TERMINAL_CMD_PART(11, "cmd_part"), - TERMINAL_COLON(28, "colon"), - TERMINAL_COMMA(19, "comma"), - TERMINAL_DASH(32, "dash"), - TERMINAL_DOT(42, "dot"), - TERMINAL_DOUBLE_AMPERSAND(29, "double_ampersand"), - TERMINAL_DOUBLE_EQUAL(53, "double_equal"), - TERMINAL_DOUBLE_PIPE(45, "double_pipe"), - TERMINAL_E(22, "e"), - TERMINAL_ELSE(57, "else"), - TERMINAL_EQUAL(31, "equal"), - TERMINAL_ESCAPE(1, "escape"), - TERMINAL_EXPRESSION_PLACEHOLDER_END(14, "expression_placeholder_end"), - TERMINAL_EXPRESSION_PLACEHOLDER_START(65, "expression_placeholder_start"), - TERMINAL_FLOAT(49, "float"), - TERMINAL_FQN(34, "fqn"), - TERMINAL_GT(2, "gt"), - TERMINAL_GTEQ(52, "gteq"), - TERMINAL_IDENTIFIER(46, "identifier"), - TERMINAL_IF(63, "if"), - TERMINAL_IMPORT(55, "import"), - TERMINAL_IN(39, "in"), - TERMINAL_INPUT(44, "input"), - TERMINAL_INTEGER(16, "integer"), - TERMINAL_LBRACE(59, "lbrace"), - TERMINAL_LPAREN(15, "lparen"), - TERMINAL_LSQUARE(17, "lsquare"), - TERMINAL_LT(36, "lt"), - TERMINAL_LTEQ(40, "lteq"), - TERMINAL_META(61, "meta"), - TERMINAL_META_VALUE(48, "meta_value"), - TERMINAL_NONE(43, "none"), - TERMINAL_NOT(12, "not"), - TERMINAL_NOT_EQUAL(51, "not_equal"), - TERMINAL_NULL(24, "null"), - TERMINAL_OBJECT(58, "object"), - TERMINAL_OUTPUT(7, "output"), - TERMINAL_PARAMETER_META(54, "parameter_meta"), - TERMINAL_PERCENT(64, "percent"), - TERMINAL_PLUS(33, "plus"), - TERMINAL_QMARK(21, "qmark"), - TERMINAL_QUOTE(20, "quote"), - TERMINAL_RAW_CMD_END(9, "raw_cmd_end"), - TERMINAL_RAW_CMD_START(26, "raw_cmd_start"), - TERMINAL_RAW_COMMAND(47, "raw_command"), - TERMINAL_RBRACE(66, "rbrace"), - TERMINAL_RPAREN(6, "rparen"), - TERMINAL_RSQUARE(3, "rsquare"), - TERMINAL_RUNTIME(8, "runtime"), - TERMINAL_SCATTER(62, "scatter"), - TERMINAL_SLASH(37, "slash"), - TERMINAL_STRING(0, "string"), - TERMINAL_STRUCT(5, "struct"), - TERMINAL_TASK(56, "task"), - TERMINAL_THEN(41, "then"), - TERMINAL_TYPE(30, "type"), - TERMINAL_TYPE_E(25, "type_e"), - TERMINAL_VERSION(4, "version"), - TERMINAL_VERSION_NAME(38, "version_name"), - TERMINAL_WORKFLOW(35, "workflow"), + TERMINAL_AFTER(22, "after"), + TERMINAL_ALIAS(60, "alias"), + TERMINAL_AS(44, "as"), + TERMINAL_ASTERISK(21, "asterisk"), + TERMINAL_BOOLEAN(49, "boolean"), + TERMINAL_CALL(41, "call"), + TERMINAL_CMD_ATTR_HINT(61, "cmd_attr_hint"), + TERMINAL_CMD_PART(65, "cmd_part"), + TERMINAL_COLON(25, "colon"), + TERMINAL_COMMA(46, "comma"), + TERMINAL_DASH(42, "dash"), + TERMINAL_DOT(45, "dot"), + TERMINAL_DOUBLE_AMPERSAND(63, "double_ampersand"), + TERMINAL_DOUBLE_EQUAL(56, "double_equal"), + TERMINAL_DOUBLE_PIPE(40, "double_pipe"), + TERMINAL_E(10, "e"), + TERMINAL_ELSE(66, "else"), + TERMINAL_EQUAL(51, "equal"), + TERMINAL_ESCAPE(35, "escape"), + TERMINAL_EXPRESSION_PLACEHOLDER_END(58, "expression_placeholder_end"), + TERMINAL_EXPRESSION_PLACEHOLDER_START(7, "expression_placeholder_start"), + TERMINAL_FLOAT(17, "float"), + TERMINAL_FQN(14, "fqn"), + TERMINAL_GT(18, "gt"), + TERMINAL_GTEQ(34, "gteq"), + TERMINAL_IDENTIFIER(5, "identifier"), + TERMINAL_IF(55, "if"), + TERMINAL_IMPORT(32, "import"), + TERMINAL_IN(4, "in"), + TERMINAL_INPUT(33, "input"), + TERMINAL_INTEGER(36, "integer"), + TERMINAL_LBRACE(3, "lbrace"), + TERMINAL_LPAREN(64, "lparen"), + TERMINAL_LSQUARE(39, "lsquare"), + TERMINAL_LT(57, "lt"), + TERMINAL_LTEQ(48, "lteq"), + TERMINAL_META(31, "meta"), + TERMINAL_META_VALUE(38, "meta_value"), + TERMINAL_NONE(24, "none"), + TERMINAL_NOT(43, "not"), + TERMINAL_NOT_EQUAL(20, "not_equal"), + TERMINAL_NULL(9, "null"), + TERMINAL_OBJECT(26, "object"), + TERMINAL_OUTPUT(54, "output"), + TERMINAL_PARAMETER_META(8, "parameter_meta"), + TERMINAL_PERCENT(6, "percent"), + TERMINAL_PLUS(59, "plus"), + TERMINAL_QMARK(1, "qmark"), + TERMINAL_QUOTE(28, "quote"), + TERMINAL_RAW_CMD_END(62, "raw_cmd_end"), + TERMINAL_RAW_CMD_START(50, "raw_cmd_start"), + TERMINAL_RAW_COMMAND(23, "raw_command"), + TERMINAL_RBRACE(0, "rbrace"), + TERMINAL_RPAREN(11, "rparen"), + TERMINAL_RSQUARE(47, "rsquare"), + TERMINAL_RUNTIME(53, "runtime"), + TERMINAL_SCATTER(15, "scatter"), + TERMINAL_SLASH(30, "slash"), + TERMINAL_STRING(16, "string"), + TERMINAL_STRUCT(37, "struct"), + TERMINAL_TASK(29, "task"), + TERMINAL_THEN(19, "then"), + TERMINAL_TYPE(27, "type"), + TERMINAL_TYPE_E(13, "type_e"), + TERMINAL_VERSION(52, "version"), + TERMINAL_VERSION_NAME(12, "version_name"), + TERMINAL_WORKFLOW(2, "workflow"), END_SENTINAL(-3, "END_SENTINAL"); private final int id; private final String string; @@ -595,112 +595,112 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { } /* table[nonterminal][terminal] = rule */ private static final int[][] table = { + { -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 63, -1, -1, 68, -1, -1, -1, -1, 63, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, 69, -1, 66, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 52, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, 71, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, 71, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, 71, 71, 71, 71, -1, -1, 71 }, - { -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, 74, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, 73, 74, 74, 74, 74, -1, -1, 74 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1 }, + { 74, -1, -1, 73, -1, 74, -1, -1, 74, -1, -1, -1, -1, 74, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, 74, -1, 74, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, 56, -1, 56, 56, 56, -1, -1, 56, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, -1, -1, 56, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 56, 56, -1, -1, -1, 56, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, -1 }, + { -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 32, -1, -1, 30, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, -1, -1, 32, -1, -1, -1, 31, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, 19, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 71, -1, -1, -1, -1, 71, -1, -1, 71, -1, -1, -1, -1, 71, -1, 71, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 71, -1, -1, -1, 71, -1, 71, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, 56, -1, 56, -1, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, 56, -1, 56, -1, 56, -1, -1, -1, -1, -1, -1, -1, 56, -1, -1, 56, -1, -1, 56, 56, -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, -1, 56, -1, -1, -1, 56, -1, -1, -1, -1, 56, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, 52, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, 32, 26, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { 16, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, -1 }, - { -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, 63, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, -1, -1, 62, 69, 65, 64, -1, -1, -1 }, - { -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, }; static { Map> map = new HashMap>(); - map.put(75, Arrays.asList(new TerminalIdentifier[] { + map.put(82, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, })); - map.put(128, Arrays.asList(new TerminalIdentifier[] { + map.put(90, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(115, Arrays.asList(new TerminalIdentifier[] { + map.put(68, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(68, Arrays.asList(new TerminalIdentifier[] { + map.put(101, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(76, Arrays.asList(new TerminalIdentifier[] { + map.put(86, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(117, Arrays.asList(new TerminalIdentifier[] { + map.put(75, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_EQUAL, })); - map.put(89, Arrays.asList(new TerminalIdentifier[] { + map.put(129, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(132, Arrays.asList(new TerminalIdentifier[] { + map.put(115, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -712,27 +712,27 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(79, Arrays.asList(new TerminalIdentifier[] { + map.put(103, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(95, Arrays.asList(new TerminalIdentifier[] { + map.put(132, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, })); - map.put(81, Arrays.asList(new TerminalIdentifier[] { + map.put(89, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(88, Arrays.asList(new TerminalIdentifier[] { + map.put(73, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INPUT, })); - map.put(129, Arrays.asList(new TerminalIdentifier[] { + map.put(136, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(87, Arrays.asList(new TerminalIdentifier[] { + map.put(131, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(91, Arrays.asList(new TerminalIdentifier[] { + map.put(102, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_FLOAT, WdlTerminalIdentifier.TERMINAL_INTEGER, @@ -742,15 +742,18 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_NULL, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(110, Arrays.asList(new TerminalIdentifier[] { + map.put(109, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(70, Arrays.asList(new TerminalIdentifier[] { + map.put(125, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(108, Arrays.asList(new TerminalIdentifier[] { + map.put(80, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_IDENTIFIER, + })); + map.put(76, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -767,10 +770,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(135, Arrays.asList(new TerminalIdentifier[] { - WdlTerminalIdentifier.TERMINAL_IDENTIFIER, - })); - map.put(119, Arrays.asList(new TerminalIdentifier[] { + map.put(108, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -787,22 +787,22 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(92, Arrays.asList(new TerminalIdentifier[] { + map.put(139, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(114, Arrays.asList(new TerminalIdentifier[] { + map.put(70, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(131, Arrays.asList(new TerminalIdentifier[] { + map.put(100, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(102, Arrays.asList(new TerminalIdentifier[] { + map.put(83, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, })); - map.put(104, Arrays.asList(new TerminalIdentifier[] { + map.put(88, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -813,44 +813,44 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(140, Arrays.asList(new TerminalIdentifier[] { + map.put(126, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, })); - map.put(109, Arrays.asList(new TerminalIdentifier[] { + map.put(104, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_ATTR_HINT, })); - map.put(126, Arrays.asList(new TerminalIdentifier[] { + map.put(130, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(124, Arrays.asList(new TerminalIdentifier[] { + map.put(137, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, })); - map.put(78, Arrays.asList(new TerminalIdentifier[] { + map.put(127, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, })); - map.put(86, Arrays.asList(new TerminalIdentifier[] { + map.put(78, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INPUT, })); - map.put(118, Arrays.asList(new TerminalIdentifier[] { + map.put(117, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(72, Arrays.asList(new TerminalIdentifier[] { + map.put(91, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RAW_COMMAND, })); - map.put(99, Arrays.asList(new TerminalIdentifier[] { + map.put(95, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, })); - map.put(93, Arrays.asList(new TerminalIdentifier[] { + map.put(96, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(138, Arrays.asList(new TerminalIdentifier[] { + map.put(97, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_VERSION, })); - map.put(107, Arrays.asList(new TerminalIdentifier[] { + map.put(79, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -867,44 +867,44 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(97, Arrays.asList(new TerminalIdentifier[] { + map.put(133, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, })); - map.put(133, Arrays.asList(new TerminalIdentifier[] { + map.put(134, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_ATTR_HINT, })); - map.put(127, Arrays.asList(new TerminalIdentifier[] { + map.put(123, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(94, Arrays.asList(new TerminalIdentifier[] { + map.put(120, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IF, })); - map.put(82, Arrays.asList(new TerminalIdentifier[] { + map.put(81, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, })); - map.put(125, Arrays.asList(new TerminalIdentifier[] { + map.put(85, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, })); - map.put(96, Arrays.asList(new TerminalIdentifier[] { + map.put(107, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(83, Arrays.asList(new TerminalIdentifier[] { + map.put(67, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(122, Arrays.asList(new TerminalIdentifier[] { + map.put(105, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(106, Arrays.asList(new TerminalIdentifier[] { + map.put(112, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INPUT, })); - map.put(116, Arrays.asList(new TerminalIdentifier[] { + map.put(114, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(100, Arrays.asList(new TerminalIdentifier[] { + map.put(124, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -921,16 +921,16 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(136, Arrays.asList(new TerminalIdentifier[] { + map.put(106, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_META, })); - map.put(112, Arrays.asList(new TerminalIdentifier[] { + map.put(93, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(141, Arrays.asList(new TerminalIdentifier[] { + map.put(77, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(120, Arrays.asList(new TerminalIdentifier[] { + map.put(135, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_FLOAT, WdlTerminalIdentifier.TERMINAL_INTEGER, @@ -940,59 +940,59 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_NULL, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(90, Arrays.asList(new TerminalIdentifier[] { + map.put(74, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(77, Arrays.asList(new TerminalIdentifier[] { + map.put(87, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(84, Arrays.asList(new TerminalIdentifier[] { + map.put(122, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_OUTPUT, })); - map.put(105, Arrays.asList(new TerminalIdentifier[] { + map.put(72, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_PARAMETER_META, })); - map.put(85, Arrays.asList(new TerminalIdentifier[] { + map.put(128, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(80, Arrays.asList(new TerminalIdentifier[] { + map.put(84, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RUNTIME, })); - map.put(121, Arrays.asList(new TerminalIdentifier[] { + map.put(116, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_SCATTER, })); - map.put(101, Arrays.asList(new TerminalIdentifier[] { + map.put(113, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_EQUAL, })); - map.put(98, Arrays.asList(new TerminalIdentifier[] { + map.put(99, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(69, Arrays.asList(new TerminalIdentifier[] { + map.put(118, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(139, Arrays.asList(new TerminalIdentifier[] { + map.put(111, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(130, Arrays.asList(new TerminalIdentifier[] { + map.put(92, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(74, Arrays.asList(new TerminalIdentifier[] { + map.put(94, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, })); - map.put(73, Arrays.asList(new TerminalIdentifier[] { + map.put(110, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(113, Arrays.asList(new TerminalIdentifier[] { + map.put(138, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_TASK, })); - map.put(123, Arrays.asList(new TerminalIdentifier[] { + map.put(98, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1003,15 +1003,15 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(67, Arrays.asList(new TerminalIdentifier[] { + map.put(140, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(71, Arrays.asList(new TerminalIdentifier[] { + map.put(121, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_VERSION, })); - map.put(137, Arrays.asList(new TerminalIdentifier[] { + map.put(69, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1023,48 +1023,48 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(103, Arrays.asList(new TerminalIdentifier[] { + map.put(71, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_META, })); - map.put(111, Arrays.asList(new TerminalIdentifier[] { + map.put(119, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_PARAMETER_META, })); - map.put(134, Arrays.asList(new TerminalIdentifier[] { + map.put(141, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); nonterminal_first = Collections.unmodifiableMap(map); } static { Map> map = new HashMap>(); - map.put(75, Arrays.asList(new TerminalIdentifier[] { + map.put(82, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(128, Arrays.asList(new TerminalIdentifier[] { + map.put(90, Arrays.asList(new TerminalIdentifier[] { })); - map.put(115, Arrays.asList(new TerminalIdentifier[] { + map.put(68, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(68, Arrays.asList(new TerminalIdentifier[] { + map.put(101, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(76, Arrays.asList(new TerminalIdentifier[] { + map.put(86, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(117, Arrays.asList(new TerminalIdentifier[] { + map.put(75, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(89, Arrays.asList(new TerminalIdentifier[] { + map.put(129, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(132, Arrays.asList(new TerminalIdentifier[] { + map.put(115, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(79, Arrays.asList(new TerminalIdentifier[] { + map.put(103, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1078,7 +1078,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(95, Arrays.asList(new TerminalIdentifier[] { + map.put(132, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1092,7 +1092,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(81, Arrays.asList(new TerminalIdentifier[] { + map.put(89, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1105,60 +1105,60 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(88, Arrays.asList(new TerminalIdentifier[] { + map.put(73, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(129, Arrays.asList(new TerminalIdentifier[] { + map.put(136, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(87, Arrays.asList(new TerminalIdentifier[] { + map.put(131, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(91, Arrays.asList(new TerminalIdentifier[] { + map.put(102, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(110, Arrays.asList(new TerminalIdentifier[] { + map.put(109, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(70, Arrays.asList(new TerminalIdentifier[] { + map.put(125, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(108, Arrays.asList(new TerminalIdentifier[] { + map.put(80, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_RBRACE, + })); + map.put(76, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RPAREN, WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(135, Arrays.asList(new TerminalIdentifier[] { - WdlTerminalIdentifier.TERMINAL_RBRACE, - })); - map.put(119, Arrays.asList(new TerminalIdentifier[] { + map.put(108, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(92, Arrays.asList(new TerminalIdentifier[] { + map.put(139, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(114, Arrays.asList(new TerminalIdentifier[] { + map.put(70, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(131, Arrays.asList(new TerminalIdentifier[] { + map.put(100, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(102, Arrays.asList(new TerminalIdentifier[] { + map.put(83, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(104, Arrays.asList(new TerminalIdentifier[] { + map.put(88, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(140, Arrays.asList(new TerminalIdentifier[] { + map.put(126, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RAW_CMD_END, })); - map.put(109, Arrays.asList(new TerminalIdentifier[] { + map.put(104, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -1175,7 +1175,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(126, Arrays.asList(new TerminalIdentifier[] { + map.put(130, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1189,7 +1189,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(124, Arrays.asList(new TerminalIdentifier[] { + map.put(137, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1202,7 +1202,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(78, Arrays.asList(new TerminalIdentifier[] { + map.put(127, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1217,10 +1217,10 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(86, Arrays.asList(new TerminalIdentifier[] { + map.put(78, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(118, Arrays.asList(new TerminalIdentifier[] { + map.put(117, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1233,7 +1233,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(72, Arrays.asList(new TerminalIdentifier[] { + map.put(91, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1245,12 +1245,12 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(99, Arrays.asList(new TerminalIdentifier[] { + map.put(95, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_RAW_CMD_END, })); - map.put(93, Arrays.asList(new TerminalIdentifier[] { + map.put(96, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1265,9 +1265,9 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(138, Arrays.asList(new TerminalIdentifier[] { + map.put(97, Arrays.asList(new TerminalIdentifier[] { })); - map.put(107, Arrays.asList(new TerminalIdentifier[] { + map.put(79, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ASTERISK, WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_CALL, @@ -1315,7 +1315,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(97, Arrays.asList(new TerminalIdentifier[] { + map.put(133, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, @@ -1323,7 +1323,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_RAW_CMD_END, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(133, Arrays.asList(new TerminalIdentifier[] { + map.put(134, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_CMD_ATTR_HINT, WdlTerminalIdentifier.TERMINAL_DASH, @@ -1341,12 +1341,12 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(127, Arrays.asList(new TerminalIdentifier[] { + map.put(123, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(94, Arrays.asList(new TerminalIdentifier[] { + map.put(120, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1359,37 +1359,37 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(82, Arrays.asList(new TerminalIdentifier[] { + map.put(81, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(125, Arrays.asList(new TerminalIdentifier[] { + map.put(85, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(96, Arrays.asList(new TerminalIdentifier[] { + map.put(107, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(83, Arrays.asList(new TerminalIdentifier[] { + map.put(67, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(122, Arrays.asList(new TerminalIdentifier[] { + map.put(105, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(106, Arrays.asList(new TerminalIdentifier[] { + map.put(112, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1404,15 +1404,15 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(116, Arrays.asList(new TerminalIdentifier[] { + map.put(114, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(100, Arrays.asList(new TerminalIdentifier[] { + map.put(124, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(136, Arrays.asList(new TerminalIdentifier[] { + map.put(106, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1424,12 +1424,12 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(112, Arrays.asList(new TerminalIdentifier[] { + map.put(93, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(141, Arrays.asList(new TerminalIdentifier[] { + map.put(77, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1444,23 +1444,23 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(120, Arrays.asList(new TerminalIdentifier[] { + map.put(135, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(90, Arrays.asList(new TerminalIdentifier[] { + map.put(74, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(77, Arrays.asList(new TerminalIdentifier[] { + map.put(87, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(84, Arrays.asList(new TerminalIdentifier[] { + map.put(122, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1475,7 +1475,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(105, Arrays.asList(new TerminalIdentifier[] { + map.put(72, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1487,7 +1487,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(85, Arrays.asList(new TerminalIdentifier[] { + map.put(128, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1499,7 +1499,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(80, Arrays.asList(new TerminalIdentifier[] { + map.put(84, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1511,7 +1511,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(121, Arrays.asList(new TerminalIdentifier[] { + map.put(116, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1524,7 +1524,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(101, Arrays.asList(new TerminalIdentifier[] { + map.put(113, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1539,7 +1539,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(98, Arrays.asList(new TerminalIdentifier[] { + map.put(99, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1550,13 +1550,13 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(69, Arrays.asList(new TerminalIdentifier[] { + map.put(118, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_QUOTE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(139, Arrays.asList(new TerminalIdentifier[] { + map.put(111, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ASTERISK, WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_CALL, @@ -1604,29 +1604,29 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(130, Arrays.asList(new TerminalIdentifier[] { + map.put(92, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_QUOTE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(74, Arrays.asList(new TerminalIdentifier[] { + map.put(94, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(73, Arrays.asList(new TerminalIdentifier[] { + map.put(110, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(113, Arrays.asList(new TerminalIdentifier[] { + map.put(138, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(123, Arrays.asList(new TerminalIdentifier[] { + map.put(98, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1638,15 +1638,15 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(67, Arrays.asList(new TerminalIdentifier[] { + map.put(140, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(71, Arrays.asList(new TerminalIdentifier[] { + map.put(121, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, })); - map.put(137, Arrays.asList(new TerminalIdentifier[] { + map.put(69, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1659,7 +1659,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(103, Arrays.asList(new TerminalIdentifier[] { + map.put(71, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1672,7 +1672,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(111, Arrays.asList(new TerminalIdentifier[] { + map.put(119, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1685,7 +1685,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(134, Arrays.asList(new TerminalIdentifier[] { + map.put(141, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, @@ -1780,6 +1780,9 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE_E, })); map.put(120, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_IDENTIFIER, + })); + map.put(122, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -1796,10 +1799,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(124, Arrays.asList(new TerminalIdentifier[] { - WdlTerminalIdentifier.TERMINAL_IDENTIFIER, - })); - map.put(127, Arrays.asList(new TerminalIdentifier[] { + map.put(128, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -2104,7 +2104,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(123, Arrays.asList(new TerminalIdentifier[] { + map.put(125, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -2121,7 +2121,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(122, Arrays.asList(new TerminalIdentifier[] { + map.put(124, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -2138,46 +2138,49 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(131, Arrays.asList(new TerminalIdentifier[] { + map.put(132, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(133, Arrays.asList(new TerminalIdentifier[] { + map.put(134, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, })); map.put(119, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_DASH, })); - map.put(135, Arrays.asList(new TerminalIdentifier[] { + map.put(136, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_FLOAT, })); - map.put(132, Arrays.asList(new TerminalIdentifier[] { + map.put(133, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); map.put(121, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(130, Arrays.asList(new TerminalIdentifier[] { + map.put(123, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_IDENTIFIER, + })); + map.put(131, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IF, })); - map.put(134, Arrays.asList(new TerminalIdentifier[] { + map.put(135, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INTEGER, })); - map.put(128, Arrays.asList(new TerminalIdentifier[] { + map.put(129, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(129, Arrays.asList(new TerminalIdentifier[] { + map.put(130, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LPAREN, })); - map.put(126, Arrays.asList(new TerminalIdentifier[] { + map.put(127, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LSQUARE, })); - map.put(136, Arrays.asList(new TerminalIdentifier[] { + map.put(137, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_NONE, })); map.put(117, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_NOT, })); - map.put(125, Arrays.asList(new TerminalIdentifier[] { + map.put(126, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_OBJECT, })); map.put(118, Arrays.asList(new TerminalIdentifier[] { @@ -2407,218 +2410,219 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { } static { Map> map = new HashMap>(); - map.put(75, new ArrayList()); - map.put(128, new ArrayList()); - map.put(115, new ArrayList()); + map.put(82, new ArrayList()); + map.put(90, new ArrayList()); map.put(68, new ArrayList()); - map.put(76, new ArrayList()); - map.put(117, new ArrayList()); - map.put(89, new ArrayList()); - map.put(132, new ArrayList()); - map.put(79, new ArrayList()); - map.put(95, new ArrayList()); - map.put(81, new ArrayList()); - map.put(88, new ArrayList()); + map.put(101, new ArrayList()); + map.put(86, new ArrayList()); + map.put(75, new ArrayList()); map.put(129, new ArrayList()); - map.put(87, new ArrayList()); - map.put(91, new ArrayList()); - map.put(110, new ArrayList()); - map.put(70, new ArrayList()); - map.put(108, new ArrayList()); - map.put(135, new ArrayList()); - map.put(119, new ArrayList()); - map.put(92, new ArrayList()); - map.put(114, new ArrayList()); + map.put(115, new ArrayList()); + map.put(103, new ArrayList()); + map.put(132, new ArrayList()); + map.put(89, new ArrayList()); + map.put(73, new ArrayList()); + map.put(136, new ArrayList()); map.put(131, new ArrayList()); map.put(102, new ArrayList()); - map.put(104, new ArrayList()); - map.put(140, new ArrayList()); map.put(109, new ArrayList()); + map.put(125, new ArrayList()); + map.put(80, new ArrayList()); + map.put(76, new ArrayList()); + map.put(108, new ArrayList()); + map.put(139, new ArrayList()); + map.put(70, new ArrayList()); + map.put(100, new ArrayList()); + map.put(83, new ArrayList()); + map.put(88, new ArrayList()); map.put(126, new ArrayList()); - map.put(124, new ArrayList()); + map.put(104, new ArrayList()); + map.put(130, new ArrayList()); + map.put(137, new ArrayList()); + map.put(127, new ArrayList()); map.put(78, new ArrayList()); - map.put(86, new ArrayList()); - map.put(118, new ArrayList()); - map.put(72, new ArrayList()); - map.put(99, new ArrayList()); - map.put(93, new ArrayList()); - map.put(138, new ArrayList()); - map.put(107, new ArrayList()); + map.put(117, new ArrayList()); + map.put(91, new ArrayList()); + map.put(95, new ArrayList()); + map.put(96, new ArrayList()); map.put(97, new ArrayList()); + map.put(79, new ArrayList()); map.put(133, new ArrayList()); - map.put(127, new ArrayList()); - map.put(94, new ArrayList()); - map.put(82, new ArrayList()); - map.put(125, new ArrayList()); - map.put(96, new ArrayList()); - map.put(83, new ArrayList()); - map.put(122, new ArrayList()); - map.put(106, new ArrayList()); - map.put(116, new ArrayList()); - map.put(100, new ArrayList()); - map.put(136, new ArrayList()); - map.put(112, new ArrayList()); - map.put(141, new ArrayList()); + map.put(134, new ArrayList()); + map.put(123, new ArrayList()); map.put(120, new ArrayList()); - map.put(90, new ArrayList()); + map.put(81, new ArrayList()); + map.put(85, new ArrayList()); + map.put(107, new ArrayList()); + map.put(67, new ArrayList()); + map.put(105, new ArrayList()); + map.put(112, new ArrayList()); + map.put(114, new ArrayList()); + map.put(124, new ArrayList()); + map.put(106, new ArrayList()); + map.put(93, new ArrayList()); map.put(77, new ArrayList()); + map.put(135, new ArrayList()); + map.put(74, new ArrayList()); + map.put(87, new ArrayList()); + map.put(122, new ArrayList()); + map.put(72, new ArrayList()); + map.put(128, new ArrayList()); map.put(84, new ArrayList()); - map.put(105, new ArrayList()); - map.put(85, new ArrayList()); - map.put(80, new ArrayList()); - map.put(121, new ArrayList()); - map.put(101, new ArrayList()); + map.put(116, new ArrayList()); + map.put(113, new ArrayList()); + map.put(99, new ArrayList()); + map.put(118, new ArrayList()); + map.put(111, new ArrayList()); + map.put(92, new ArrayList()); + map.put(94, new ArrayList()); + map.put(110, new ArrayList()); + map.put(138, new ArrayList()); map.put(98, new ArrayList()); + map.put(140, new ArrayList()); + map.put(121, new ArrayList()); map.put(69, new ArrayList()); - map.put(139, new ArrayList()); - map.put(130, new ArrayList()); - map.put(74, new ArrayList()); - map.put(73, new ArrayList()); - map.put(113, new ArrayList()); - map.put(123, new ArrayList()); - map.put(67, new ArrayList()); map.put(71, new ArrayList()); - map.put(137, new ArrayList()); - map.put(103, new ArrayList()); - map.put(111, new ArrayList()); - map.put(134, new ArrayList()); - map.get(75).add("$_gen0 = list($import)"); - map.get(128).add("$_gen1 = list($file_body_element)"); - map.get(115).add("$_gen10 = list($input_declaration)"); - map.get(68).add("$_gen11 = list($kv)"); - map.get(76).add("$_gen12 = list($meta_kv)"); - map.get(117).add("$_gen13 = $setter"); - map.get(117).add("$_gen13 = :_empty"); - map.get(89).add("$_gen14 = list($output_kv)"); - map.get(132).add("$_gen15 = list($wf_body_element)"); - map.get(79).add("$_gen16 = $alias"); - map.get(79).add("$_gen16 = :_empty"); - map.get(95).add("$_gen17 = list($call_after)"); - map.get(81).add("$_gen18 = $call_brace_block"); - map.get(81).add("$_gen18 = :_empty"); - map.get(88).add("$_gen19 = $call_body"); - map.get(88).add("$_gen19 = :_empty"); - map.get(129).add("$_gen2 = list($struct_declaration)"); - map.get(87).add("$_gen20 = list($input_kv, :comma)"); - map.get(91).add("$_gen21 = list($meta_value, :comma)"); - map.get(110).add("$_gen22 = list($meta_kv, :comma)"); - map.get(70).add("$_gen23 = list($type_e, :comma)"); - map.get(108).add("$_gen24 = list($e, :comma)"); - map.get(135).add("$_gen25 = list($object_kv, :comma)"); - map.get(119).add("$_gen26 = list($map_kv, :comma)"); - map.get(92).add("$_gen3 = list($static_string_piece)"); - map.get(114).add("$_gen4 = list($string_piece)"); - map.get(131).add("$_gen5 = $import_namespace"); - map.get(131).add("$_gen5 = :_empty"); - map.get(102).add("$_gen6 = list($import_alias)"); - map.get(104).add("$_gen7 = list($task_sections)"); - map.get(140).add("$_gen8 = list($command_part)"); - map.get(109).add("$_gen9 = list($expression_placeholder_kv)"); - map.get(126).add("$alias = :as :identifier -> $1"); - map.get(124).add("$call = :call :fqn $_gen16 $_gen17 $_gen18 -> Call( task=$1, alias=$2, after=$3, body=$4 )"); - map.get(78).add("$call_after = :after :identifier -> $1"); - map.get(86).add("$call_body = :input :colon $_gen20 -> CallBody( inputs=$2 )"); - map.get(118).add("$call_brace_block = :lbrace $_gen19 :rbrace -> $1"); - map.get(72).add("$command = :raw_command :raw_cmd_start $_gen8 :raw_cmd_end -> RawCommand( parts=$2 )"); - map.get(99).add("$command_part = $expression_placeholder"); - map.get(99).add("$command_part = :cmd_part"); - map.get(93).add("$declaration = $type_e :identifier $setter -> Declaration( type=$0, name=$1, expression=$2 )"); - map.get(138).add("$document = $version $_gen0 $_gen1 -> Draft3File( version=$0, imports=$1, body=$2 )"); - map.get(107).add("$e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); - map.get(107).add("$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); - map.get(107).add("$e = $string_literal"); - map.get(107).add("$e = :boolean"); - map.get(107).add("$e = :dash $e -> UnaryNegation( expression=$1 )"); - map.get(107).add("$e = :float"); - map.get(107).add("$e = :identifier"); - map.get(107).add("$e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 )"); - map.get(107).add("$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); - map.get(107).add("$e = :integer"); - map.get(107).add("$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); - map.get(107).add("$e = :lparen $_gen24 :rparen -> TupleLiteral( values=$1 )"); - map.get(107).add("$e = :lsquare $_gen24 :rsquare -> ArrayLiteral( values=$1 )"); - map.get(107).add("$e = :none"); - map.get(107).add("$e = :not $e -> LogicalNot( expression=$1 )"); - map.get(107).add("$e = :object :lbrace $_gen25 :rbrace -> ObjectLiteral( map=$2 )"); - map.get(107).add("$e = :plus $e -> UnaryPlus( expression=$1 )"); - map.get(97).add("$expression_placeholder = :expression_placeholder_start $_gen9 $e :expression_placeholder_end -> ExpressionPlaceholder( attributes=$1, expr=$2 )"); - map.get(133).add("$expression_placeholder_kv = :cmd_attr_hint :identifier :equal $e -> ExpressionPlaceholderAttr( key=$1, value=$3 )"); - map.get(127).add("$file_body_element = $struct"); - map.get(127).add("$file_body_element = $task"); - map.get(127).add("$file_body_element = $workflow"); - map.get(94).add("$if_stmt = :if :lparen $e :rparen :lbrace $_gen15 :rbrace -> If( expression=$2, body=$5 )"); - map.get(82).add("$import = :import $static_string $_gen5 $_gen6 -> Import( uri=$1, namespace=$2, aliases=$3 )"); - map.get(125).add("$import_alias = :alias :identifier :as :identifier -> ImportAlias( old_name=$1, new_name=$3 )"); - map.get(96).add("$import_namespace = :as :identifier -> $1"); - map.get(83).add("$input_declaration = $type_e :identifier $_gen13 -> InputDeclaration( type=$0, name=$1, expression=$2 )"); - map.get(122).add("$input_kv = :identifier :equal $e -> ObjectKV( key=$0, value=$2 )"); - map.get(106).add("$inputs = :input :lbrace $_gen10 :rbrace -> Inputs( inputs=$2 )"); - map.get(116).add("$kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 )"); - map.get(100).add("$map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 )"); - map.get(136).add("$meta = :meta $meta_map -> Meta( map=$1 )"); - map.get(112).add("$meta_kv = :identifier :colon $meta_value -> MetaKvPair( key=$0, value=$2 )"); - map.get(141).add("$meta_map = :lbrace $_gen12 :rbrace -> $1"); - map.get(120).add("$meta_value = $static_string"); - map.get(120).add("$meta_value = :boolean"); - map.get(120).add("$meta_value = :float"); - map.get(120).add("$meta_value = :integer"); - map.get(120).add("$meta_value = :lbrace $_gen22 :rbrace -> MetaObject( map=$1 )"); - map.get(120).add("$meta_value = :lsquare $_gen21 :rsquare -> MetaArray( values=$1 )"); - map.get(120).add("$meta_value = :null"); - map.get(90).add("$object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 )"); - map.get(77).add("$output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 )"); - map.get(84).add("$outputs = :output :lbrace $_gen14 :rbrace -> Outputs( outputs=$2 )"); - map.get(105).add("$parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); - map.get(85).add("$rt_map = :lbrace $_gen11 :rbrace -> $1"); - map.get(80).add("$runtime = :runtime $rt_map -> Runtime( map=$1 )"); - map.get(121).add("$scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen15 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )"); - map.get(101).add("$setter = :equal $e -> $1"); - map.get(98).add("$static_string = :quote $_gen3 :quote -> StaticString( value=$1 )"); - map.get(69).add("$static_string_piece = :escape"); - map.get(69).add("$static_string_piece = :string"); - map.get(139).add("$string_literal = :quote $_gen4 :quote -> StringLiteral( pieces=$1 )"); - map.get(130).add("$string_piece = $expression_placeholder"); - map.get(130).add("$string_piece = $static_string_piece"); - map.get(74).add("$struct = :struct :identifier :lbrace $_gen2 :rbrace -> Struct( name=$1, entries=$3 )"); - map.get(73).add("$struct_declaration = $type_e :identifier -> StructEntry( type=$0, name=$1 )"); - map.get(113).add("$task = :task :identifier :lbrace $_gen7 :rbrace -> Task( name=$1, sections=$3 )"); - map.get(123).add("$task_sections = $command"); - map.get(123).add("$task_sections = $declaration"); - map.get(123).add("$task_sections = $inputs"); - map.get(123).add("$task_sections = $meta"); - map.get(123).add("$task_sections = $outputs"); - map.get(123).add("$task_sections = $parameter_meta"); - map.get(123).add("$task_sections = $runtime"); - map.get(67).add("$type_e = :identifier"); - map.get(67).add("$type_e = :type"); - map.get(67).add("$type_e = :type <=> :lsquare $_gen23 :rsquare -> Type( name=$0, subtype=$2 )"); - map.get(67).add("$type_e = :type <=> :plus -> NonEmptyType( innerType=$0 )"); - map.get(67).add("$type_e = :type <=> :qmark -> OptionalType( innerType=$0 )"); - map.get(71).add("$version = :version :version_name -> VersionDeclaration( v=$1 )"); - map.get(137).add("$wf_body_element = $call"); - map.get(137).add("$wf_body_element = $declaration"); - map.get(137).add("$wf_body_element = $if_stmt"); - map.get(137).add("$wf_body_element = $inputs"); - map.get(137).add("$wf_body_element = $outputs"); - map.get(137).add("$wf_body_element = $scatter"); - map.get(137).add("$wf_body_element = $wf_meta"); - map.get(137).add("$wf_body_element = $wf_parameter_meta"); - map.get(103).add("$wf_meta = :meta $meta_map -> Meta( map=$1 )"); - map.get(111).add("$wf_parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); - map.get(134).add("$workflow = :workflow :identifier :lbrace $_gen15 :rbrace -> Workflow( name=$1, body=$3 )"); + map.put(119, new ArrayList()); + map.put(141, new ArrayList()); + map.get(82).add("$_gen0 = list($import)"); + map.get(90).add("$_gen1 = list($file_body_element)"); + map.get(68).add("$_gen10 = list($input_declaration)"); + map.get(101).add("$_gen11 = list($kv)"); + map.get(86).add("$_gen12 = list($meta_kv)"); + map.get(75).add("$_gen13 = $setter"); + map.get(75).add("$_gen13 = :_empty"); + map.get(129).add("$_gen14 = list($output_kv)"); + map.get(115).add("$_gen15 = list($wf_body_element)"); + map.get(103).add("$_gen16 = $alias"); + map.get(103).add("$_gen16 = :_empty"); + map.get(132).add("$_gen17 = list($call_after)"); + map.get(89).add("$_gen18 = $call_brace_block"); + map.get(89).add("$_gen18 = :_empty"); + map.get(73).add("$_gen19 = $call_body"); + map.get(73).add("$_gen19 = :_empty"); + map.get(136).add("$_gen2 = list($struct_declaration)"); + map.get(131).add("$_gen20 = list($input_kv, :comma)"); + map.get(102).add("$_gen21 = list($meta_value, :comma)"); + map.get(109).add("$_gen22 = list($meta_kv, :comma)"); + map.get(125).add("$_gen23 = list($type_e, :comma)"); + map.get(80).add("$_gen24 = list($object_kv, :comma)"); + map.get(76).add("$_gen25 = list($e, :comma)"); + map.get(108).add("$_gen26 = list($map_kv, :comma)"); + map.get(139).add("$_gen3 = list($static_string_piece)"); + map.get(70).add("$_gen4 = list($string_piece)"); + map.get(100).add("$_gen5 = $import_namespace"); + map.get(100).add("$_gen5 = :_empty"); + map.get(83).add("$_gen6 = list($import_alias)"); + map.get(88).add("$_gen7 = list($task_sections)"); + map.get(126).add("$_gen8 = list($command_part)"); + map.get(104).add("$_gen9 = list($expression_placeholder_kv)"); + map.get(130).add("$alias = :as :identifier -> $1"); + map.get(137).add("$call = :call :fqn $_gen16 $_gen17 $_gen18 -> Call( task=$1, alias=$2, after=$3, body=$4 )"); + map.get(127).add("$call_after = :after :identifier -> $1"); + map.get(78).add("$call_body = :input :colon $_gen20 -> CallBody( inputs=$2 )"); + map.get(117).add("$call_brace_block = :lbrace $_gen19 :rbrace -> $1"); + map.get(91).add("$command = :raw_command :raw_cmd_start $_gen8 :raw_cmd_end -> RawCommand( parts=$2 )"); + map.get(95).add("$command_part = $expression_placeholder"); + map.get(95).add("$command_part = :cmd_part"); + map.get(96).add("$declaration = $type_e :identifier $setter -> Declaration( type=$0, name=$1, expression=$2 )"); + map.get(97).add("$document = $version $_gen0 $_gen1 -> Draft3File( version=$0, imports=$1, body=$2 )"); + map.get(79).add("$e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); + map.get(79).add("$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); + map.get(79).add("$e = $string_literal"); + map.get(79).add("$e = :boolean"); + map.get(79).add("$e = :dash $e -> UnaryNegation( expression=$1 )"); + map.get(79).add("$e = :float"); + map.get(79).add("$e = :identifier"); + map.get(79).add("$e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 )"); + map.get(79).add("$e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 )"); + map.get(79).add("$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); + map.get(79).add("$e = :integer"); + map.get(79).add("$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); + map.get(79).add("$e = :lparen $_gen25 :rparen -> TupleLiteral( values=$1 )"); + map.get(79).add("$e = :lsquare $_gen25 :rsquare -> ArrayLiteral( values=$1 )"); + map.get(79).add("$e = :none"); + map.get(79).add("$e = :not $e -> LogicalNot( expression=$1 )"); + map.get(79).add("$e = :object :lbrace $_gen24 :rbrace -> ObjectLiteral( map=$2 )"); + map.get(79).add("$e = :plus $e -> UnaryPlus( expression=$1 )"); + map.get(133).add("$expression_placeholder = :expression_placeholder_start $_gen9 $e :expression_placeholder_end -> ExpressionPlaceholder( attributes=$1, expr=$2 )"); + map.get(134).add("$expression_placeholder_kv = :cmd_attr_hint :identifier :equal $e -> ExpressionPlaceholderAttr( key=$1, value=$3 )"); + map.get(123).add("$file_body_element = $struct"); + map.get(123).add("$file_body_element = $task"); + map.get(123).add("$file_body_element = $workflow"); + map.get(120).add("$if_stmt = :if :lparen $e :rparen :lbrace $_gen15 :rbrace -> If( expression=$2, body=$5 )"); + map.get(81).add("$import = :import $static_string $_gen5 $_gen6 -> Import( uri=$1, namespace=$2, aliases=$3 )"); + map.get(85).add("$import_alias = :alias :identifier :as :identifier -> ImportAlias( old_name=$1, new_name=$3 )"); + map.get(107).add("$import_namespace = :as :identifier -> $1"); + map.get(67).add("$input_declaration = $type_e :identifier $_gen13 -> InputDeclaration( type=$0, name=$1, expression=$2 )"); + map.get(105).add("$input_kv = :identifier :equal $e -> ObjectKV( key=$0, value=$2 )"); + map.get(112).add("$inputs = :input :lbrace $_gen10 :rbrace -> Inputs( inputs=$2 )"); + map.get(114).add("$kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 )"); + map.get(124).add("$map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 )"); + map.get(106).add("$meta = :meta $meta_map -> Meta( map=$1 )"); + map.get(93).add("$meta_kv = :identifier :colon $meta_value -> MetaKvPair( key=$0, value=$2 )"); + map.get(77).add("$meta_map = :lbrace $_gen12 :rbrace -> $1"); + map.get(135).add("$meta_value = $static_string"); + map.get(135).add("$meta_value = :boolean"); + map.get(135).add("$meta_value = :float"); + map.get(135).add("$meta_value = :integer"); + map.get(135).add("$meta_value = :lbrace $_gen22 :rbrace -> MetaObject( map=$1 )"); + map.get(135).add("$meta_value = :lsquare $_gen21 :rsquare -> MetaArray( values=$1 )"); + map.get(135).add("$meta_value = :null"); + map.get(74).add("$object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 )"); + map.get(87).add("$output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 )"); + map.get(122).add("$outputs = :output :lbrace $_gen14 :rbrace -> Outputs( outputs=$2 )"); + map.get(72).add("$parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); + map.get(128).add("$rt_map = :lbrace $_gen11 :rbrace -> $1"); + map.get(84).add("$runtime = :runtime $rt_map -> Runtime( map=$1 )"); + map.get(116).add("$scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen15 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )"); + map.get(113).add("$setter = :equal $e -> $1"); + map.get(99).add("$static_string = :quote $_gen3 :quote -> StaticString( value=$1 )"); + map.get(118).add("$static_string_piece = :escape"); + map.get(118).add("$static_string_piece = :string"); + map.get(111).add("$string_literal = :quote $_gen4 :quote -> StringLiteral( pieces=$1 )"); + map.get(92).add("$string_piece = $expression_placeholder"); + map.get(92).add("$string_piece = $static_string_piece"); + map.get(94).add("$struct = :struct :identifier :lbrace $_gen2 :rbrace -> Struct( name=$1, entries=$3 )"); + map.get(110).add("$struct_declaration = $type_e :identifier -> StructEntry( type=$0, name=$1 )"); + map.get(138).add("$task = :task :identifier :lbrace $_gen7 :rbrace -> Task( name=$1, sections=$3 )"); + map.get(98).add("$task_sections = $command"); + map.get(98).add("$task_sections = $declaration"); + map.get(98).add("$task_sections = $inputs"); + map.get(98).add("$task_sections = $meta"); + map.get(98).add("$task_sections = $outputs"); + map.get(98).add("$task_sections = $parameter_meta"); + map.get(98).add("$task_sections = $runtime"); + map.get(140).add("$type_e = :identifier"); + map.get(140).add("$type_e = :type"); + map.get(140).add("$type_e = :type <=> :lsquare $_gen23 :rsquare -> Type( name=$0, subtype=$2 )"); + map.get(140).add("$type_e = :type <=> :plus -> NonEmptyType( innerType=$0 )"); + map.get(140).add("$type_e = :type <=> :qmark -> OptionalType( innerType=$0 )"); + map.get(121).add("$version = :version :version_name -> VersionDeclaration( v=$1 )"); + map.get(69).add("$wf_body_element = $call"); + map.get(69).add("$wf_body_element = $declaration"); + map.get(69).add("$wf_body_element = $if_stmt"); + map.get(69).add("$wf_body_element = $inputs"); + map.get(69).add("$wf_body_element = $outputs"); + map.get(69).add("$wf_body_element = $scatter"); + map.get(69).add("$wf_body_element = $wf_meta"); + map.get(69).add("$wf_body_element = $wf_parameter_meta"); + map.get(71).add("$wf_meta = :meta $meta_map -> Meta( map=$1 )"); + map.get(119).add("$wf_parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); + map.get(141).add("$workflow = :workflow :identifier :lbrace $_gen15 :rbrace -> Workflow( name=$1, body=$3 )"); nonterminal_rules = Collections.unmodifiableMap(map); } static { @@ -2644,9 +2648,9 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { map.put(new Integer(94), "$_gen21 = list($meta_value, :comma)"); map.put(new Integer(96), "$_gen22 = list($meta_kv, :comma)"); map.put(new Integer(98), "$_gen23 = list($type_e, :comma)"); - map.put(new Integer(120), "$_gen24 = list($e, :comma)"); - map.put(new Integer(124), "$_gen25 = list($object_kv, :comma)"); - map.put(new Integer(127), "$_gen26 = list($map_kv, :comma)"); + map.put(new Integer(120), "$_gen24 = list($object_kv, :comma)"); + map.put(new Integer(122), "$_gen25 = list($e, :comma)"); + map.put(new Integer(128), "$_gen26 = list($map_kv, :comma)"); map.put(new Integer(10), "$_gen3 = list($static_string_piece)"); map.put(new Integer(12), "$_gen4 = list($string_piece)"); map.put(new Integer(18), "$_gen5 = $import_namespace"); @@ -2678,22 +2682,23 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { map.put(new Integer(116), "$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )"); map.put(new Integer(112), "$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )"); map.put(new Integer(115), "$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )"); - map.put(new Integer(123), "$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); - map.put(new Integer(122), "$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); - map.put(new Integer(131), "$e = $string_literal"); - map.put(new Integer(133), "$e = :boolean"); + map.put(new Integer(125), "$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); + map.put(new Integer(124), "$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); + map.put(new Integer(132), "$e = $string_literal"); + map.put(new Integer(134), "$e = :boolean"); map.put(new Integer(119), "$e = :dash $e -> UnaryNegation( expression=$1 )"); - map.put(new Integer(135), "$e = :float"); - map.put(new Integer(132), "$e = :identifier"); - map.put(new Integer(121), "$e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 )"); - map.put(new Integer(130), "$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); - map.put(new Integer(134), "$e = :integer"); - map.put(new Integer(128), "$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); - map.put(new Integer(129), "$e = :lparen $_gen24 :rparen -> TupleLiteral( values=$1 )"); - map.put(new Integer(126), "$e = :lsquare $_gen24 :rsquare -> ArrayLiteral( values=$1 )"); - map.put(new Integer(136), "$e = :none"); + map.put(new Integer(136), "$e = :float"); + map.put(new Integer(133), "$e = :identifier"); + map.put(new Integer(121), "$e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 )"); + map.put(new Integer(123), "$e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 )"); + map.put(new Integer(131), "$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); + map.put(new Integer(135), "$e = :integer"); + map.put(new Integer(129), "$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); + map.put(new Integer(130), "$e = :lparen $_gen25 :rparen -> TupleLiteral( values=$1 )"); + map.put(new Integer(127), "$e = :lsquare $_gen25 :rsquare -> ArrayLiteral( values=$1 )"); + map.put(new Integer(137), "$e = :none"); map.put(new Integer(117), "$e = :not $e -> LogicalNot( expression=$1 )"); - map.put(new Integer(125), "$e = :object :lbrace $_gen25 :rbrace -> ObjectLiteral( map=$2 )"); + map.put(new Integer(126), "$e = :object :lbrace $_gen24 :rbrace -> ObjectLiteral( map=$2 )"); map.put(new Integer(118), "$e = :plus $e -> UnaryPlus( expression=$1 )"); map.put(new Integer(38), "$expression_placeholder = :expression_placeholder_start $_gen9 $e :expression_placeholder_end -> ExpressionPlaceholder( attributes=$1, expr=$2 )"); map.put(new Integer(39), "$expression_placeholder_kv = :cmd_attr_hint :identifier :equal $e -> ExpressionPlaceholderAttr( key=$1, value=$3 )"); @@ -2803,29 +2808,30 @@ private static Terminal expect(ParserContext ctx, TerminalIdentifier expecting) private static Map prefix_binding_power_e; static { Map map = new HashMap(); - map.put(45, 4000); /* $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) */ - map.put(29, 5000); /* $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) */ - map.put(53, 6000); /* $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) */ - map.put(51, 6000); /* $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) */ - map.put(36, 7000); /* $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) */ - map.put(40, 7000); /* $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) */ - map.put(2, 7000); /* $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) */ - map.put(52, 7000); /* $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) */ - map.put(33, 8000); /* $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) */ - map.put(32, 8000); /* $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) */ - map.put(18, 9000); /* $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) */ - map.put(37, 9000); /* $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) */ - map.put(64, 9000); /* $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) */ - map.put(15, 11000); /* $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall( name=$0, params=$2 ) */ - map.put(17, 12000); /* $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) */ - map.put(42, 13000); /* $e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 ) */ + map.put(40, 4000); /* $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) */ + map.put(63, 5000); /* $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) */ + map.put(56, 6000); /* $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) */ + map.put(20, 6000); /* $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) */ + map.put(57, 7000); /* $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) */ + map.put(48, 7000); /* $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) */ + map.put(18, 7000); /* $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) */ + map.put(34, 7000); /* $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) */ + map.put(59, 8000); /* $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) */ + map.put(42, 8000); /* $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) */ + map.put(21, 9000); /* $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) */ + map.put(30, 9000); /* $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) */ + map.put(6, 9000); /* $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) */ + map.put(3, 11000); /* $e = :identifier <=> :lbrace list($object_kv, :comma) :rbrace -> StructLiteral( name=$0, map=$2 ) */ + map.put(64, 12000); /* $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall( name=$0, params=$2 ) */ + map.put(39, 13000); /* $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) */ + map.put(45, 14000); /* $e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 ) */ infix_binding_power_e = Collections.unmodifiableMap(map); } static { Map map = new HashMap(); - map.put(12, 10000); /* $e = :not $e -> LogicalNot( expression=$1 ) */ - map.put(33, 10000); /* $e = :plus $e -> UnaryPlus( expression=$1 ) */ - map.put(32, 10000); /* $e = :dash $e -> UnaryNegation( expression=$1 ) */ + map.put(43, 10000); /* $e = :not $e -> LogicalNot( expression=$1 ) */ + map.put(59, 10000); /* $e = :plus $e -> UnaryPlus( expression=$1 ) */ + map.put(42, 10000); /* $e = :dash $e -> UnaryNegation( expression=$1 ) */ prefix_binding_power_e = Collections.unmodifiableMap(map); } static int get_infix_binding_power_e(int terminal_id) { @@ -2862,7 +2868,7 @@ public static ParseTree parse_e_internal(ParserContext ctx, int rbp) throws Synt return left; } private static ParseTree nud_e(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(107, "e") ); + ParseTree tree = new ParseTree( new NonTerminal(79, "e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "e"; if (current == null) { @@ -2876,7 +2882,7 @@ else if (rule_first.get(117).contains(terminal_map.get(current.getId()))) { tree.setAstTransformation(new AstTransformNodeCreator("LogicalNot", parameters)); tree.setNudMorphemeCount(2); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_NOT)); - tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(12))); + tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(43))); tree.setPrefix(true); } else if (rule_first.get(118).contains(terminal_map.get(current.getId()))) { @@ -2887,7 +2893,7 @@ else if (rule_first.get(118).contains(terminal_map.get(current.getId()))) { tree.setAstTransformation(new AstTransformNodeCreator("UnaryPlus", parameters)); tree.setNudMorphemeCount(2); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_PLUS)); - tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(33))); + tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(59))); tree.setPrefix(true); } else if (rule_first.get(119).contains(terminal_map.get(current.getId()))) { @@ -2898,42 +2904,49 @@ else if (rule_first.get(119).contains(terminal_map.get(current.getId()))) { tree.setAstTransformation(new AstTransformNodeCreator("UnaryNegation", parameters)); tree.setNudMorphemeCount(2); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DASH)); - tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(32))); + tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(42))); tree.setPrefix(true); } else if (rule_first.get(121).contains(terminal_map.get(current.getId()))) { - /* (121) $e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 ) */ + /* (121) $e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 ) */ ctx.rule = rules.get(121); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); } - else if (rule_first.get(125).contains(terminal_map.get(current.getId()))) { - /* (125) $e = :object :lbrace $_gen25 :rbrace -> ObjectLiteral( map=$2 ) */ - ctx.rule = rules.get(125); + else if (rule_first.get(123).contains(terminal_map.get(current.getId()))) { + /* (123) $e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 ) */ + ctx.rule = rules.get(123); + tree.setAstTransformation(new AstTransformSubstitution(0)); + tree.setNudMorphemeCount(1); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); + } + else if (rule_first.get(126).contains(terminal_map.get(current.getId()))) { + /* (126) $e = :object :lbrace $_gen24 :rbrace -> ObjectLiteral( map=$2 ) */ + ctx.rule = rules.get(126); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("map", 2); tree.setAstTransformation(new AstTransformNodeCreator("ObjectLiteral", parameters)); tree.setNudMorphemeCount(4); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_OBJECT)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LBRACE)); - tree.add(parse__gen25(ctx)); + tree.add(parse__gen24(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RBRACE)); } - else if (rule_first.get(126).contains(terminal_map.get(current.getId()))) { - /* (126) $e = :lsquare $_gen24 :rsquare -> ArrayLiteral( values=$1 ) */ - ctx.rule = rules.get(126); + else if (rule_first.get(127).contains(terminal_map.get(current.getId()))) { + /* (127) $e = :lsquare $_gen25 :rsquare -> ArrayLiteral( values=$1 ) */ + ctx.rule = rules.get(127); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("values", 1); tree.setAstTransformation(new AstTransformNodeCreator("ArrayLiteral", parameters)); tree.setNudMorphemeCount(3); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LSQUARE)); - tree.add(parse__gen24(ctx)); + tree.add(parse__gen25(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RSQUARE)); } - else if (rule_first.get(128).contains(terminal_map.get(current.getId()))) { - /* (128) $e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 ) */ - ctx.rule = rules.get(128); + else if (rule_first.get(129).contains(terminal_map.get(current.getId()))) { + /* (129) $e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 ) */ + ctx.rule = rules.get(129); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("map", 1); tree.setAstTransformation(new AstTransformNodeCreator("MapLiteral", parameters)); @@ -2942,20 +2955,20 @@ else if (rule_first.get(128).contains(terminal_map.get(current.getId()))) { tree.add(parse__gen26(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RBRACE)); } - else if (rule_first.get(129).contains(terminal_map.get(current.getId()))) { - /* (129) $e = :lparen $_gen24 :rparen -> TupleLiteral( values=$1 ) */ - ctx.rule = rules.get(129); + else if (rule_first.get(130).contains(terminal_map.get(current.getId()))) { + /* (130) $e = :lparen $_gen25 :rparen -> TupleLiteral( values=$1 ) */ + ctx.rule = rules.get(130); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("values", 1); tree.setAstTransformation(new AstTransformNodeCreator("TupleLiteral", parameters)); tree.setNudMorphemeCount(3); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LPAREN)); - tree.add(parse__gen24(ctx)); + tree.add(parse__gen25(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RPAREN)); } - else if (rule_first.get(130).contains(terminal_map.get(current.getId()))) { - /* (130) $e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 ) */ - ctx.rule = rules.get(130); + else if (rule_first.get(131).contains(terminal_map.get(current.getId()))) { + /* (131) $e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 ) */ + ctx.rule = rules.get(131); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("cond", 1); parameters.put("iftrue", 3); @@ -2969,56 +2982,56 @@ else if (rule_first.get(130).contains(terminal_map.get(current.getId()))) { tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_ELSE)); tree.add(parse_e(ctx)); } - else if (rule_first.get(131).contains(terminal_map.get(current.getId()))) { - /* (131) $e = $string_literal */ - ctx.rule = rules.get(131); - tree.setAstTransformation(new AstTransformSubstitution(0)); - tree.setNudMorphemeCount(1); - tree.add(parse_string_literal(ctx)); - } else if (rule_first.get(132).contains(terminal_map.get(current.getId()))) { - /* (132) $e = :identifier */ + /* (132) $e = $string_literal */ ctx.rule = rules.get(132); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); + tree.add(parse_string_literal(ctx)); } else if (rule_first.get(133).contains(terminal_map.get(current.getId()))) { - /* (133) $e = :boolean */ + /* (133) $e = :identifier */ ctx.rule = rules.get(133); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_BOOLEAN)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); } else if (rule_first.get(134).contains(terminal_map.get(current.getId()))) { - /* (134) $e = :integer */ + /* (134) $e = :boolean */ ctx.rule = rules.get(134); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_INTEGER)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_BOOLEAN)); } else if (rule_first.get(135).contains(terminal_map.get(current.getId()))) { - /* (135) $e = :float */ + /* (135) $e = :integer */ ctx.rule = rules.get(135); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_FLOAT)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_INTEGER)); } else if (rule_first.get(136).contains(terminal_map.get(current.getId()))) { - /* (136) $e = :none */ + /* (136) $e = :float */ ctx.rule = rules.get(136); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_FLOAT)); + } + else if (rule_first.get(137).contains(terminal_map.get(current.getId()))) { + /* (137) $e = :none */ + ctx.rule = rules.get(137); + tree.setAstTransformation(new AstTransformSubstitution(0)); + tree.setNudMorphemeCount(1); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_NONE)); } return tree; } private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(107, "e") ); + ParseTree tree = new ParseTree( new NonTerminal(79, "e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "e"; int modifier; - if (current.getId() == 45) { + if (current.getId() == 40) { /* $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(104); LinkedHashMap parameters = new LinkedHashMap(); @@ -3030,10 +3043,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DOUBLE_PIPE)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(45) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(40) - modifier)); return tree; } - if (current.getId() == 29) { + if (current.getId() == 63) { /* $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(105); LinkedHashMap parameters = new LinkedHashMap(); @@ -3045,10 +3058,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DOUBLE_AMPERSAND)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(29) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(63) - modifier)); return tree; } - if (current.getId() == 53) { + if (current.getId() == 56) { /* $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(106); LinkedHashMap parameters = new LinkedHashMap(); @@ -3060,10 +3073,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DOUBLE_EQUAL)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(53) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(56) - modifier)); return tree; } - if (current.getId() == 51) { + if (current.getId() == 20) { /* $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(107); LinkedHashMap parameters = new LinkedHashMap(); @@ -3075,10 +3088,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_NOT_EQUAL)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(51) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(20) - modifier)); return tree; } - if (current.getId() == 36) { + if (current.getId() == 57) { /* $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(108); LinkedHashMap parameters = new LinkedHashMap(); @@ -3090,10 +3103,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LT)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(36) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(57) - modifier)); return tree; } - if (current.getId() == 40) { + if (current.getId() == 48) { /* $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(109); LinkedHashMap parameters = new LinkedHashMap(); @@ -3105,10 +3118,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LTEQ)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(40) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(48) - modifier)); return tree; } - if (current.getId() == 2) { + if (current.getId() == 18) { /* $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(110); LinkedHashMap parameters = new LinkedHashMap(); @@ -3120,10 +3133,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_GT)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(2) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(18) - modifier)); return tree; } - if (current.getId() == 52) { + if (current.getId() == 34) { /* $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(111); LinkedHashMap parameters = new LinkedHashMap(); @@ -3135,10 +3148,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_GTEQ)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(52) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(34) - modifier)); return tree; } - if (current.getId() == 33) { + if (current.getId() == 59) { /* $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(112); LinkedHashMap parameters = new LinkedHashMap(); @@ -3150,10 +3163,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_PLUS)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(33) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(59) - modifier)); return tree; } - if (current.getId() == 32) { + if (current.getId() == 42) { /* $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(113); LinkedHashMap parameters = new LinkedHashMap(); @@ -3165,10 +3178,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DASH)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(32) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(42) - modifier)); return tree; } - if (current.getId() == 18) { + if (current.getId() == 21) { /* $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(114); LinkedHashMap parameters = new LinkedHashMap(); @@ -3180,10 +3193,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_ASTERISK)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(18) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(21) - modifier)); return tree; } - if (current.getId() == 37) { + if (current.getId() == 30) { /* $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(115); LinkedHashMap parameters = new LinkedHashMap(); @@ -3195,10 +3208,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_SLASH)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(37) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(30) - modifier)); return tree; } - if (current.getId() == 64) { + if (current.getId() == 6) { /* $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(116); LinkedHashMap parameters = new LinkedHashMap(); @@ -3210,25 +3223,38 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_PERCENT)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(64) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(6) - modifier)); return tree; } - if (current.getId() == 15) { - /* $e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 ) */ + if (current.getId() == 3) { + /* $e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 ) */ ctx.rule = rules.get(121); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("name", 0); + parameters.put("map", 2); + tree.setAstTransformation(new AstTransformNodeCreator("StructLiteral", parameters)); + tree.add(left); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LBRACE)); + tree.add(parse__gen24(ctx)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RBRACE)); + return tree; + } + if (current.getId() == 64) { + /* $e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 ) */ + ctx.rule = rules.get(123); + LinkedHashMap parameters = new LinkedHashMap(); + parameters.put("name", 0); parameters.put("params", 2); tree.setAstTransformation(new AstTransformNodeCreator("FunctionCall", parameters)); tree.add(left); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LPAREN)); - tree.add(parse__gen24(ctx)); + tree.add(parse__gen25(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RPAREN)); return tree; } - if (current.getId() == 17) { + if (current.getId() == 39) { /* $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) */ - ctx.rule = rules.get(122); + ctx.rule = rules.get(124); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("lhs", 0); parameters.put("rhs", 2); @@ -3237,13 +3263,13 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(left); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LSQUARE)); modifier = 0; - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(17) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(39) - modifier)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RSQUARE)); return tree; } - if (current.getId() == 42) { + if (current.getId() == 45) { /* $e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 ) */ - ctx.rule = rules.get(123); + ctx.rule = rules.get(125); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("value", 0); parameters.put("member", 2); @@ -3300,7 +3326,7 @@ public static ParseTree parse_meta_value_internal(ParserContext ctx, int rbp) th return left; } private static ParseTree nud_meta_value(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(120, "meta_value") ); + ParseTree tree = new ParseTree( new NonTerminal(135, "meta_value") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "meta_value"; if (current == null) { @@ -3366,7 +3392,7 @@ else if (rule_first.get(97).contains(terminal_map.get(current.getId()))) { return tree; } private static ParseTree led_meta_value(ParseTree left, ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(120, "meta_value") ); + ParseTree tree = new ParseTree( new NonTerminal(135, "meta_value") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "meta_value"; int modifier; @@ -3376,9 +3402,9 @@ private static ParseTree led_meta_value(ParseTree left, ParserContext ctx) throw private static Map prefix_binding_power_type_e; static { Map map = new HashMap(); - map.put(17, 1000); /* $type_e = :type <=> :lsquare list($type_e, :comma) :rsquare -> Type( name=$0, subtype=$2 ) */ - map.put(21, 2000); /* $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) */ - map.put(33, 3000); /* $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) */ + map.put(39, 1000); /* $type_e = :type <=> :lsquare list($type_e, :comma) :rsquare -> Type( name=$0, subtype=$2 ) */ + map.put(1, 2000); /* $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) */ + map.put(59, 3000); /* $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) */ infix_binding_power_type_e = Collections.unmodifiableMap(map); } static { @@ -3419,7 +3445,7 @@ public static ParseTree parse_type_e_internal(ParserContext ctx, int rbp) throws return left; } private static ParseTree nud_type_e(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(67, "type_e") ); + ParseTree tree = new ParseTree( new NonTerminal(140, "type_e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "type_e"; if (current == null) { @@ -3463,11 +3489,11 @@ else if (rule_first.get(103).contains(terminal_map.get(current.getId()))) { return tree; } private static ParseTree led_type_e(ParseTree left, ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(67, "type_e") ); + ParseTree tree = new ParseTree( new NonTerminal(140, "type_e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "type_e"; int modifier; - if (current.getId() == 17) { + if (current.getId() == 39) { /* $type_e = :type <=> :lsquare $_gen23 :rsquare -> Type( name=$0, subtype=$2 ) */ ctx.rule = rules.get(99); LinkedHashMap parameters = new LinkedHashMap(); @@ -3480,7 +3506,7 @@ private static ParseTree led_type_e(ParseTree left, ParserContext ctx) throws Sy tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RSQUARE)); return tree; } - if (current.getId() == 21) { + if (current.getId() == 1) { /* $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) */ ctx.rule = rules.get(100); LinkedHashMap parameters = new LinkedHashMap(); @@ -3490,7 +3516,7 @@ private static ParseTree led_type_e(ParseTree left, ParserContext ctx) throws Sy tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_QMARK)); return tree; } - if (current.getId() == 33) { + if (current.getId() == 59) { /* $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) */ ctx.rule = rules.get(101); LinkedHashMap parameters = new LinkedHashMap(); @@ -3507,12 +3533,12 @@ public ParseTree parse__gen0(List tokens, SyntaxErrorFormatter error_f return parse__gen0(ctx); } private static ParseTree parse__gen0(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(75, "_gen0")); + ParseTree tree = new ParseTree(new NonTerminal(82, "_gen0")); tree.setList(true); ctx.nonterminal = "_gen0"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(75).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(75).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(82).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(82).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3521,7 +3547,7 @@ private static ParseTree parse__gen0(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(75).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(82).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_import(ctx)); ctx.nonterminal = "_gen0"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3533,12 +3559,12 @@ public ParseTree parse__gen1(List tokens, SyntaxErrorFormatter error_f return parse__gen1(ctx); } private static ParseTree parse__gen1(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(128, "_gen1")); + ParseTree tree = new ParseTree(new NonTerminal(90, "_gen1")); tree.setList(true); ctx.nonterminal = "_gen1"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(128).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(128).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(90).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(90).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3547,7 +3573,7 @@ private static ParseTree parse__gen1(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(128).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(90).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_file_body_element(ctx)); ctx.nonterminal = "_gen1"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3559,12 +3585,12 @@ public ParseTree parse__gen10(List tokens, SyntaxErrorFormatter error_ return parse__gen10(ctx); } private static ParseTree parse__gen10(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(115, "_gen10")); + ParseTree tree = new ParseTree(new NonTerminal(68, "_gen10")); tree.setList(true); ctx.nonterminal = "_gen10"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(115).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(115).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(68).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(68).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3573,7 +3599,7 @@ private static ParseTree parse__gen10(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(115).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(68).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_input_declaration(ctx)); ctx.nonterminal = "_gen10"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3585,12 +3611,12 @@ public ParseTree parse__gen11(List tokens, SyntaxErrorFormatter error_ return parse__gen11(ctx); } private static ParseTree parse__gen11(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(68, "_gen11")); + ParseTree tree = new ParseTree(new NonTerminal(101, "_gen11")); tree.setList(true); ctx.nonterminal = "_gen11"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(68).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(68).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(101).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(101).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3599,7 +3625,7 @@ private static ParseTree parse__gen11(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(68).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(101).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_kv(ctx)); ctx.nonterminal = "_gen11"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3611,12 +3637,12 @@ public ParseTree parse__gen12(List tokens, SyntaxErrorFormatter error_ return parse__gen12(ctx); } private static ParseTree parse__gen12(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(76, "_gen12")); + ParseTree tree = new ParseTree(new NonTerminal(86, "_gen12")); tree.setList(true); ctx.nonterminal = "_gen12"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(76).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(76).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(86).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(86).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3625,7 +3651,7 @@ private static ParseTree parse__gen12(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(76).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(86).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_meta_kv(ctx)); ctx.nonterminal = "_gen12"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3637,12 +3663,12 @@ public ParseTree parse__gen14(List tokens, SyntaxErrorFormatter error_ return parse__gen14(ctx); } private static ParseTree parse__gen14(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(89, "_gen14")); + ParseTree tree = new ParseTree(new NonTerminal(129, "_gen14")); tree.setList(true); ctx.nonterminal = "_gen14"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(89).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(89).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(129).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(129).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3651,7 +3677,7 @@ private static ParseTree parse__gen14(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(89).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(129).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_output_kv(ctx)); ctx.nonterminal = "_gen14"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3663,12 +3689,12 @@ public ParseTree parse__gen15(List tokens, SyntaxErrorFormatter error_ return parse__gen15(ctx); } private static ParseTree parse__gen15(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(132, "_gen15")); + ParseTree tree = new ParseTree(new NonTerminal(115, "_gen15")); tree.setList(true); ctx.nonterminal = "_gen15"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(132).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(132).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(115).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(115).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3677,7 +3703,7 @@ private static ParseTree parse__gen15(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(132).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(115).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_wf_body_element(ctx)); ctx.nonterminal = "_gen15"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3689,12 +3715,12 @@ public ParseTree parse__gen17(List tokens, SyntaxErrorFormatter error_ return parse__gen17(ctx); } private static ParseTree parse__gen17(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(95, "_gen17")); + ParseTree tree = new ParseTree(new NonTerminal(132, "_gen17")); tree.setList(true); ctx.nonterminal = "_gen17"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(95).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(95).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(132).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(132).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3703,7 +3729,7 @@ private static ParseTree parse__gen17(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(95).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(132).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_call_after(ctx)); ctx.nonterminal = "_gen17"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3715,12 +3741,12 @@ public ParseTree parse__gen2(List tokens, SyntaxErrorFormatter error_f return parse__gen2(ctx); } private static ParseTree parse__gen2(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(129, "_gen2")); + ParseTree tree = new ParseTree(new NonTerminal(136, "_gen2")); tree.setList(true); ctx.nonterminal = "_gen2"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(129).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(129).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(136).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(136).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3729,7 +3755,7 @@ private static ParseTree parse__gen2(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(129).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(136).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_struct_declaration(ctx)); ctx.nonterminal = "_gen2"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3741,13 +3767,13 @@ public ParseTree parse__gen20(List tokens, SyntaxErrorFormatter error_ return parse__gen20(ctx); } private static ParseTree parse__gen20(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(87, "_gen20")); + ParseTree tree = new ParseTree(new NonTerminal(131, "_gen20")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen20"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(87).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(87).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(131).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(131).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3756,7 +3782,7 @@ private static ParseTree parse__gen20(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(87).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(131).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_input_kv(ctx)); ctx.nonterminal = "_gen20"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3782,13 +3808,13 @@ public ParseTree parse__gen21(List tokens, SyntaxErrorFormatter error_ return parse__gen21(ctx); } private static ParseTree parse__gen21(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(91, "_gen21")); + ParseTree tree = new ParseTree(new NonTerminal(102, "_gen21")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen21"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(91).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(91).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(102).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(102).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3797,7 +3823,7 @@ private static ParseTree parse__gen21(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(91).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(102).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_meta_value(ctx)); ctx.nonterminal = "_gen21"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3823,13 +3849,13 @@ public ParseTree parse__gen22(List tokens, SyntaxErrorFormatter error_ return parse__gen22(ctx); } private static ParseTree parse__gen22(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(110, "_gen22")); + ParseTree tree = new ParseTree(new NonTerminal(109, "_gen22")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen22"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(110).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(110).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3838,7 +3864,7 @@ private static ParseTree parse__gen22(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(110).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_meta_kv(ctx)); ctx.nonterminal = "_gen22"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3864,13 +3890,13 @@ public ParseTree parse__gen23(List tokens, SyntaxErrorFormatter error_ return parse__gen23(ctx); } private static ParseTree parse__gen23(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(70, "_gen23")); + ParseTree tree = new ParseTree(new NonTerminal(125, "_gen23")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen23"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(70).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(70).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(125).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(125).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3879,7 +3905,7 @@ private static ParseTree parse__gen23(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(70).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(125).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_type_e(ctx)); ctx.nonterminal = "_gen23"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3905,13 +3931,13 @@ public ParseTree parse__gen24(List tokens, SyntaxErrorFormatter error_ return parse__gen24(ctx); } private static ParseTree parse__gen24(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(108, "_gen24")); + ParseTree tree = new ParseTree(new NonTerminal(80, "_gen24")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen24"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(108).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(108).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(80).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(80).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3920,8 +3946,8 @@ private static ParseTree parse__gen24(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(108).contains(terminal_map.get(ctx.tokens.current().getId())))) { - tree.add(parse_e(ctx)); + nonterminal_first.get(80).contains(terminal_map.get(ctx.tokens.current().getId())))) { + tree.add(parse_object_kv(ctx)); ctx.nonterminal = "_gen24"; // because parse_* can reset this if (ctx.tokens.current() != null && ctx.tokens.current().getId() == WdlTerminalIdentifier.TERMINAL_COMMA.id()) { @@ -3946,13 +3972,13 @@ public ParseTree parse__gen25(List tokens, SyntaxErrorFormatter error_ return parse__gen25(ctx); } private static ParseTree parse__gen25(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(135, "_gen25")); + ParseTree tree = new ParseTree(new NonTerminal(76, "_gen25")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen25"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(135).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(135).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(76).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(76).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3961,8 +3987,8 @@ private static ParseTree parse__gen25(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(135).contains(terminal_map.get(ctx.tokens.current().getId())))) { - tree.add(parse_object_kv(ctx)); + nonterminal_first.get(76).contains(terminal_map.get(ctx.tokens.current().getId())))) { + tree.add(parse_e(ctx)); ctx.nonterminal = "_gen25"; // because parse_* can reset this if (ctx.tokens.current() != null && ctx.tokens.current().getId() == WdlTerminalIdentifier.TERMINAL_COMMA.id()) { @@ -3987,13 +4013,13 @@ public ParseTree parse__gen26(List tokens, SyntaxErrorFormatter error_ return parse__gen26(ctx); } private static ParseTree parse__gen26(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(119, "_gen26")); + ParseTree tree = new ParseTree(new NonTerminal(108, "_gen26")); tree.setList(true); - tree.setListSeparator(19); + tree.setListSeparator(46); ctx.nonterminal = "_gen26"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(119).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(119).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(108).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(108).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4002,7 +4028,7 @@ private static ParseTree parse__gen26(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(119).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(108).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_map_kv(ctx)); ctx.nonterminal = "_gen26"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -4028,12 +4054,12 @@ public ParseTree parse__gen3(List tokens, SyntaxErrorFormatter error_f return parse__gen3(ctx); } private static ParseTree parse__gen3(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(92, "_gen3")); + ParseTree tree = new ParseTree(new NonTerminal(139, "_gen3")); tree.setList(true); ctx.nonterminal = "_gen3"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(92).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(92).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(139).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(139).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4042,7 +4068,7 @@ private static ParseTree parse__gen3(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(92).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(139).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_static_string_piece(ctx)); ctx.nonterminal = "_gen3"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4054,12 +4080,12 @@ public ParseTree parse__gen4(List tokens, SyntaxErrorFormatter error_f return parse__gen4(ctx); } private static ParseTree parse__gen4(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(114, "_gen4")); + ParseTree tree = new ParseTree(new NonTerminal(70, "_gen4")); tree.setList(true); ctx.nonterminal = "_gen4"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(114).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(114).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(70).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(70).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4068,7 +4094,7 @@ private static ParseTree parse__gen4(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(114).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(70).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_string_piece(ctx)); ctx.nonterminal = "_gen4"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4080,12 +4106,12 @@ public ParseTree parse__gen6(List tokens, SyntaxErrorFormatter error_f return parse__gen6(ctx); } private static ParseTree parse__gen6(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(102, "_gen6")); + ParseTree tree = new ParseTree(new NonTerminal(83, "_gen6")); tree.setList(true); ctx.nonterminal = "_gen6"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(102).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(102).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(83).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(83).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4094,7 +4120,7 @@ private static ParseTree parse__gen6(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(102).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(83).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_import_alias(ctx)); ctx.nonterminal = "_gen6"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4106,12 +4132,12 @@ public ParseTree parse__gen7(List tokens, SyntaxErrorFormatter error_f return parse__gen7(ctx); } private static ParseTree parse__gen7(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(104, "_gen7")); + ParseTree tree = new ParseTree(new NonTerminal(88, "_gen7")); tree.setList(true); ctx.nonterminal = "_gen7"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(104).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(104).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(88).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(88).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4120,7 +4146,7 @@ private static ParseTree parse__gen7(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(104).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(88).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_task_sections(ctx)); ctx.nonterminal = "_gen7"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4132,12 +4158,12 @@ public ParseTree parse__gen8(List tokens, SyntaxErrorFormatter error_f return parse__gen8(ctx); } private static ParseTree parse__gen8(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(140, "_gen8")); + ParseTree tree = new ParseTree(new NonTerminal(126, "_gen8")); tree.setList(true); ctx.nonterminal = "_gen8"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(140).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(140).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(126).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(126).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4146,7 +4172,7 @@ private static ParseTree parse__gen8(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(140).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(126).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_command_part(ctx)); ctx.nonterminal = "_gen8"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4158,12 +4184,12 @@ public ParseTree parse__gen9(List tokens, SyntaxErrorFormatter error_f return parse__gen9(ctx); } private static ParseTree parse__gen9(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(109, "_gen9")); + ParseTree tree = new ParseTree(new NonTerminal(104, "_gen9")); tree.setList(true); ctx.nonterminal = "_gen9"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(104).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(104).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4172,7 +4198,7 @@ private static ParseTree parse__gen9(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(104).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_expression_placeholder_kv(ctx)); ctx.nonterminal = "_gen9"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4187,12 +4213,12 @@ private static ParseTree parse__gen13(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[50][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(117, "_gen13")); + int rule = (current != null) ? table[8][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(75, "_gen13")); ctx.nonterminal = "_gen13"; if ( current != null && - !nonterminal_first.get(117).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(117).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(75).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(75).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4216,12 +4242,12 @@ private static ParseTree parse__gen16(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[12][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(79, "_gen16")); + int rule = (current != null) ? table[36][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(103, "_gen16")); ctx.nonterminal = "_gen16"; if ( current != null && - !nonterminal_first.get(79).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(79).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(103).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(103).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4245,12 +4271,12 @@ private static ParseTree parse__gen18(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[14][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(81, "_gen18")); + int rule = (current != null) ? table[22][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(89, "_gen18")); ctx.nonterminal = "_gen18"; if ( current != null && - !nonterminal_first.get(81).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(81).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(89).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(89).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4274,12 +4300,12 @@ private static ParseTree parse__gen19(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[21][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(88, "_gen19")); + int rule = (current != null) ? table[6][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(73, "_gen19")); ctx.nonterminal = "_gen19"; if ( current != null && - !nonterminal_first.get(88).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(88).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(73).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(73).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4303,12 +4329,12 @@ private static ParseTree parse__gen5(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[64][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(131, "_gen5")); + int rule = (current != null) ? table[33][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(100, "_gen5")); ctx.nonterminal = "_gen5"; if ( current != null && - !nonterminal_first.get(131).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(131).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(100).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(100).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4332,14 +4358,14 @@ private static ParseTree parse_alias(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[59][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(126, "alias")); + int rule = (current != null) ? table[63][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(130, "alias")); ctx.nonterminal = "alias"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "alias", - nonterminal_first.get(126), - nonterminal_rules.get(126) + nonterminal_first.get(130), + nonterminal_rules.get(130) )); } if (rule == 81) { @@ -4355,7 +4381,7 @@ private static ParseTree parse_alias(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "alias", current, - nonterminal_first.get(126), + nonterminal_first.get(130), rules.get(81) )); } @@ -4367,14 +4393,14 @@ private static ParseTree parse_call(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[57][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(124, "call")); + int rule = (current != null) ? table[70][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(137, "call")); ctx.nonterminal = "call"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call", - nonterminal_first.get(124), - nonterminal_rules.get(124) + nonterminal_first.get(137), + nonterminal_rules.get(137) )); } if (rule == 75) { @@ -4401,7 +4427,7 @@ private static ParseTree parse_call(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call", current, - nonterminal_first.get(124), + nonterminal_first.get(137), rules.get(75) )); } @@ -4413,14 +4439,14 @@ private static ParseTree parse_call_after(ParserContext ctx) throws SyntaxError Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[11][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(78, "call_after")); + int rule = (current != null) ? table[60][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(127, "call_after")); ctx.nonterminal = "call_after"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call_after", - nonterminal_first.get(78), - nonterminal_rules.get(78) + nonterminal_first.get(127), + nonterminal_rules.get(127) )); } if (rule == 82) { @@ -4436,7 +4462,7 @@ private static ParseTree parse_call_after(ParserContext ctx) throws SyntaxError throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call_after", current, - nonterminal_first.get(78), + nonterminal_first.get(127), rules.get(82) )); } @@ -4448,14 +4474,14 @@ private static ParseTree parse_call_body(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[19][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(86, "call_body")); + int rule = (current != null) ? table[11][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(78, "call_body")); ctx.nonterminal = "call_body"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call_body", - nonterminal_first.get(86), - nonterminal_rules.get(86) + nonterminal_first.get(78), + nonterminal_rules.get(78) )); } if (rule == 80) { @@ -4475,7 +4501,7 @@ private static ParseTree parse_call_body(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call_body", current, - nonterminal_first.get(86), + nonterminal_first.get(78), rules.get(80) )); } @@ -4487,14 +4513,14 @@ private static ParseTree parse_call_brace_block(ParserContext ctx) throws Syntax Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[51][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(118, "call_brace_block")); + int rule = (current != null) ? table[50][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(117, "call_brace_block")); ctx.nonterminal = "call_brace_block"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call_brace_block", - nonterminal_first.get(118), - nonterminal_rules.get(118) + nonterminal_first.get(117), + nonterminal_rules.get(117) )); } if (rule == 78) { @@ -4512,7 +4538,7 @@ private static ParseTree parse_call_brace_block(ParserContext ctx) throws Syntax throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call_brace_block", current, - nonterminal_first.get(118), + nonterminal_first.get(117), rules.get(78) )); } @@ -4524,14 +4550,14 @@ private static ParseTree parse_command(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[5][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(72, "command")); + int rule = (current != null) ? table[24][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(91, "command")); ctx.nonterminal = "command"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "command", - nonterminal_first.get(72), - nonterminal_rules.get(72) + nonterminal_first.get(91), + nonterminal_rules.get(91) )); } if (rule == 34) { @@ -4553,7 +4579,7 @@ private static ParseTree parse_command(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "command", current, - nonterminal_first.get(72), + nonterminal_first.get(91), rules.get(34) )); } @@ -4565,14 +4591,14 @@ private static ParseTree parse_command_part(ParserContext ctx) throws SyntaxErro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[32][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(99, "command_part")); + int rule = (current != null) ? table[28][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(95, "command_part")); ctx.nonterminal = "command_part"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "command_part", - nonterminal_first.get(99), - nonterminal_rules.get(99) + nonterminal_first.get(95), + nonterminal_rules.get(95) )); } if (rule == 35) { @@ -4594,7 +4620,7 @@ else if (rule == 36) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "command_part", current, - nonterminal_first.get(99), + nonterminal_first.get(95), rules.get(36) )); } @@ -4606,14 +4632,14 @@ private static ParseTree parse_declaration(ParserContext ctx) throws SyntaxError Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[26][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(93, "declaration")); + int rule = (current != null) ? table[29][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(96, "declaration")); ctx.nonterminal = "declaration"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "declaration", - nonterminal_first.get(93), - nonterminal_rules.get(93) + nonterminal_first.get(96), + nonterminal_rules.get(96) )); } if (rule == 54) { @@ -4635,7 +4661,7 @@ private static ParseTree parse_declaration(ParserContext ctx) throws SyntaxError throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "declaration", current, - nonterminal_first.get(93), + nonterminal_first.get(96), rules.get(54) )); } @@ -4647,14 +4673,14 @@ private static ParseTree parse_document(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[71][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(138, "document")); + int rule = (current != null) ? table[30][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(97, "document")); ctx.nonterminal = "document"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "document", - nonterminal_first.get(138), - nonterminal_rules.get(138) + nonterminal_first.get(97), + nonterminal_rules.get(97) )); } if (rule == 2) { @@ -4676,7 +4702,7 @@ private static ParseTree parse_document(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "document", current, - nonterminal_first.get(138), + nonterminal_first.get(97), rules.get(2) )); } @@ -4688,14 +4714,14 @@ private static ParseTree parse_expression_placeholder(ParserContext ctx) throws Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[30][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(97, "expression_placeholder")); + int rule = (current != null) ? table[66][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(133, "expression_placeholder")); ctx.nonterminal = "expression_placeholder"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "expression_placeholder", - nonterminal_first.get(97), - nonterminal_rules.get(97) + nonterminal_first.get(133), + nonterminal_rules.get(133) )); } if (rule == 38) { @@ -4718,7 +4744,7 @@ private static ParseTree parse_expression_placeholder(ParserContext ctx) throws throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "expression_placeholder", current, - nonterminal_first.get(97), + nonterminal_first.get(133), rules.get(38) )); } @@ -4730,14 +4756,14 @@ private static ParseTree parse_expression_placeholder_kv(ParserContext ctx) thro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[66][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(133, "expression_placeholder_kv")); + int rule = (current != null) ? table[67][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(134, "expression_placeholder_kv")); ctx.nonterminal = "expression_placeholder_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "expression_placeholder_kv", - nonterminal_first.get(133), - nonterminal_rules.get(133) + nonterminal_first.get(134), + nonterminal_rules.get(134) )); } if (rule == 39) { @@ -4760,7 +4786,7 @@ private static ParseTree parse_expression_placeholder_kv(ParserContext ctx) thro throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "expression_placeholder_kv", current, - nonterminal_first.get(133), + nonterminal_first.get(134), rules.get(39) )); } @@ -4772,14 +4798,14 @@ private static ParseTree parse_file_body_element(ParserContext ctx) throws Synta Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[60][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(127, "file_body_element")); + int rule = (current != null) ? table[56][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(123, "file_body_element")); ctx.nonterminal = "file_body_element"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "file_body_element", - nonterminal_first.get(127), - nonterminal_rules.get(127) + nonterminal_first.get(123), + nonterminal_rules.get(123) )); } if (rule == 3) { @@ -4809,7 +4835,7 @@ else if (rule == 5) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "file_body_element", current, - nonterminal_first.get(127), + nonterminal_first.get(123), rules.get(5) )); } @@ -4821,14 +4847,14 @@ private static ParseTree parse_if_stmt(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[27][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(94, "if_stmt")); + int rule = (current != null) ? table[53][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(120, "if_stmt")); ctx.nonterminal = "if_stmt"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "if_stmt", - nonterminal_first.get(94), - nonterminal_rules.get(94) + nonterminal_first.get(120), + nonterminal_rules.get(120) )); } if (rule == 85) { @@ -4857,7 +4883,7 @@ private static ParseTree parse_if_stmt(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "if_stmt", current, - nonterminal_first.get(94), + nonterminal_first.get(120), rules.get(85) )); } @@ -4869,14 +4895,14 @@ private static ParseTree parse_import(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[15][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(82, "import")); + int rule = (current != null) ? table[14][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(81, "import")); ctx.nonterminal = "import"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "import", - nonterminal_first.get(82), - nonterminal_rules.get(82) + nonterminal_first.get(81), + nonterminal_rules.get(81) )); } if (rule == 21) { @@ -4900,7 +4926,7 @@ private static ParseTree parse_import(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "import", current, - nonterminal_first.get(82), + nonterminal_first.get(81), rules.get(21) )); } @@ -4912,14 +4938,14 @@ private static ParseTree parse_import_alias(ParserContext ctx) throws SyntaxErro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[58][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(125, "import_alias")); + int rule = (current != null) ? table[18][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(85, "import_alias")); ctx.nonterminal = "import_alias"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "import_alias", - nonterminal_first.get(125), - nonterminal_rules.get(125) + nonterminal_first.get(85), + nonterminal_rules.get(85) )); } if (rule == 23) { @@ -4942,7 +4968,7 @@ private static ParseTree parse_import_alias(ParserContext ctx) throws SyntaxErro throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "import_alias", current, - nonterminal_first.get(125), + nonterminal_first.get(85), rules.get(23) )); } @@ -4954,14 +4980,14 @@ private static ParseTree parse_import_namespace(ParserContext ctx) throws Syntax Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[29][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(96, "import_namespace")); + int rule = (current != null) ? table[40][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(107, "import_namespace")); ctx.nonterminal = "import_namespace"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "import_namespace", - nonterminal_first.get(96), - nonterminal_rules.get(96) + nonterminal_first.get(107), + nonterminal_rules.get(107) )); } if (rule == 22) { @@ -4977,7 +5003,7 @@ private static ParseTree parse_import_namespace(ParserContext ctx) throws Syntax throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "import_namespace", current, - nonterminal_first.get(96), + nonterminal_first.get(107), rules.get(22) )); } @@ -4989,14 +5015,14 @@ private static ParseTree parse_input_declaration(ParserContext ctx) throws Synta Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[16][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(83, "input_declaration")); + int rule = (current != null) ? table[0][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(67, "input_declaration")); ctx.nonterminal = "input_declaration"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "input_declaration", - nonterminal_first.get(83), - nonterminal_rules.get(83) + nonterminal_first.get(67), + nonterminal_rules.get(67) )); } if (rule == 53) { @@ -5018,7 +5044,7 @@ private static ParseTree parse_input_declaration(ParserContext ctx) throws Synta throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "input_declaration", current, - nonterminal_first.get(83), + nonterminal_first.get(67), rules.get(53) )); } @@ -5030,14 +5056,14 @@ private static ParseTree parse_input_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[55][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(122, "input_kv")); + int rule = (current != null) ? table[38][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(105, "input_kv")); ctx.nonterminal = "input_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "input_kv", - nonterminal_first.get(122), - nonterminal_rules.get(122) + nonterminal_first.get(105), + nonterminal_rules.get(105) )); } if (rule == 88) { @@ -5058,7 +5084,7 @@ private static ParseTree parse_input_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "input_kv", current, - nonterminal_first.get(122), + nonterminal_first.get(105), rules.get(88) )); } @@ -5070,14 +5096,14 @@ private static ParseTree parse_inputs(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[39][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(106, "inputs")); + int rule = (current != null) ? table[45][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(112, "inputs")); ctx.nonterminal = "inputs"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "inputs", - nonterminal_first.get(106), - nonterminal_rules.get(106) + nonterminal_first.get(112), + nonterminal_rules.get(112) )); } if (rule == 41) { @@ -5099,7 +5125,7 @@ private static ParseTree parse_inputs(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "inputs", current, - nonterminal_first.get(106), + nonterminal_first.get(112), rules.get(41) )); } @@ -5111,14 +5137,14 @@ private static ParseTree parse_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[49][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(116, "kv")); + int rule = (current != null) ? table[47][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(114, "kv")); ctx.nonterminal = "kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "kv", - nonterminal_first.get(116), - nonterminal_rules.get(116) + nonterminal_first.get(114), + nonterminal_rules.get(114) )); } if (rule == 45) { @@ -5139,7 +5165,7 @@ private static ParseTree parse_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "kv", current, - nonterminal_first.get(116), + nonterminal_first.get(114), rules.get(45) )); } @@ -5151,14 +5177,14 @@ private static ParseTree parse_map_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[33][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(100, "map_kv")); + int rule = (current != null) ? table[57][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(124, "map_kv")); ctx.nonterminal = "map_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "map_kv", - nonterminal_first.get(100), - nonterminal_rules.get(100) + nonterminal_first.get(124), + nonterminal_rules.get(124) )); } if (rule == 56) { @@ -5179,7 +5205,7 @@ private static ParseTree parse_map_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "map_kv", current, - nonterminal_first.get(100), + nonterminal_first.get(124), rules.get(56) )); } @@ -5191,14 +5217,14 @@ private static ParseTree parse_meta(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[69][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(136, "meta")); + int rule = (current != null) ? table[39][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(106, "meta")); ctx.nonterminal = "meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "meta", - nonterminal_first.get(136), - nonterminal_rules.get(136) + nonterminal_first.get(106), + nonterminal_rules.get(106) )); } if (rule == 46) { @@ -5216,7 +5242,7 @@ private static ParseTree parse_meta(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "meta", current, - nonterminal_first.get(136), + nonterminal_first.get(106), rules.get(46) )); } @@ -5228,14 +5254,14 @@ private static ParseTree parse_meta_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[45][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(112, "meta_kv")); + int rule = (current != null) ? table[26][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(93, "meta_kv")); ctx.nonterminal = "meta_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "meta_kv", - nonterminal_first.get(112), - nonterminal_rules.get(112) + nonterminal_first.get(93), + nonterminal_rules.get(93) )); } if (rule == 50) { @@ -5256,7 +5282,7 @@ private static ParseTree parse_meta_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "meta_kv", current, - nonterminal_first.get(112), + nonterminal_first.get(93), rules.get(50) )); } @@ -5268,14 +5294,14 @@ private static ParseTree parse_meta_map(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[74][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(141, "meta_map")); + int rule = (current != null) ? table[10][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(77, "meta_map")); ctx.nonterminal = "meta_map"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "meta_map", - nonterminal_first.get(141), - nonterminal_rules.get(141) + nonterminal_first.get(77), + nonterminal_rules.get(77) )); } if (rule == 49) { @@ -5293,7 +5319,7 @@ private static ParseTree parse_meta_map(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "meta_map", current, - nonterminal_first.get(141), + nonterminal_first.get(77), rules.get(49) )); } @@ -5305,14 +5331,14 @@ private static ParseTree parse_object_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[23][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(90, "object_kv")); + int rule = (current != null) ? table[7][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(74, "object_kv")); ctx.nonterminal = "object_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "object_kv", - nonterminal_first.get(90), - nonterminal_rules.get(90) + nonterminal_first.get(74), + nonterminal_rules.get(74) )); } if (rule == 87) { @@ -5333,7 +5359,7 @@ private static ParseTree parse_object_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "object_kv", current, - nonterminal_first.get(90), + nonterminal_first.get(74), rules.get(87) )); } @@ -5345,14 +5371,14 @@ private static ParseTree parse_output_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[10][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(77, "output_kv")); + int rule = (current != null) ? table[20][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(87, "output_kv")); ctx.nonterminal = "output_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "output_kv", - nonterminal_first.get(77), - nonterminal_rules.get(77) + nonterminal_first.get(87), + nonterminal_rules.get(87) )); } if (rule == 59) { @@ -5376,7 +5402,7 @@ private static ParseTree parse_output_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "output_kv", current, - nonterminal_first.get(77), + nonterminal_first.get(87), rules.get(59) )); } @@ -5388,14 +5414,14 @@ private static ParseTree parse_outputs(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[17][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(84, "outputs")); + int rule = (current != null) ? table[55][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(122, "outputs")); ctx.nonterminal = "outputs"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "outputs", - nonterminal_first.get(84), - nonterminal_rules.get(84) + nonterminal_first.get(122), + nonterminal_rules.get(122) )); } if (rule == 58) { @@ -5417,7 +5443,7 @@ private static ParseTree parse_outputs(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "outputs", current, - nonterminal_first.get(84), + nonterminal_first.get(122), rules.get(58) )); } @@ -5429,14 +5455,14 @@ private static ParseTree parse_parameter_meta(ParserContext ctx) throws SyntaxEr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[38][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(105, "parameter_meta")); + int rule = (current != null) ? table[5][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(72, "parameter_meta")); ctx.nonterminal = "parameter_meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "parameter_meta", - nonterminal_first.get(105), - nonterminal_rules.get(105) + nonterminal_first.get(72), + nonterminal_rules.get(72) )); } if (rule == 47) { @@ -5454,7 +5480,7 @@ private static ParseTree parse_parameter_meta(ParserContext ctx) throws SyntaxEr throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "parameter_meta", current, - nonterminal_first.get(105), + nonterminal_first.get(72), rules.get(47) )); } @@ -5466,14 +5492,14 @@ private static ParseTree parse_rt_map(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[18][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(85, "rt_map")); + int rule = (current != null) ? table[61][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(128, "rt_map")); ctx.nonterminal = "rt_map"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "rt_map", - nonterminal_first.get(85), - nonterminal_rules.get(85) + nonterminal_first.get(128), + nonterminal_rules.get(128) )); } if (rule == 44) { @@ -5491,7 +5517,7 @@ private static ParseTree parse_rt_map(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "rt_map", current, - nonterminal_first.get(85), + nonterminal_first.get(128), rules.get(44) )); } @@ -5503,14 +5529,14 @@ private static ParseTree parse_runtime(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[13][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(80, "runtime")); + int rule = (current != null) ? table[17][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(84, "runtime")); ctx.nonterminal = "runtime"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "runtime", - nonterminal_first.get(80), - nonterminal_rules.get(80) + nonterminal_first.get(84), + nonterminal_rules.get(84) )); } if (rule == 42) { @@ -5528,7 +5554,7 @@ private static ParseTree parse_runtime(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "runtime", current, - nonterminal_first.get(80), + nonterminal_first.get(84), rules.get(42) )); } @@ -5540,14 +5566,14 @@ private static ParseTree parse_scatter(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[54][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(121, "scatter")); + int rule = (current != null) ? table[49][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(116, "scatter")); ctx.nonterminal = "scatter"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "scatter", - nonterminal_first.get(121), - nonterminal_rules.get(121) + nonterminal_first.get(116), + nonterminal_rules.get(116) )); } if (rule == 86) { @@ -5581,7 +5607,7 @@ private static ParseTree parse_scatter(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "scatter", current, - nonterminal_first.get(121), + nonterminal_first.get(116), rules.get(86) )); } @@ -5593,14 +5619,14 @@ private static ParseTree parse_setter(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[34][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(101, "setter")); + int rule = (current != null) ? table[46][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(113, "setter")); ctx.nonterminal = "setter"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "setter", - nonterminal_first.get(101), - nonterminal_rules.get(101) + nonterminal_first.get(113), + nonterminal_rules.get(113) )); } if (rule == 55) { @@ -5616,7 +5642,7 @@ private static ParseTree parse_setter(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "setter", current, - nonterminal_first.get(101), + nonterminal_first.get(113), rules.get(55) )); } @@ -5628,14 +5654,14 @@ private static ParseTree parse_static_string(ParserContext ctx) throws SyntaxErr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[31][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(98, "static_string")); + int rule = (current != null) ? table[32][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(99, "static_string")); ctx.nonterminal = "static_string"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "static_string", - nonterminal_first.get(98), - nonterminal_rules.get(98) + nonterminal_first.get(99), + nonterminal_rules.get(99) )); } if (rule == 11) { @@ -5655,7 +5681,7 @@ private static ParseTree parse_static_string(ParserContext ctx) throws SyntaxErr throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "static_string", current, - nonterminal_first.get(98), + nonterminal_first.get(99), rules.get(11) )); } @@ -5667,14 +5693,14 @@ private static ParseTree parse_static_string_piece(ParserContext ctx) throws Syn Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[2][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(69, "static_string_piece")); + int rule = (current != null) ? table[51][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(118, "static_string_piece")); ctx.nonterminal = "static_string_piece"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "static_string_piece", - nonterminal_first.get(69), - nonterminal_rules.get(69) + nonterminal_first.get(118), + nonterminal_rules.get(118) )); } if (rule == 14) { @@ -5696,7 +5722,7 @@ else if (rule == 15) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "static_string_piece", current, - nonterminal_first.get(69), + nonterminal_first.get(118), rules.get(15) )); } @@ -5708,14 +5734,14 @@ private static ParseTree parse_string_literal(ParserContext ctx) throws SyntaxEr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[72][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(139, "string_literal")); + int rule = (current != null) ? table[44][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(111, "string_literal")); ctx.nonterminal = "string_literal"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "string_literal", - nonterminal_first.get(139), - nonterminal_rules.get(139) + nonterminal_first.get(111), + nonterminal_rules.get(111) )); } if (rule == 13) { @@ -5735,7 +5761,7 @@ private static ParseTree parse_string_literal(ParserContext ctx) throws SyntaxEr throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "string_literal", current, - nonterminal_first.get(139), + nonterminal_first.get(111), rules.get(13) )); } @@ -5747,14 +5773,14 @@ private static ParseTree parse_string_piece(ParserContext ctx) throws SyntaxErro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[63][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(130, "string_piece")); + int rule = (current != null) ? table[25][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(92, "string_piece")); ctx.nonterminal = "string_piece"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "string_piece", - nonterminal_first.get(130), - nonterminal_rules.get(130) + nonterminal_first.get(92), + nonterminal_rules.get(92) )); } if (rule == 16) { @@ -5776,7 +5802,7 @@ else if (rule == 17) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "string_piece", current, - nonterminal_first.get(130), + nonterminal_first.get(92), rules.get(17) )); } @@ -5788,14 +5814,14 @@ private static ParseTree parse_struct(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[7][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(74, "struct")); + int rule = (current != null) ? table[27][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(94, "struct")); ctx.nonterminal = "struct"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "struct", - nonterminal_first.get(74), - nonterminal_rules.get(74) + nonterminal_first.get(94), + nonterminal_rules.get(94) )); } if (rule == 8) { @@ -5820,7 +5846,7 @@ private static ParseTree parse_struct(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "struct", current, - nonterminal_first.get(74), + nonterminal_first.get(94), rules.get(8) )); } @@ -5832,14 +5858,14 @@ private static ParseTree parse_struct_declaration(ParserContext ctx) throws Synt Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[6][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(73, "struct_declaration")); + int rule = (current != null) ? table[43][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(110, "struct_declaration")); ctx.nonterminal = "struct_declaration"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "struct_declaration", - nonterminal_first.get(73), - nonterminal_rules.get(73) + nonterminal_first.get(110), + nonterminal_rules.get(110) )); } if (rule == 9) { @@ -5858,7 +5884,7 @@ private static ParseTree parse_struct_declaration(ParserContext ctx) throws Synt throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "struct_declaration", current, - nonterminal_first.get(73), + nonterminal_first.get(110), rules.get(9) )); } @@ -5870,14 +5896,14 @@ private static ParseTree parse_task(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[46][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(113, "task")); + int rule = (current != null) ? table[71][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(138, "task")); ctx.nonterminal = "task"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "task", - nonterminal_first.get(113), - nonterminal_rules.get(113) + nonterminal_first.get(138), + nonterminal_rules.get(138) )); } if (rule == 25) { @@ -5902,7 +5928,7 @@ private static ParseTree parse_task(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "task", current, - nonterminal_first.get(113), + nonterminal_first.get(138), rules.get(25) )); } @@ -5914,14 +5940,14 @@ private static ParseTree parse_task_sections(ParserContext ctx) throws SyntaxErr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[56][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(123, "task_sections")); + int rule = (current != null) ? table[31][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(98, "task_sections")); ctx.nonterminal = "task_sections"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "task_sections", - nonterminal_first.get(123), - nonterminal_rules.get(123) + nonterminal_first.get(98), + nonterminal_rules.get(98) )); } if (rule == 26) { @@ -5983,7 +6009,7 @@ else if (rule == 32) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "task_sections", current, - nonterminal_first.get(123), + nonterminal_first.get(98), rules.get(32) )); } @@ -5995,14 +6021,14 @@ private static ParseTree parse_version(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[4][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(71, "version")); + int rule = (current != null) ? table[54][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(121, "version")); ctx.nonterminal = "version"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "version", - nonterminal_first.get(71), - nonterminal_rules.get(71) + nonterminal_first.get(121), + nonterminal_rules.get(121) )); } if (rule == 6) { @@ -6020,7 +6046,7 @@ private static ParseTree parse_version(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "version", current, - nonterminal_first.get(71), + nonterminal_first.get(121), rules.get(6) )); } @@ -6032,14 +6058,14 @@ private static ParseTree parse_wf_body_element(ParserContext ctx) throws SyntaxE Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[70][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(137, "wf_body_element")); + int rule = (current != null) ? table[2][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(69, "wf_body_element")); ctx.nonterminal = "wf_body_element"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "wf_body_element", - nonterminal_first.get(137), - nonterminal_rules.get(137) + nonterminal_first.get(69), + nonterminal_rules.get(69) )); } if (rule == 62) { @@ -6109,7 +6135,7 @@ else if (rule == 69) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "wf_body_element", current, - nonterminal_first.get(137), + nonterminal_first.get(69), rules.get(69) )); } @@ -6121,14 +6147,14 @@ private static ParseTree parse_wf_meta(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[36][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(103, "wf_meta")); + int rule = (current != null) ? table[4][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(71, "wf_meta")); ctx.nonterminal = "wf_meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "wf_meta", - nonterminal_first.get(103), - nonterminal_rules.get(103) + nonterminal_first.get(71), + nonterminal_rules.get(71) )); } if (rule == 84) { @@ -6146,7 +6172,7 @@ private static ParseTree parse_wf_meta(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "wf_meta", current, - nonterminal_first.get(103), + nonterminal_first.get(71), rules.get(84) )); } @@ -6158,14 +6184,14 @@ private static ParseTree parse_wf_parameter_meta(ParserContext ctx) throws Synta Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[44][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(111, "wf_parameter_meta")); + int rule = (current != null) ? table[52][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(119, "wf_parameter_meta")); ctx.nonterminal = "wf_parameter_meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "wf_parameter_meta", - nonterminal_first.get(111), - nonterminal_rules.get(111) + nonterminal_first.get(119), + nonterminal_rules.get(119) )); } if (rule == 83) { @@ -6183,7 +6209,7 @@ private static ParseTree parse_wf_parameter_meta(ParserContext ctx) throws Synta throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "wf_parameter_meta", current, - nonterminal_first.get(111), + nonterminal_first.get(119), rules.get(83) )); } @@ -6195,14 +6221,14 @@ private static ParseTree parse_workflow(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[67][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(134, "workflow")); + int rule = (current != null) ? table[74][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(141, "workflow")); ctx.nonterminal = "workflow"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "workflow", - nonterminal_first.get(134), - nonterminal_rules.get(134) + nonterminal_first.get(141), + nonterminal_rules.get(141) )); } if (rule == 61) { @@ -6227,7 +6253,7 @@ private static ParseTree parse_workflow(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "workflow", current, - nonterminal_first.get(134), + nonterminal_first.get(141), rules.get(61) )); } @@ -6357,9 +6383,6 @@ public void output(LexerContext ctx, TerminalIdentifier terminal, String source_ default_action(ctx, terminal, source_string, line, col); } /* END USER CODE */ - public List post_filter(List terminals) { - return terminals; - } public void destroy(Object context) { return; } @@ -7867,8 +7890,7 @@ public List lex(String string, String resource) throws SyntaxError { } } this.destroy(context); - List filtered = post_filter(lctx.terminals); - return filtered; + return lctx.terminals; } /* Section: Main */ } diff --git a/wdl/transforms/biscayne/src/main/resources/CHANGELOG.txt b/wdl/transforms/biscayne/src/main/resources/CHANGELOG.txt index af2ba7d94e7..d6897aa1358 100644 --- a/wdl/transforms/biscayne/src/main/resources/CHANGELOG.txt +++ b/wdl/transforms/biscayne/src/main/resources/CHANGELOG.txt @@ -1,4 +1,15 @@ 2023-03-16 Synced grammar from OpenWDL `development` version, which is actually development of 2.0. There is no 1.1 Hermes grammar, develop it here. Changed version declaration to `development1_1`. -This disallows `version 1.1` workflows to run with incomplete support. Once development is finished, change to `1.1`. \ No newline at end of file +This disallows `version 1.1` workflows to run with incomplete support. Once development is finished, change to `1.1`. + +2024-02-28 +When changing the grammar file, generate a new parser by: +- changing current working directory to cromwell/wdl/transforms/biscayne +- running: hermes generate src/main/resources/grammar.hgr \ + --language=java \ + --directory=src/main/java \ + --name=wdl \ + --java-package=wdl.biscayne.parser \ + --java-use-apache-commons --java-imports=org.apache.commons.lang3.StringEscapeUtils \ + --header \ No newline at end of file diff --git a/wdl/transforms/biscayne/src/main/resources/grammar.hgr b/wdl/transforms/biscayne/src/main/resources/grammar.hgr index e12ad170e60..451d7e61631 100644 --- a/wdl/transforms/biscayne/src/main/resources/grammar.hgr +++ b/wdl/transforms/biscayne/src/main/resources/grammar.hgr @@ -401,6 +401,7 @@ grammar { (*:unary) $e = :not $e -> LogicalNot(expression=$1) (-:unary) $e = :plus $e -> UnaryPlus(expression=$1) (-:unary) $e = :dash $e -> UnaryNegation(expression=$1) + (*:left) $e = :identifier <=> :lbrace list($object_kv, :comma) :rbrace -> StructLiteral(name=$0, map=$2) (*:left) $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall(name=$0, params=$2) (*:left) $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup(lhs=$0, rhs=$2) (*:left) $e = $e <=> :dot :identifier -> MemberAccess(value=$0, member=$2) diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumers.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumers.scala index dd909356ff8..58ab50ede6e 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumers.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumers.scala @@ -105,4 +105,14 @@ object BiscayneExpressionValueConsumers { // None literals consume no values: Set.empty[UnlinkedConsumedValueHook] } + + implicit val structLiteralExpressionValueConsumer: ExpressionValueConsumer[StructLiteral] = + new ExpressionValueConsumer[StructLiteral] { + override def expressionConsumedValueHooks(a: StructLiteral)(implicit + expressionValueConsumer: ExpressionValueConsumer[ExpressionElement] + ): Set[UnlinkedConsumedValueHook] = + a.elements.values + .flatMap(element => expressionValueConsumer.expressionConsumedValueHooks(element)(expressionValueConsumer)) + .toSet + } } diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/consumed.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/consumed.scala index 93df393d4fa..743f444f998 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/consumed.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/consumed/consumed.scala @@ -24,6 +24,7 @@ package object consumed { case a: StringExpression => a.expressionConsumedValueHooks(expressionValueConsumer) case a: ObjectLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) + case a: StructLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) case a: PairLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) case a: ArrayLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) case a: MapLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluators.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluators.scala index 77de240732e..420c0b5aa21 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluators.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluators.scala @@ -1,5 +1,8 @@ package wdl.transforms.biscayne.linking.expression.files +import cats.implicits.{catsSyntaxValidatedId, toTraverseOps} +import common.validation.ErrorOr.ErrorOr +import wdl.model.draft3.elements.ExpressionElement import wdl.model.draft3.elements.ExpressionElement.{ AsMap, AsPairs, @@ -10,16 +13,20 @@ import wdl.model.draft3.elements.ExpressionElement.{ Quote, Sep, SQuote, + StructLiteral, SubPosix, Suffix, Unzip } -import wdl.model.draft3.graph.expression.FileEvaluator +import wdl.model.draft3.graph.expression.{FileEvaluator, ValueEvaluator} import wdl.transforms.base.linking.expression.files.EngineFunctionEvaluators.{ threeParameterFunctionPassthroughFileEvaluator, twoParameterFunctionPassthroughFileEvaluator } import wdl.transforms.base.linking.expression.files.EngineFunctionEvaluators.singleParameterPassthroughFileEvaluator +import wom.expression.IoFunctionSet +import wom.types.{WomCompositeType, WomType} +import wom.values.{WomFile, WomValue} object BiscayneFileEvaluators { @@ -39,4 +46,38 @@ object BiscayneFileEvaluators { implicit val maxFunctionEvaluator: FileEvaluator[Max] = twoParameterFunctionPassthroughFileEvaluator[Max] implicit val unzipFunctionEvaluator: FileEvaluator[Unzip] = singleParameterPassthroughFileEvaluator + + implicit val structLiteralEvaluator: FileEvaluator[StructLiteral] = new FileEvaluator[StructLiteral] { + override def predictFilesNeededToEvaluate(a: StructLiteral, + inputs: Map[String, WomValue], + ioFunctionSet: IoFunctionSet, + coerceTo: WomType + )(implicit + fileEvaluator: FileEvaluator[ExpressionElement], + valueEvaluator: ValueEvaluator[ExpressionElement] + ): ErrorOr[Set[WomFile]] = { + def filesInObjectField(fieldAndWomTypeTuple: (String, WomType)): ErrorOr[Set[WomFile]] = { + val (field, womType) = fieldAndWomTypeTuple + a.elements.get(field) match { + case Some(fieldElement) => + fileEvaluator.predictFilesNeededToEvaluate(fieldElement, inputs, ioFunctionSet, womType)(fileEvaluator, + valueEvaluator + ) + case None => s"Invalid assignment to struct. Required field $field was not specified.".invalidNel + } + } + + coerceTo match { + case WomCompositeType(mapping, _) => mapping.toList.traverse(filesInObjectField).map(_.flatten.toSet) + case _ => + a.elements.values.toList + .traverse( + fileEvaluator.evaluateFilesNeededToEvaluate(_, inputs, ioFunctionSet, coerceTo)(fileEvaluator, + valueEvaluator + ) + ) + .map(_.toSet.flatten) + } + } + } } diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/files.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/files.scala index 40807bf3e58..4c224c8c024 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/files.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/files/files.scala @@ -16,7 +16,6 @@ import wom.expression.IoFunctionSet import wom.types.WomType import wom.values.{WomFile, WomValue} import wdl.transforms.biscayne.linking.expression.files.BiscayneFileEvaluators._ - package object files { implicit val expressionFileEvaluator: FileEvaluator[ExpressionElement] = new FileEvaluator[ExpressionElement] { @@ -37,6 +36,8 @@ package object files { a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) case a: ObjectLiteral => a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) + case a: StructLiteral => + a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) case a: MapLiteral => a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) case a: ArrayLiteral => diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluators.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluators.scala index 21f2e9bcc8c..75c6cc297ae 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluators.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluators.scala @@ -159,4 +159,16 @@ object BiscayneTypeEvaluators { case other => s"Cannot invoke 'unzip' on type '${other.stableName}'. Expected an array of pairs".invalidNel } } + + implicit val structLiteralTypeEvaluator: TypeEvaluator[StructLiteral] = new TypeEvaluator[StructLiteral] { + override def evaluateType(a: StructLiteral, linkedValues: Map[UnlinkedConsumedValueHook, GeneratedValueHandle])( + implicit expressionTypeEvaluator: TypeEvaluator[ExpressionElement] + ): ErrorOr[WomType] = + // This works fine, but is not yet a strong enough type check for the WDL 1.1 spec + // (i.e. users are able to instantiate struct literals with k/v pairs that aren't actually in the struct definition, without an error being thrown.) + // We want to add extra validation here, and return a WomCompositeType that matches the struct definition of everything is OK. + // Note that users are allowed to omit optional k/v pairs in their literal. + // This requires some extra work to be done in a subsequent PR. + WomObjectType.validNel + } } diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/types.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/types.scala index 9775cb38970..7352c9a1376 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/types.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/types/types.scala @@ -29,6 +29,7 @@ package object types { case a: StringLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: StringExpression => a.evaluateType(linkedValues)(typeEvaluator) case a: ObjectLiteral => a.evaluateType(linkedValues)(typeEvaluator) + case a: StructLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: MapLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: ArrayLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: PairLiteral => a.evaluateType(linkedValues)(typeEvaluator) diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluators.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluators.scala index 9903313bf00..a95a4b2f43c 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluators.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluators.scala @@ -18,7 +18,7 @@ import wdl.transforms.base.linking.expression.values.EngineFunctionEvaluators.{ } import wom.expression.IoFunctionSet import wom.types._ -import wom.values.{WomArray, WomFloat, WomInteger, WomMap, WomOptionalValue, WomPair, WomString, WomValue} +import wom.values.{WomArray, WomFloat, WomInteger, WomMap, WomObject, WomOptionalValue, WomPair, WomString, WomValue} import wom.types.coercion.defaults._ object BiscayneValueEvaluators { @@ -351,4 +351,29 @@ object BiscayneValueEvaluators { s"Invalid call of 'unzip' on parameter of type '${other.womType.stableName}' (expected Array[Pair[X, Y]])".invalidNel } } + + implicit val structLiteralValueEvaluator: ValueEvaluator[StructLiteral] = new ValueEvaluator[StructLiteral] { + // This works fine, but is missing a feature from the WDL 1.1 spec: users are allowed to omit optional values from their struct literal. + // This requires some extra work to be done in a subsequent PR. + // Specifically, make the known struct definitions available to this function so we can populate k/v pairs with None appropriately. + override def evaluateValue(a: StructLiteral, + inputs: Map[String, WomValue], + ioFunctionSet: IoFunctionSet, + forCommandInstantiationOptions: Option[ForCommandInstantiationOptions] + )(implicit expressionValueEvaluator: ValueEvaluator[ExpressionElement]): ErrorOr[EvaluatedValue[_ <: WomValue]] = { + + val evaluated: ErrorOr[List[(String, EvaluatedValue[_])]] = a.elements.toList traverse { + case (key: String, value: ExpressionElement) => + expressionValueEvaluator + .evaluateValue(value, inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) + .map(key -> _) + } + + evaluated map { mapping => + val value = mapping.map(entry => entry._1 -> entry._2.value).toMap + val sideEffectFiles = mapping.flatMap(entry => entry._2.sideEffectFiles) + EvaluatedValue(WomObject(value), sideEffectFiles) + } + } + } } diff --git a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/values.scala b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/values.scala index eeb5bd1712f..3a1db596732 100644 --- a/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/values.scala +++ b/wdl/transforms/biscayne/src/main/scala/wdl/transforms/biscayne/linking/expression/values/values.scala @@ -32,13 +32,14 @@ package object values { a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: NoneLiteralElement.type => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) - case a: StringLiteral => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: StringExpression => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: ObjectLiteral => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) + case a: StructLiteral => + a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: MapLiteral => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: ArrayLiteral => diff --git a/wdl/transforms/biscayne/src/test/cases/struct_literal.wdl b/wdl/transforms/biscayne/src/test/cases/struct_literal.wdl new file mode 100644 index 00000000000..6251ebf4a58 --- /dev/null +++ b/wdl/transforms/biscayne/src/test/cases/struct_literal.wdl @@ -0,0 +1,39 @@ +version development-1.1 + +struct Plant { + String color + Boolean tasty +} + +struct Animal { + String name + Boolean? isGood +} + +task test_struct_parsing { + input { + Plant standard_plant_input + Animal standard_animal_input + } + + runtime { + docker: "ubuntu:latest" + } + + command { + echo "all dogs are good" + } + + output { + Plant standard_plant_forwarded = standard_plant_input + Animal standard_animal_forwarded = standard_animal_input + Plant plant_output_literal = Plant{color: "red", tasty: true} + } +} + +workflow struct_literal { + call test_struct_parsing { + input: standard_plant_input = Plant{color: "green", tasty: true}, + standard_animal_input = Animal{name: "mittens", isGood: false} + } +} diff --git a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/Ast2WdlomSpec.scala b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/Ast2WdlomSpec.scala index dae69cfdcf8..baa70691580 100644 --- a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/Ast2WdlomSpec.scala +++ b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/Ast2WdlomSpec.scala @@ -18,7 +18,7 @@ import wdl.transforms.biscayne.ast2wdlom._ import wdl.transforms.biscayne.parsing.WdlBiscayneSyntaxErrorFormatter import wom.callable.MetaValueElement.MetaValueElementInteger import wom.types.WomIntegerType -import wom.values.WomInteger +import wom.values.{WomBoolean, WomInteger} import scala.jdk.CollectionConverters._ @@ -126,4 +126,13 @@ class Ast2WdlomSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { val expr = fromString[ExpressionElement](str, parser.parse_e) expr shouldBeValid (Unzip(IdentifierLookup("some_array_of_pairs"))) } + + it should "parse a struct literal" in { + val str = """Dog{breed: "fluffy", isGood: true}""" + val expr = fromString[ExpressionElement](str, parser.parse_e) + expr shouldBeValid (StructLiteral( + "Dog", + Map("breed" -> StringLiteral("fluffy"), "isGood" -> PrimitiveLiteralExpressionElement(WomBoolean(true))) + )) + } } diff --git a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/ast2wdlom/WdlFileToWdlomSpec.scala b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/ast2wdlom/WdlFileToWdlomSpec.scala index 20e940dab39..0725442f5a5 100644 --- a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/ast2wdlom/WdlFileToWdlomSpec.scala +++ b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/ast2wdlom/WdlFileToWdlomSpec.scala @@ -6,11 +6,11 @@ import org.scalatest.flatspec.AnyFlatSpec import org.scalatest.matchers.should.Matchers import wdl.model.draft3.elements.CommandPartElement.{PlaceholderCommandPartElement, StringCommandPartElement} import wdl.model.draft3.elements.ExpressionElement._ -import wdl.model.draft3.elements._ +import wdl.model.draft3.elements.{CallElement, FileElement, _} import wdl.transforms.biscayne.ast2wdlom.WdlFileToWdlomSpec._ import wom.SourceFileLocation import wom.types._ -import wom.values.WomInteger +import wom.values.{WomBoolean, WomInteger} class WdlFileToWdlomSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { @@ -36,7 +36,9 @@ class WdlFileToWdlomSpec extends AnyFlatSpec with CromwellTimeoutSpec with Match testOrIgnore { - val expected = expectations.getOrElse(testName, fail(s"No Element expectation defined for $testName")) + val expected: FileElement = + expectations.getOrElse(testName, fail(s"No Element expectation defined for $testName")) + fileToFileElement.run(testCase) match { case Right(actual) => actual shouldBe expected case Left(errors) => @@ -367,6 +369,104 @@ object WdlFileToWdlomSpec { ) ), tasks = Vector.empty + ), + "struct_literal" -> FileElement( + imports = Vector(), + structs = Vector( + StructElement("Plant", + Vector(StructEntryElement("color", PrimitiveTypeElement(WomStringType)), + StructEntryElement("tasty", PrimitiveTypeElement(WomBooleanType)) + ) + ), + StructElement( + "Animal", + Vector(StructEntryElement("name", PrimitiveTypeElement(WomStringType)), + StructEntryElement("isGood", OptionalTypeElement(PrimitiveTypeElement(WomBooleanType))) + ) + ) + ), + workflows = Vector( + WorkflowDefinitionElement( + "struct_literal", + None, + Set( + CallElement( + "test_struct_parsing", + None, + Vector(), + Some( + CallBodyElement( + Vector( + KvPair("standard_plant_input", + StructLiteral("Plant", + Map("color" -> StringLiteral("green"), + "tasty" -> PrimitiveLiteralExpressionElement(WomBoolean(true)) + ) + ) + ), + KvPair("standard_animal_input", + StructLiteral("Animal", + Map("name" -> StringLiteral("mittens"), + "isGood" -> PrimitiveLiteralExpressionElement(WomBoolean(false)) + ) + ) + ) + ) + ) + ), + Some(SourceFileLocation(35)) + ) + ), + None, + None, + None, + Some(SourceFileLocation(34)) + ) + ), + tasks = Vector( + TaskDefinitionElement( + "test_struct_parsing", + Some( + InputsSectionElement( + Vector( + InputDeclarationElement(TypeAliasElement("Plant"), "standard_plant_input", None), + InputDeclarationElement(TypeAliasElement("Animal"), "standard_animal_input", None) + ) + ) + ), + Vector(), + Some( + OutputsSectionElement( + Vector( + OutputDeclarationElement(TypeAliasElement("Plant"), + "standard_plant_forwarded", + IdentifierLookup("standard_plant_input") + ), + OutputDeclarationElement(TypeAliasElement("Animal"), + "standard_animal_forwarded", + IdentifierLookup("standard_animal_input") + ), + OutputDeclarationElement( + TypeAliasElement("Plant"), + "plant_output_literal", + StructLiteral("Plant", + Map("color" -> StringLiteral("red"), + "tasty" -> PrimitiveLiteralExpressionElement(WomBoolean(true)) + ) + ) + ) + ) + ) + ), + CommandSectionElement( + List(CommandSectionLine(Vector(StringCommandPartElement("""echo "all dogs are good"""")))) + ), + Some(RuntimeAttributesSectionElement(Vector(KvPair("docker", StringLiteral("ubuntu:latest"))))), + None, + None, + Some(SourceFileLocation(13)) + ) ) + ) ) } diff --git a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumersSpec.scala b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumersSpec.scala index b20b844b02e..cfa2a609ed4 100644 --- a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumersSpec.scala +++ b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/consumed/BiscayneExpressionValueConsumersSpec.scala @@ -111,4 +111,13 @@ class BiscayneExpressionValueConsumersSpec extends AnyFlatSpec with CromwellTime e.expressionConsumedValueHooks should be(Set(UnlinkedIdentifierHook("my_array_of_pairs"))) } } + + it should "discover an array variable lookup within a struct literal member access" in { + val str = """ (StructWithAnArray{myArrayMember: arrayToLookup}).myArray """ + val expr = fromString[ExpressionElement](str, parser.parse_e) + + expr.shouldBeValidPF { case e => + e.expressionConsumedValueHooks should be(Set(UnlinkedIdentifierHook("arrayToLookup"))) + } + } } diff --git a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluatorSpec.scala b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluatorSpec.scala index 69ac8a9cfca..31225bb0263 100644 --- a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluatorSpec.scala +++ b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/files/BiscayneFileEvaluatorSpec.scala @@ -100,4 +100,15 @@ class BiscayneFileEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec wit ) } } + + it should "discover the file which would be required to evaluate a struct literal" in { + val str = """ StructWithStringVec{myVec: read_lines("foo.txt")}""" + val expr = fromString[ExpressionElement](str, parser.parse_e) + + expr.shouldBeValidPF { case e => + e.predictFilesNeededToEvaluate(Map.empty, NoIoFunctionSet, WomStringType) shouldBeValid Set( + WomSingleFile("foo.txt") + ) + } + } } diff --git a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluatorSpec.scala b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluatorSpec.scala index a38a80079e5..0c5c158b542 100644 --- a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluatorSpec.scala +++ b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/types/BiscayneTypeEvaluatorSpec.scala @@ -131,4 +131,14 @@ class BiscayneTypeEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec wit e.evaluateType(Map.empty) shouldBeValid WomPairType(WomArrayType(WomAnyType), WomArrayType(WomAnyType)) } } + + it should "evaluate the type of a struct literal" in { + // NB: This is not yet strict enough type checking for the WDL 1.1 spec. + // In a subsequent branch, we will make this be a WomCompositeType that matches the struct definition. + val structLiteral = """ Animal{fur: "fuzzy", isGood: true} """ + val structExpr = fromString[ExpressionElement](structLiteral, parser.parse_e) + structExpr.shouldBeValidPF { case e => + e.evaluateType(Map.empty) shouldBeValid WomObjectType + } + } } diff --git a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluatorSpec.scala b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluatorSpec.scala index a6d3066b5e9..66045fef5ae 100644 --- a/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluatorSpec.scala +++ b/wdl/transforms/biscayne/src/test/scala/wdl/transforms/biscayne/linking/expression/values/BiscayneValueEvaluatorSpec.scala @@ -12,7 +12,7 @@ import wdl.transforms.biscayne.Ast2WdlomSpec.{fromString, parser} import wdl.transforms.biscayne.ast2wdlom._ import wom.expression.NoIoFunctionSet import wom.types.{WomAnyType, WomArrayType, WomIntegerType, WomMapType, WomOptionalType, WomStringType} -import wom.values.{WomArray, WomInteger, WomMap, WomOptionalValue, WomPair, WomString} +import wom.values.{WomArray, WomBoolean, WomInteger, WomMap, WomObject, WomOptionalValue, WomPair, WomString} class BiscayneValueEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { @@ -510,4 +510,14 @@ class BiscayneValueEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec wi ) ) } + + it should "evaluate a struct literal" in { + val literal = """ Animal{type: "dog", barks: false}""" + val expectedValue = WomObject(Map("type" -> WomString("dog"), "barks" -> WomBoolean(false))) + val expr = fromString[ExpressionElement](literal, parser.parse_e) + + expr.shouldBeValidPF { case e => + e.evaluateValue(Map.empty, NoIoFunctionSet, None) shouldBeValid EvaluatedValue(expectedValue, Seq.empty) + } + } } diff --git a/wdl/transforms/cascades/src/main/java/wdl/cascades/parser/WdlParser.java b/wdl/transforms/cascades/src/main/java/wdl/cascades/parser/WdlParser.java index 678bef21092..fce14da1e72 100644 --- a/wdl/transforms/cascades/src/main/java/wdl/cascades/parser/WdlParser.java +++ b/wdl/transforms/cascades/src/main/java/wdl/cascades/parser/WdlParser.java @@ -1,9 +1,9 @@ /* - * This file was generated by Hermes Parser Generator on Mon Mar 27 20:16:01 2023 + * This file was generated by Hermes Parser Generator on Tue Mar 26 15:18:16 2024 * - * Hermes command: hermes generate resources/grammar.hgr --language=java --directory=java --name=wdl --java-package=wdl.cascades.parser --java-use-apache-commons --java-imports=org.apache.commons.lang3.StringEscapeUtils --header - * Run from: .. (relative to this file) + * Hermes command: hermes generate src/main/resources/grammar.hgr --language=java --directory=src/main/java --name=wdl --java-package=wdl.cascades.parser --java-use-apache-commons --java-imports=org.apache.commons.lang3.StringEscapeUtils --header + * Run from: ../../.. (relative to this file) * Hermes version: hermes-parser 2.0rc6 * * !!! DO NOT CHANGE THIS FILE DIRECTLY !!! @@ -252,12 +252,12 @@ public interface ParseTreeNode { } public static class Terminal implements AstNode, ParseTreeNode { - public int id; - public String terminal_str; - public String source_string; - public String resource; - public int line; - public int col; + private int id; + private String terminal_str; + private String source_string; + private String resource; + private int line; + private int col; public Terminal(int id, String terminal_str, String source_string, String resource, int line, int col) { this.id = id; this.terminal_str = terminal_str; @@ -516,73 +516,73 @@ public interface TerminalIdentifier { public String string(); } public enum WdlTerminalIdentifier implements TerminalIdentifier { - TERMINAL_AFTER(11, "after"), - TERMINAL_ALIAS(18, "alias"), - TERMINAL_AS(7, "as"), - TERMINAL_ASTERISK(3, "asterisk"), - TERMINAL_BOOLEAN(30, "boolean"), - TERMINAL_CALL(19, "call"), - TERMINAL_CMD_ATTR_HINT(33, "cmd_attr_hint"), - TERMINAL_CMD_PART(46, "cmd_part"), - TERMINAL_COLON(37, "colon"), - TERMINAL_COMMA(38, "comma"), - TERMINAL_DASH(63, "dash"), + TERMINAL_AFTER(47, "after"), + TERMINAL_ALIAS(0, "alias"), + TERMINAL_AS(36, "as"), + TERMINAL_ASTERISK(34, "asterisk"), + TERMINAL_BOOLEAN(41, "boolean"), + TERMINAL_CALL(57, "call"), + TERMINAL_CMD_ATTR_HINT(26, "cmd_attr_hint"), + TERMINAL_CMD_PART(7, "cmd_part"), + TERMINAL_COLON(58, "colon"), + TERMINAL_COMMA(4, "comma"), + TERMINAL_DASH(53, "dash"), TERMINAL_DOT(62, "dot"), - TERMINAL_DOUBLE_AMPERSAND(13, "double_ampersand"), - TERMINAL_DOUBLE_EQUAL(24, "double_equal"), - TERMINAL_DOUBLE_PIPE(25, "double_pipe"), - TERMINAL_E(36, "e"), - TERMINAL_ELSE(41, "else"), - TERMINAL_EQUAL(53, "equal"), - TERMINAL_ESCAPE(31, "escape"), - TERMINAL_EXPRESSION_PLACEHOLDER_END(35, "expression_placeholder_end"), - TERMINAL_EXPRESSION_PLACEHOLDER_START(42, "expression_placeholder_start"), - TERMINAL_FLOAT(56, "float"), - TERMINAL_FQN(22, "fqn"), - TERMINAL_GT(4, "gt"), - TERMINAL_GTEQ(21, "gteq"), - TERMINAL_IDENTIFIER(23, "identifier"), - TERMINAL_IF(61, "if"), - TERMINAL_IMPORT(6, "import"), - TERMINAL_IN(17, "in"), - TERMINAL_INPUT(49, "input"), - TERMINAL_INTEGER(48, "integer"), - TERMINAL_LBRACE(32, "lbrace"), - TERMINAL_LPAREN(12, "lparen"), - TERMINAL_LSQUARE(51, "lsquare"), - TERMINAL_LT(65, "lt"), - TERMINAL_LTEQ(1, "lteq"), - TERMINAL_META(45, "meta"), + TERMINAL_DOUBLE_AMPERSAND(8, "double_ampersand"), + TERMINAL_DOUBLE_EQUAL(56, "double_equal"), + TERMINAL_DOUBLE_PIPE(49, "double_pipe"), + TERMINAL_E(44, "e"), + TERMINAL_ELSE(35, "else"), + TERMINAL_EQUAL(39, "equal"), + TERMINAL_ESCAPE(32, "escape"), + TERMINAL_EXPRESSION_PLACEHOLDER_END(17, "expression_placeholder_end"), + TERMINAL_EXPRESSION_PLACEHOLDER_START(5, "expression_placeholder_start"), + TERMINAL_FLOAT(45, "float"), + TERMINAL_FQN(18, "fqn"), + TERMINAL_GT(2, "gt"), + TERMINAL_GTEQ(3, "gteq"), + TERMINAL_IDENTIFIER(29, "identifier"), + TERMINAL_IF(40, "if"), + TERMINAL_IMPORT(31, "import"), + TERMINAL_IN(43, "in"), + TERMINAL_INPUT(24, "input"), + TERMINAL_INTEGER(19, "integer"), + TERMINAL_LBRACE(50, "lbrace"), + TERMINAL_LPAREN(28, "lparen"), + TERMINAL_LSQUARE(61, "lsquare"), + TERMINAL_LT(37, "lt"), + TERMINAL_LTEQ(11, "lteq"), + TERMINAL_META(33, "meta"), TERMINAL_META_VALUE(16, "meta_value"), - TERMINAL_NONE(44, "none"), - TERMINAL_NOT(60, "not"), - TERMINAL_NOT_EQUAL(14, "not_equal"), - TERMINAL_NULL(40, "null"), - TERMINAL_OBJECT(59, "object"), - TERMINAL_OUTPUT(28, "output"), - TERMINAL_PARAMETER_META(15, "parameter_meta"), - TERMINAL_PERCENT(5, "percent"), - TERMINAL_PLUS(9, "plus"), - TERMINAL_QMARK(57, "qmark"), - TERMINAL_QUOTE(50, "quote"), - TERMINAL_RAW_CMD_END(58, "raw_cmd_end"), - TERMINAL_RAW_CMD_START(27, "raw_cmd_start"), - TERMINAL_RAW_COMMAND(39, "raw_command"), - TERMINAL_RBRACE(0, "rbrace"), - TERMINAL_RPAREN(52, "rparen"), - TERMINAL_RSQUARE(8, "rsquare"), - TERMINAL_RUNTIME(54, "runtime"), - TERMINAL_SCATTER(66, "scatter"), - TERMINAL_SLASH(29, "slash"), - TERMINAL_STRING(26, "string"), - TERMINAL_STRUCT(34, "struct"), - TERMINAL_TASK(10, "task"), - TERMINAL_THEN(2, "then"), - TERMINAL_TYPE(43, "type"), - TERMINAL_TYPE_E(20, "type_e"), - TERMINAL_VERSION(64, "version"), - TERMINAL_VERSION_NAME(55, "version_name"), - TERMINAL_WORKFLOW(47, "workflow"), + TERMINAL_NONE(54, "none"), + TERMINAL_NOT(52, "not"), + TERMINAL_NOT_EQUAL(63, "not_equal"), + TERMINAL_NULL(51, "null"), + TERMINAL_OBJECT(66, "object"), + TERMINAL_OUTPUT(60, "output"), + TERMINAL_PARAMETER_META(30, "parameter_meta"), + TERMINAL_PERCENT(22, "percent"), + TERMINAL_PLUS(12, "plus"), + TERMINAL_QMARK(9, "qmark"), + TERMINAL_QUOTE(14, "quote"), + TERMINAL_RAW_CMD_END(10, "raw_cmd_end"), + TERMINAL_RAW_CMD_START(15, "raw_cmd_start"), + TERMINAL_RAW_COMMAND(27, "raw_command"), + TERMINAL_RBRACE(23, "rbrace"), + TERMINAL_RPAREN(64, "rparen"), + TERMINAL_RSQUARE(42, "rsquare"), + TERMINAL_RUNTIME(13, "runtime"), + TERMINAL_SCATTER(55, "scatter"), + TERMINAL_SLASH(20, "slash"), + TERMINAL_STRING(1, "string"), + TERMINAL_STRUCT(6, "struct"), + TERMINAL_TASK(38, "task"), + TERMINAL_THEN(46, "then"), + TERMINAL_TYPE(21, "type"), + TERMINAL_TYPE_E(48, "type_e"), + TERMINAL_VERSION(25, "version"), + TERMINAL_VERSION_NAME(59, "version_name"), + TERMINAL_WORKFLOW(65, "workflow"), END_SENTINAL(-3, "END_SENTINAL"); private final int id; private final String string; @@ -595,112 +595,112 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { } /* table[nonterminal][terminal] = rule */ private static final int[][] table = { + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1 }, - { 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, 62, 63, -1, -1, 63, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, 69, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, 65 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, 74, 74, -1, -1, 74, -1, -1, -1, -1, 74, -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, 74, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, 74 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { 71, -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, 71, -1, -1, -1, 71, -1, -1, -1, 71, 71, -1, -1, 71, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, 71, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 71 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, 56, -1, 56, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, 56, -1, -1, -1, 56, -1, 56, 56, -1, -1, -1, -1, 56, -1, -1, 56, 56, 56, -1, 56, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, 16, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86 }, + { -1, -1, -1, -1, -1, 36, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, 71, 71, -1, -1, -1, -1, 71, 71, -1, -1, 71, -1, -1, 70, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, 71, 71, -1, -1, -1, -1, -1, -1, 71, -1, 71, -1, -1, 71, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, -1, 74, 74, -1, -1, -1, -1, 74, 74, -1, -1, 74, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, 74, -1, 73, -1, -1, -1, -1, 74, -1, 74, -1, -1, 74, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, 52, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 77, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, 19, 18, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, 66, -1, -1, -1, -1, 63, 68, -1, -1, 69, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 65, -1, 62, -1, -1, 67, -1, -1, -1, -1, -1, -1 }, + { 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, 27, -1, -1, 26, -1, 32, 30, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 19, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, 18, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 32, -1, -1, 32, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, -1, -1, 32, -1, 31, -1, -1, -1, 27, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, - { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, -1, 56, -1, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 56, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 56, 56, -1, -1, 56, 56, -1, -1, -1, -1, 56, -1, 56, 56, 56, -1, -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, 56 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, }; static { Map> map = new HashMap>(); - map.put(96, Arrays.asList(new TerminalIdentifier[] { + map.put(81, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, })); - map.put(98, Arrays.asList(new TerminalIdentifier[] { + map.put(77, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(121, Arrays.asList(new TerminalIdentifier[] { + map.put(124, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(74, Arrays.asList(new TerminalIdentifier[] { + map.put(97, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(110, Arrays.asList(new TerminalIdentifier[] { + map.put(106, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(70, Arrays.asList(new TerminalIdentifier[] { + map.put(101, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_EQUAL, })); - map.put(67, Arrays.asList(new TerminalIdentifier[] { + map.put(119, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(123, Arrays.asList(new TerminalIdentifier[] { + map.put(98, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -712,27 +712,27 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(81, Arrays.asList(new TerminalIdentifier[] { + map.put(95, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(132, Arrays.asList(new TerminalIdentifier[] { + map.put(135, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, })); - map.put(78, Arrays.asList(new TerminalIdentifier[] { + map.put(100, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(117, Arrays.asList(new TerminalIdentifier[] { + map.put(107, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INPUT, })); - map.put(140, Arrays.asList(new TerminalIdentifier[] { + map.put(131, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(119, Arrays.asList(new TerminalIdentifier[] { + map.put(110, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(104, Arrays.asList(new TerminalIdentifier[] { + map.put(140, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_FLOAT, WdlTerminalIdentifier.TERMINAL_INTEGER, @@ -742,15 +742,18 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_NULL, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(89, Arrays.asList(new TerminalIdentifier[] { + map.put(102, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(129, Arrays.asList(new TerminalIdentifier[] { + map.put(85, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(127, Arrays.asList(new TerminalIdentifier[] { + map.put(90, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_IDENTIFIER, + })); + map.put(109, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -767,10 +770,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(80, Arrays.asList(new TerminalIdentifier[] { - WdlTerminalIdentifier.TERMINAL_IDENTIFIER, - })); - map.put(92, Arrays.asList(new TerminalIdentifier[] { + map.put(118, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -787,22 +787,22 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(109, Arrays.asList(new TerminalIdentifier[] { + map.put(74, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(141, Arrays.asList(new TerminalIdentifier[] { + map.put(112, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(122, Arrays.asList(new TerminalIdentifier[] { + map.put(126, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(124, Arrays.asList(new TerminalIdentifier[] { + map.put(82, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, })); - map.put(120, Arrays.asList(new TerminalIdentifier[] { + map.put(87, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -813,44 +813,44 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(100, Arrays.asList(new TerminalIdentifier[] { + map.put(83, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, })); - map.put(73, Arrays.asList(new TerminalIdentifier[] { + map.put(75, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_ATTR_HINT, })); - map.put(116, Arrays.asList(new TerminalIdentifier[] { + map.put(84, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(75, Arrays.asList(new TerminalIdentifier[] { + map.put(104, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, })); - map.put(128, Arrays.asList(new TerminalIdentifier[] { + map.put(130, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, })); - map.put(136, Arrays.asList(new TerminalIdentifier[] { + map.put(138, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INPUT, })); - map.put(105, Arrays.asList(new TerminalIdentifier[] { + map.put(71, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(95, Arrays.asList(new TerminalIdentifier[] { + map.put(113, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RAW_COMMAND, })); - map.put(88, Arrays.asList(new TerminalIdentifier[] { + map.put(91, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, })); - map.put(139, Arrays.asList(new TerminalIdentifier[] { + map.put(93, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(130, Arrays.asList(new TerminalIdentifier[] { + map.put(141, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_VERSION, })); - map.put(135, Arrays.asList(new TerminalIdentifier[] { + map.put(133, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -867,44 +867,44 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(133, Arrays.asList(new TerminalIdentifier[] { + map.put(99, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, })); - map.put(87, Arrays.asList(new TerminalIdentifier[] { + map.put(92, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_ATTR_HINT, })); - map.put(134, Arrays.asList(new TerminalIdentifier[] { + map.put(94, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(69, Arrays.asList(new TerminalIdentifier[] { + map.put(103, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IF, })); - map.put(86, Arrays.asList(new TerminalIdentifier[] { + map.put(105, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, })); - map.put(82, Arrays.asList(new TerminalIdentifier[] { + map.put(117, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, })); - map.put(91, Arrays.asList(new TerminalIdentifier[] { + map.put(88, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, })); - map.put(125, Arrays.asList(new TerminalIdentifier[] { + map.put(123, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(76, Arrays.asList(new TerminalIdentifier[] { + map.put(72, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(83, Arrays.asList(new TerminalIdentifier[] { + map.put(89, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INPUT, })); - map.put(79, Arrays.asList(new TerminalIdentifier[] { + map.put(137, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(85, Arrays.asList(new TerminalIdentifier[] { + map.put(139, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -921,16 +921,16 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(126, Arrays.asList(new TerminalIdentifier[] { + map.put(132, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_META, })); - map.put(77, Arrays.asList(new TerminalIdentifier[] { + map.put(73, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(115, Arrays.asList(new TerminalIdentifier[] { + map.put(108, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(113, Arrays.asList(new TerminalIdentifier[] { + map.put(129, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_FLOAT, WdlTerminalIdentifier.TERMINAL_INTEGER, @@ -940,59 +940,59 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_NULL, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(114, Arrays.asList(new TerminalIdentifier[] { + map.put(80, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(107, Arrays.asList(new TerminalIdentifier[] { + map.put(125, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(111, Arrays.asList(new TerminalIdentifier[] { + map.put(70, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_OUTPUT, })); - map.put(72, Arrays.asList(new TerminalIdentifier[] { + map.put(114, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_PARAMETER_META, })); - map.put(93, Arrays.asList(new TerminalIdentifier[] { + map.put(67, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(131, Arrays.asList(new TerminalIdentifier[] { + map.put(128, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RUNTIME, })); - map.put(103, Arrays.asList(new TerminalIdentifier[] { + map.put(115, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_SCATTER, })); - map.put(99, Arrays.asList(new TerminalIdentifier[] { + map.put(136, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_EQUAL, })); - map.put(106, Arrays.asList(new TerminalIdentifier[] { + map.put(120, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(118, Arrays.asList(new TerminalIdentifier[] { + map.put(111, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(97, Arrays.asList(new TerminalIdentifier[] { + map.put(127, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(102, Arrays.asList(new TerminalIdentifier[] { + map.put(86, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(90, Arrays.asList(new TerminalIdentifier[] { + map.put(76, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, })); - map.put(112, Arrays.asList(new TerminalIdentifier[] { + map.put(78, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(68, Arrays.asList(new TerminalIdentifier[] { + map.put(121, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_TASK, })); - map.put(137, Arrays.asList(new TerminalIdentifier[] { + map.put(122, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1003,15 +1003,15 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(101, Arrays.asList(new TerminalIdentifier[] { + map.put(79, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(84, Arrays.asList(new TerminalIdentifier[] { + map.put(96, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_VERSION, })); - map.put(71, Arrays.asList(new TerminalIdentifier[] { + map.put(116, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1023,48 +1023,48 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(138, Arrays.asList(new TerminalIdentifier[] { + map.put(68, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_META, })); - map.put(108, Arrays.asList(new TerminalIdentifier[] { + map.put(134, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_PARAMETER_META, })); - map.put(94, Arrays.asList(new TerminalIdentifier[] { + map.put(69, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); nonterminal_first = Collections.unmodifiableMap(map); } static { Map> map = new HashMap>(); - map.put(96, Arrays.asList(new TerminalIdentifier[] { + map.put(81, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(98, Arrays.asList(new TerminalIdentifier[] { + map.put(77, Arrays.asList(new TerminalIdentifier[] { })); - map.put(121, Arrays.asList(new TerminalIdentifier[] { + map.put(124, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(74, Arrays.asList(new TerminalIdentifier[] { + map.put(97, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(110, Arrays.asList(new TerminalIdentifier[] { + map.put(106, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(70, Arrays.asList(new TerminalIdentifier[] { + map.put(101, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(67, Arrays.asList(new TerminalIdentifier[] { + map.put(119, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(123, Arrays.asList(new TerminalIdentifier[] { + map.put(98, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(81, Arrays.asList(new TerminalIdentifier[] { + map.put(95, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1078,7 +1078,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(132, Arrays.asList(new TerminalIdentifier[] { + map.put(135, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1092,7 +1092,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(78, Arrays.asList(new TerminalIdentifier[] { + map.put(100, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1105,60 +1105,60 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(117, Arrays.asList(new TerminalIdentifier[] { + map.put(107, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(140, Arrays.asList(new TerminalIdentifier[] { + map.put(131, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(119, Arrays.asList(new TerminalIdentifier[] { + map.put(110, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(104, Arrays.asList(new TerminalIdentifier[] { + map.put(140, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(89, Arrays.asList(new TerminalIdentifier[] { + map.put(102, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(129, Arrays.asList(new TerminalIdentifier[] { + map.put(85, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(127, Arrays.asList(new TerminalIdentifier[] { + map.put(90, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_RBRACE, + })); + map.put(109, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RPAREN, WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(80, Arrays.asList(new TerminalIdentifier[] { - WdlTerminalIdentifier.TERMINAL_RBRACE, - })); - map.put(92, Arrays.asList(new TerminalIdentifier[] { + map.put(118, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(109, Arrays.asList(new TerminalIdentifier[] { + map.put(74, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(141, Arrays.asList(new TerminalIdentifier[] { + map.put(112, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(122, Arrays.asList(new TerminalIdentifier[] { + map.put(126, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(124, Arrays.asList(new TerminalIdentifier[] { + map.put(82, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(120, Arrays.asList(new TerminalIdentifier[] { + map.put(87, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(100, Arrays.asList(new TerminalIdentifier[] { + map.put(83, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RAW_CMD_END, })); - map.put(73, Arrays.asList(new TerminalIdentifier[] { + map.put(75, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -1175,7 +1175,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(116, Arrays.asList(new TerminalIdentifier[] { + map.put(84, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1189,7 +1189,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(75, Arrays.asList(new TerminalIdentifier[] { + map.put(104, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1202,7 +1202,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(128, Arrays.asList(new TerminalIdentifier[] { + map.put(130, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AFTER, WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1217,10 +1217,10 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(136, Arrays.asList(new TerminalIdentifier[] { + map.put(138, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(105, Arrays.asList(new TerminalIdentifier[] { + map.put(71, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1233,7 +1233,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(95, Arrays.asList(new TerminalIdentifier[] { + map.put(113, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1245,12 +1245,12 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(88, Arrays.asList(new TerminalIdentifier[] { + map.put(91, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_RAW_CMD_END, })); - map.put(139, Arrays.asList(new TerminalIdentifier[] { + map.put(93, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1265,9 +1265,9 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(130, Arrays.asList(new TerminalIdentifier[] { + map.put(141, Arrays.asList(new TerminalIdentifier[] { })); - map.put(135, Arrays.asList(new TerminalIdentifier[] { + map.put(133, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ASTERISK, WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_CALL, @@ -1315,7 +1315,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(133, Arrays.asList(new TerminalIdentifier[] { + map.put(99, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CMD_PART, WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, @@ -1323,7 +1323,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_RAW_CMD_END, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(87, Arrays.asList(new TerminalIdentifier[] { + map.put(92, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_CMD_ATTR_HINT, WdlTerminalIdentifier.TERMINAL_DASH, @@ -1341,12 +1341,12 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(134, Arrays.asList(new TerminalIdentifier[] { + map.put(94, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(69, Arrays.asList(new TerminalIdentifier[] { + map.put(103, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1359,37 +1359,37 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(86, Arrays.asList(new TerminalIdentifier[] { + map.put(105, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(82, Arrays.asList(new TerminalIdentifier[] { + map.put(117, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(91, Arrays.asList(new TerminalIdentifier[] { + map.put(88, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ALIAS, WdlTerminalIdentifier.TERMINAL_IMPORT, WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(125, Arrays.asList(new TerminalIdentifier[] { + map.put(123, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(76, Arrays.asList(new TerminalIdentifier[] { + map.put(72, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(83, Arrays.asList(new TerminalIdentifier[] { + map.put(89, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1404,15 +1404,15 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(79, Arrays.asList(new TerminalIdentifier[] { + map.put(137, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(85, Arrays.asList(new TerminalIdentifier[] { + map.put(139, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(126, Arrays.asList(new TerminalIdentifier[] { + map.put(132, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1424,12 +1424,12 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(77, Arrays.asList(new TerminalIdentifier[] { + map.put(73, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(115, Arrays.asList(new TerminalIdentifier[] { + map.put(108, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1444,23 +1444,23 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(113, Arrays.asList(new TerminalIdentifier[] { + map.put(129, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(114, Arrays.asList(new TerminalIdentifier[] { + map.put(80, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_RBRACE, })); - map.put(107, Arrays.asList(new TerminalIdentifier[] { + map.put(125, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(111, Arrays.asList(new TerminalIdentifier[] { + map.put(70, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1475,7 +1475,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(72, Arrays.asList(new TerminalIdentifier[] { + map.put(114, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1487,7 +1487,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(93, Arrays.asList(new TerminalIdentifier[] { + map.put(67, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1499,7 +1499,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(131, Arrays.asList(new TerminalIdentifier[] { + map.put(128, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1511,7 +1511,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(103, Arrays.asList(new TerminalIdentifier[] { + map.put(115, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1524,7 +1524,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(99, Arrays.asList(new TerminalIdentifier[] { + map.put(136, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1539,7 +1539,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(106, Arrays.asList(new TerminalIdentifier[] { + map.put(120, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_AS, WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, @@ -1550,13 +1550,13 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(118, Arrays.asList(new TerminalIdentifier[] { + map.put(111, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_QUOTE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(97, Arrays.asList(new TerminalIdentifier[] { + map.put(127, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ASTERISK, WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_CALL, @@ -1604,29 +1604,29 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(102, Arrays.asList(new TerminalIdentifier[] { + map.put(86, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_ESCAPE, WdlTerminalIdentifier.TERMINAL_EXPRESSION_PLACEHOLDER_START, WdlTerminalIdentifier.TERMINAL_QUOTE, WdlTerminalIdentifier.TERMINAL_STRING, })); - map.put(90, Arrays.asList(new TerminalIdentifier[] { + map.put(76, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(112, Arrays.asList(new TerminalIdentifier[] { + map.put(78, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RBRACE, WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(68, Arrays.asList(new TerminalIdentifier[] { + map.put(121, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, })); - map.put(137, Arrays.asList(new TerminalIdentifier[] { + map.put(122, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_INPUT, WdlTerminalIdentifier.TERMINAL_META, @@ -1638,15 +1638,15 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(101, Arrays.asList(new TerminalIdentifier[] { + map.put(79, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_COMMA, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_RSQUARE, })); - map.put(84, Arrays.asList(new TerminalIdentifier[] { + map.put(96, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IMPORT, })); - map.put(71, Arrays.asList(new TerminalIdentifier[] { + map.put(116, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1659,7 +1659,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(138, Arrays.asList(new TerminalIdentifier[] { + map.put(68, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1672,7 +1672,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(108, Arrays.asList(new TerminalIdentifier[] { + map.put(134, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_CALL, WdlTerminalIdentifier.TERMINAL_IDENTIFIER, WdlTerminalIdentifier.TERMINAL_IF, @@ -1685,7 +1685,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE, WdlTerminalIdentifier.TERMINAL_TYPE_E, })); - map.put(94, Arrays.asList(new TerminalIdentifier[] { + map.put(69, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_STRUCT, WdlTerminalIdentifier.TERMINAL_TASK, WdlTerminalIdentifier.TERMINAL_WORKFLOW, @@ -1780,6 +1780,9 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_TYPE_E, })); map.put(120, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_IDENTIFIER, + })); + map.put(122, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -1796,10 +1799,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(124, Arrays.asList(new TerminalIdentifier[] { - WdlTerminalIdentifier.TERMINAL_IDENTIFIER, - })); - map.put(127, Arrays.asList(new TerminalIdentifier[] { + map.put(128, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -2104,7 +2104,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(123, Arrays.asList(new TerminalIdentifier[] { + map.put(125, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -2121,7 +2121,7 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(122, Arrays.asList(new TerminalIdentifier[] { + map.put(124, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, WdlTerminalIdentifier.TERMINAL_DASH, WdlTerminalIdentifier.TERMINAL_E, @@ -2138,46 +2138,49 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { WdlTerminalIdentifier.TERMINAL_PLUS, WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(131, Arrays.asList(new TerminalIdentifier[] { + map.put(132, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_QUOTE, })); - map.put(133, Arrays.asList(new TerminalIdentifier[] { + map.put(134, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_BOOLEAN, })); map.put(119, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_DASH, })); - map.put(135, Arrays.asList(new TerminalIdentifier[] { + map.put(136, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_FLOAT, })); - map.put(132, Arrays.asList(new TerminalIdentifier[] { + map.put(133, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); map.put(121, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IDENTIFIER, })); - map.put(130, Arrays.asList(new TerminalIdentifier[] { + map.put(123, Arrays.asList(new TerminalIdentifier[] { + WdlTerminalIdentifier.TERMINAL_IDENTIFIER, + })); + map.put(131, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_IF, })); - map.put(134, Arrays.asList(new TerminalIdentifier[] { + map.put(135, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_INTEGER, })); - map.put(128, Arrays.asList(new TerminalIdentifier[] { + map.put(129, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LBRACE, })); - map.put(129, Arrays.asList(new TerminalIdentifier[] { + map.put(130, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LPAREN, })); - map.put(126, Arrays.asList(new TerminalIdentifier[] { + map.put(127, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_LSQUARE, })); - map.put(136, Arrays.asList(new TerminalIdentifier[] { + map.put(137, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_NONE, })); map.put(117, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_NOT, })); - map.put(125, Arrays.asList(new TerminalIdentifier[] { + map.put(126, Arrays.asList(new TerminalIdentifier[] { WdlTerminalIdentifier.TERMINAL_OBJECT, })); map.put(118, Arrays.asList(new TerminalIdentifier[] { @@ -2407,218 +2410,219 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { } static { Map> map = new HashMap>(); - map.put(96, new ArrayList()); + map.put(81, new ArrayList()); + map.put(77, new ArrayList()); + map.put(124, new ArrayList()); + map.put(97, new ArrayList()); + map.put(106, new ArrayList()); + map.put(101, new ArrayList()); + map.put(119, new ArrayList()); map.put(98, new ArrayList()); - map.put(121, new ArrayList()); - map.put(74, new ArrayList()); + map.put(95, new ArrayList()); + map.put(135, new ArrayList()); + map.put(100, new ArrayList()); + map.put(107, new ArrayList()); + map.put(131, new ArrayList()); map.put(110, new ArrayList()); - map.put(70, new ArrayList()); - map.put(67, new ArrayList()); - map.put(123, new ArrayList()); - map.put(81, new ArrayList()); - map.put(132, new ArrayList()); - map.put(78, new ArrayList()); - map.put(117, new ArrayList()); map.put(140, new ArrayList()); - map.put(119, new ArrayList()); + map.put(102, new ArrayList()); + map.put(85, new ArrayList()); + map.put(90, new ArrayList()); + map.put(109, new ArrayList()); + map.put(118, new ArrayList()); + map.put(74, new ArrayList()); + map.put(112, new ArrayList()); + map.put(126, new ArrayList()); + map.put(82, new ArrayList()); + map.put(87, new ArrayList()); + map.put(83, new ArrayList()); + map.put(75, new ArrayList()); + map.put(84, new ArrayList()); map.put(104, new ArrayList()); + map.put(130, new ArrayList()); + map.put(138, new ArrayList()); + map.put(71, new ArrayList()); + map.put(113, new ArrayList()); + map.put(91, new ArrayList()); + map.put(93, new ArrayList()); + map.put(141, new ArrayList()); + map.put(133, new ArrayList()); + map.put(99, new ArrayList()); + map.put(92, new ArrayList()); + map.put(94, new ArrayList()); + map.put(103, new ArrayList()); + map.put(105, new ArrayList()); + map.put(117, new ArrayList()); + map.put(88, new ArrayList()); + map.put(123, new ArrayList()); + map.put(72, new ArrayList()); map.put(89, new ArrayList()); + map.put(137, new ArrayList()); + map.put(139, new ArrayList()); + map.put(132, new ArrayList()); + map.put(73, new ArrayList()); + map.put(108, new ArrayList()); map.put(129, new ArrayList()); - map.put(127, new ArrayList()); map.put(80, new ArrayList()); - map.put(92, new ArrayList()); - map.put(109, new ArrayList()); - map.put(141, new ArrayList()); - map.put(122, new ArrayList()); - map.put(124, new ArrayList()); - map.put(120, new ArrayList()); - map.put(100, new ArrayList()); - map.put(73, new ArrayList()); - map.put(116, new ArrayList()); - map.put(75, new ArrayList()); + map.put(125, new ArrayList()); + map.put(70, new ArrayList()); + map.put(114, new ArrayList()); + map.put(67, new ArrayList()); map.put(128, new ArrayList()); + map.put(115, new ArrayList()); map.put(136, new ArrayList()); - map.put(105, new ArrayList()); - map.put(95, new ArrayList()); - map.put(88, new ArrayList()); - map.put(139, new ArrayList()); - map.put(130, new ArrayList()); - map.put(135, new ArrayList()); - map.put(133, new ArrayList()); - map.put(87, new ArrayList()); - map.put(134, new ArrayList()); - map.put(69, new ArrayList()); + map.put(120, new ArrayList()); + map.put(111, new ArrayList()); + map.put(127, new ArrayList()); map.put(86, new ArrayList()); - map.put(82, new ArrayList()); - map.put(91, new ArrayList()); - map.put(125, new ArrayList()); map.put(76, new ArrayList()); - map.put(83, new ArrayList()); + map.put(78, new ArrayList()); + map.put(121, new ArrayList()); + map.put(122, new ArrayList()); map.put(79, new ArrayList()); - map.put(85, new ArrayList()); - map.put(126, new ArrayList()); - map.put(77, new ArrayList()); - map.put(115, new ArrayList()); - map.put(113, new ArrayList()); - map.put(114, new ArrayList()); - map.put(107, new ArrayList()); - map.put(111, new ArrayList()); - map.put(72, new ArrayList()); - map.put(93, new ArrayList()); - map.put(131, new ArrayList()); - map.put(103, new ArrayList()); - map.put(99, new ArrayList()); - map.put(106, new ArrayList()); - map.put(118, new ArrayList()); - map.put(97, new ArrayList()); - map.put(102, new ArrayList()); - map.put(90, new ArrayList()); - map.put(112, new ArrayList()); + map.put(96, new ArrayList()); + map.put(116, new ArrayList()); map.put(68, new ArrayList()); - map.put(137, new ArrayList()); - map.put(101, new ArrayList()); - map.put(84, new ArrayList()); - map.put(71, new ArrayList()); - map.put(138, new ArrayList()); - map.put(108, new ArrayList()); - map.put(94, new ArrayList()); - map.get(96).add("$_gen0 = list($import)"); - map.get(98).add("$_gen1 = list($file_body_element)"); - map.get(121).add("$_gen10 = list($input_declaration)"); - map.get(74).add("$_gen11 = list($kv)"); - map.get(110).add("$_gen12 = list($meta_kv)"); - map.get(70).add("$_gen13 = $setter"); - map.get(70).add("$_gen13 = :_empty"); - map.get(67).add("$_gen14 = list($output_kv)"); - map.get(123).add("$_gen15 = list($wf_body_element)"); - map.get(81).add("$_gen16 = $alias"); - map.get(81).add("$_gen16 = :_empty"); - map.get(132).add("$_gen17 = list($call_after)"); - map.get(78).add("$_gen18 = $call_brace_block"); - map.get(78).add("$_gen18 = :_empty"); - map.get(117).add("$_gen19 = $call_body"); - map.get(117).add("$_gen19 = :_empty"); - map.get(140).add("$_gen2 = list($struct_declaration)"); - map.get(119).add("$_gen20 = list($input_kv, :comma)"); - map.get(104).add("$_gen21 = list($meta_value, :comma)"); - map.get(89).add("$_gen22 = list($meta_kv, :comma)"); - map.get(129).add("$_gen23 = list($type_e, :comma)"); - map.get(127).add("$_gen24 = list($e, :comma)"); - map.get(80).add("$_gen25 = list($object_kv, :comma)"); - map.get(92).add("$_gen26 = list($map_kv, :comma)"); - map.get(109).add("$_gen3 = list($static_string_piece)"); - map.get(141).add("$_gen4 = list($string_piece)"); - map.get(122).add("$_gen5 = $import_namespace"); - map.get(122).add("$_gen5 = :_empty"); - map.get(124).add("$_gen6 = list($import_alias)"); - map.get(120).add("$_gen7 = list($task_sections)"); - map.get(100).add("$_gen8 = list($command_part)"); - map.get(73).add("$_gen9 = list($expression_placeholder_kv)"); - map.get(116).add("$alias = :as :identifier -> $1"); - map.get(75).add("$call = :call :fqn $_gen16 $_gen17 $_gen18 -> Call( task=$1, alias=$2, after=$3, body=$4 )"); - map.get(128).add("$call_after = :after :identifier -> $1"); - map.get(136).add("$call_body = :input :colon $_gen20 -> CallBody( inputs=$2 )"); - map.get(105).add("$call_brace_block = :lbrace $_gen19 :rbrace -> $1"); - map.get(95).add("$command = :raw_command :raw_cmd_start $_gen8 :raw_cmd_end -> RawCommand( parts=$2 )"); - map.get(88).add("$command_part = $expression_placeholder"); - map.get(88).add("$command_part = :cmd_part"); - map.get(139).add("$declaration = $type_e :identifier $setter -> Declaration( type=$0, name=$1, expression=$2 )"); - map.get(130).add("$document = $version $_gen0 $_gen1 -> Draft3File( version=$0, imports=$1, body=$2 )"); - map.get(135).add("$e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); - map.get(135).add("$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); - map.get(135).add("$e = $string_literal"); - map.get(135).add("$e = :boolean"); - map.get(135).add("$e = :dash $e -> UnaryNegation( expression=$1 )"); - map.get(135).add("$e = :float"); - map.get(135).add("$e = :identifier"); - map.get(135).add("$e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 )"); - map.get(135).add("$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); - map.get(135).add("$e = :integer"); - map.get(135).add("$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); - map.get(135).add("$e = :lparen $_gen24 :rparen -> TupleLiteral( values=$1 )"); - map.get(135).add("$e = :lsquare $_gen24 :rsquare -> ArrayLiteral( values=$1 )"); - map.get(135).add("$e = :none"); - map.get(135).add("$e = :not $e -> LogicalNot( expression=$1 )"); - map.get(135).add("$e = :object :lbrace $_gen25 :rbrace -> ObjectLiteral( map=$2 )"); - map.get(135).add("$e = :plus $e -> UnaryPlus( expression=$1 )"); - map.get(133).add("$expression_placeholder = :expression_placeholder_start $_gen9 $e :expression_placeholder_end -> ExpressionPlaceholder( attributes=$1, expr=$2 )"); - map.get(87).add("$expression_placeholder_kv = :cmd_attr_hint :identifier :equal $e -> ExpressionPlaceholderAttr( key=$1, value=$3 )"); - map.get(134).add("$file_body_element = $struct"); - map.get(134).add("$file_body_element = $task"); - map.get(134).add("$file_body_element = $workflow"); - map.get(69).add("$if_stmt = :if :lparen $e :rparen :lbrace $_gen15 :rbrace -> If( expression=$2, body=$5 )"); - map.get(86).add("$import = :import $static_string $_gen5 $_gen6 -> Import( uri=$1, namespace=$2, aliases=$3 )"); - map.get(82).add("$import_alias = :alias :identifier :as :identifier -> ImportAlias( old_name=$1, new_name=$3 )"); - map.get(91).add("$import_namespace = :as :identifier -> $1"); - map.get(125).add("$input_declaration = $type_e :identifier $_gen13 -> InputDeclaration( type=$0, name=$1, expression=$2 )"); - map.get(76).add("$input_kv = :identifier :equal $e -> ObjectKV( key=$0, value=$2 )"); - map.get(83).add("$inputs = :input :lbrace $_gen10 :rbrace -> Inputs( inputs=$2 )"); - map.get(79).add("$kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 )"); - map.get(85).add("$map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 )"); - map.get(126).add("$meta = :meta $meta_map -> Meta( map=$1 )"); - map.get(77).add("$meta_kv = :identifier :colon $meta_value -> MetaKvPair( key=$0, value=$2 )"); - map.get(115).add("$meta_map = :lbrace $_gen12 :rbrace -> $1"); - map.get(113).add("$meta_value = $static_string"); - map.get(113).add("$meta_value = :boolean"); - map.get(113).add("$meta_value = :float"); - map.get(113).add("$meta_value = :integer"); - map.get(113).add("$meta_value = :lbrace $_gen22 :rbrace -> MetaObject( map=$1 )"); - map.get(113).add("$meta_value = :lsquare $_gen21 :rsquare -> MetaArray( values=$1 )"); - map.get(113).add("$meta_value = :null"); - map.get(114).add("$object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 )"); - map.get(107).add("$output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 )"); - map.get(111).add("$outputs = :output :lbrace $_gen14 :rbrace -> Outputs( outputs=$2 )"); - map.get(72).add("$parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); - map.get(93).add("$rt_map = :lbrace $_gen11 :rbrace -> $1"); - map.get(131).add("$runtime = :runtime $rt_map -> Runtime( map=$1 )"); - map.get(103).add("$scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen15 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )"); - map.get(99).add("$setter = :equal $e -> $1"); - map.get(106).add("$static_string = :quote $_gen3 :quote -> StaticString( value=$1 )"); - map.get(118).add("$static_string_piece = :escape"); - map.get(118).add("$static_string_piece = :string"); - map.get(97).add("$string_literal = :quote $_gen4 :quote -> StringLiteral( pieces=$1 )"); - map.get(102).add("$string_piece = $expression_placeholder"); - map.get(102).add("$string_piece = $static_string_piece"); - map.get(90).add("$struct = :struct :identifier :lbrace $_gen2 :rbrace -> Struct( name=$1, entries=$3 )"); - map.get(112).add("$struct_declaration = $type_e :identifier -> StructEntry( type=$0, name=$1 )"); - map.get(68).add("$task = :task :identifier :lbrace $_gen7 :rbrace -> Task( name=$1, sections=$3 )"); - map.get(137).add("$task_sections = $command"); - map.get(137).add("$task_sections = $declaration"); - map.get(137).add("$task_sections = $inputs"); - map.get(137).add("$task_sections = $meta"); - map.get(137).add("$task_sections = $outputs"); - map.get(137).add("$task_sections = $parameter_meta"); - map.get(137).add("$task_sections = $runtime"); - map.get(101).add("$type_e = :identifier"); - map.get(101).add("$type_e = :type"); - map.get(101).add("$type_e = :type <=> :lsquare $_gen23 :rsquare -> Type( name=$0, subtype=$2 )"); - map.get(101).add("$type_e = :type <=> :plus -> NonEmptyType( innerType=$0 )"); - map.get(101).add("$type_e = :type <=> :qmark -> OptionalType( innerType=$0 )"); - map.get(84).add("$version = :version :version_name -> VersionDeclaration( v=$1 )"); - map.get(71).add("$wf_body_element = $call"); - map.get(71).add("$wf_body_element = $declaration"); - map.get(71).add("$wf_body_element = $if_stmt"); - map.get(71).add("$wf_body_element = $inputs"); - map.get(71).add("$wf_body_element = $outputs"); - map.get(71).add("$wf_body_element = $scatter"); - map.get(71).add("$wf_body_element = $wf_meta"); - map.get(71).add("$wf_body_element = $wf_parameter_meta"); - map.get(138).add("$wf_meta = :meta $meta_map -> Meta( map=$1 )"); - map.get(108).add("$wf_parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); - map.get(94).add("$workflow = :workflow :identifier :lbrace $_gen15 :rbrace -> Workflow( name=$1, body=$3 )"); + map.put(134, new ArrayList()); + map.put(69, new ArrayList()); + map.get(81).add("$_gen0 = list($import)"); + map.get(77).add("$_gen1 = list($file_body_element)"); + map.get(124).add("$_gen10 = list($input_declaration)"); + map.get(97).add("$_gen11 = list($kv)"); + map.get(106).add("$_gen12 = list($meta_kv)"); + map.get(101).add("$_gen13 = $setter"); + map.get(101).add("$_gen13 = :_empty"); + map.get(119).add("$_gen14 = list($output_kv)"); + map.get(98).add("$_gen15 = list($wf_body_element)"); + map.get(95).add("$_gen16 = $alias"); + map.get(95).add("$_gen16 = :_empty"); + map.get(135).add("$_gen17 = list($call_after)"); + map.get(100).add("$_gen18 = $call_brace_block"); + map.get(100).add("$_gen18 = :_empty"); + map.get(107).add("$_gen19 = $call_body"); + map.get(107).add("$_gen19 = :_empty"); + map.get(131).add("$_gen2 = list($struct_declaration)"); + map.get(110).add("$_gen20 = list($input_kv, :comma)"); + map.get(140).add("$_gen21 = list($meta_value, :comma)"); + map.get(102).add("$_gen22 = list($meta_kv, :comma)"); + map.get(85).add("$_gen23 = list($type_e, :comma)"); + map.get(90).add("$_gen24 = list($object_kv, :comma)"); + map.get(109).add("$_gen25 = list($e, :comma)"); + map.get(118).add("$_gen26 = list($map_kv, :comma)"); + map.get(74).add("$_gen3 = list($static_string_piece)"); + map.get(112).add("$_gen4 = list($string_piece)"); + map.get(126).add("$_gen5 = $import_namespace"); + map.get(126).add("$_gen5 = :_empty"); + map.get(82).add("$_gen6 = list($import_alias)"); + map.get(87).add("$_gen7 = list($task_sections)"); + map.get(83).add("$_gen8 = list($command_part)"); + map.get(75).add("$_gen9 = list($expression_placeholder_kv)"); + map.get(84).add("$alias = :as :identifier -> $1"); + map.get(104).add("$call = :call :fqn $_gen16 $_gen17 $_gen18 -> Call( task=$1, alias=$2, after=$3, body=$4 )"); + map.get(130).add("$call_after = :after :identifier -> $1"); + map.get(138).add("$call_body = :input :colon $_gen20 -> CallBody( inputs=$2 )"); + map.get(71).add("$call_brace_block = :lbrace $_gen19 :rbrace -> $1"); + map.get(113).add("$command = :raw_command :raw_cmd_start $_gen8 :raw_cmd_end -> RawCommand( parts=$2 )"); + map.get(91).add("$command_part = $expression_placeholder"); + map.get(91).add("$command_part = :cmd_part"); + map.get(93).add("$declaration = $type_e :identifier $setter -> Declaration( type=$0, name=$1, expression=$2 )"); + map.get(141).add("$document = $version $_gen0 $_gen1 -> Draft3File( version=$0, imports=$1, body=$2 )"); + map.get(133).add("$e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); + map.get(133).add("$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); + map.get(133).add("$e = $string_literal"); + map.get(133).add("$e = :boolean"); + map.get(133).add("$e = :dash $e -> UnaryNegation( expression=$1 )"); + map.get(133).add("$e = :float"); + map.get(133).add("$e = :identifier"); + map.get(133).add("$e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 )"); + map.get(133).add("$e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 )"); + map.get(133).add("$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); + map.get(133).add("$e = :integer"); + map.get(133).add("$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); + map.get(133).add("$e = :lparen $_gen25 :rparen -> TupleLiteral( values=$1 )"); + map.get(133).add("$e = :lsquare $_gen25 :rsquare -> ArrayLiteral( values=$1 )"); + map.get(133).add("$e = :none"); + map.get(133).add("$e = :not $e -> LogicalNot( expression=$1 )"); + map.get(133).add("$e = :object :lbrace $_gen24 :rbrace -> ObjectLiteral( map=$2 )"); + map.get(133).add("$e = :plus $e -> UnaryPlus( expression=$1 )"); + map.get(99).add("$expression_placeholder = :expression_placeholder_start $_gen9 $e :expression_placeholder_end -> ExpressionPlaceholder( attributes=$1, expr=$2 )"); + map.get(92).add("$expression_placeholder_kv = :cmd_attr_hint :identifier :equal $e -> ExpressionPlaceholderAttr( key=$1, value=$3 )"); + map.get(94).add("$file_body_element = $struct"); + map.get(94).add("$file_body_element = $task"); + map.get(94).add("$file_body_element = $workflow"); + map.get(103).add("$if_stmt = :if :lparen $e :rparen :lbrace $_gen15 :rbrace -> If( expression=$2, body=$5 )"); + map.get(105).add("$import = :import $static_string $_gen5 $_gen6 -> Import( uri=$1, namespace=$2, aliases=$3 )"); + map.get(117).add("$import_alias = :alias :identifier :as :identifier -> ImportAlias( old_name=$1, new_name=$3 )"); + map.get(88).add("$import_namespace = :as :identifier -> $1"); + map.get(123).add("$input_declaration = $type_e :identifier $_gen13 -> InputDeclaration( type=$0, name=$1, expression=$2 )"); + map.get(72).add("$input_kv = :identifier :equal $e -> ObjectKV( key=$0, value=$2 )"); + map.get(89).add("$inputs = :input :lbrace $_gen10 :rbrace -> Inputs( inputs=$2 )"); + map.get(137).add("$kv = :identifier :colon $e -> RuntimeAttribute( key=$0, value=$2 )"); + map.get(139).add("$map_kv = $e :colon $e -> MapLiteralKv( key=$0, value=$2 )"); + map.get(132).add("$meta = :meta $meta_map -> Meta( map=$1 )"); + map.get(73).add("$meta_kv = :identifier :colon $meta_value -> MetaKvPair( key=$0, value=$2 )"); + map.get(108).add("$meta_map = :lbrace $_gen12 :rbrace -> $1"); + map.get(129).add("$meta_value = $static_string"); + map.get(129).add("$meta_value = :boolean"); + map.get(129).add("$meta_value = :float"); + map.get(129).add("$meta_value = :integer"); + map.get(129).add("$meta_value = :lbrace $_gen22 :rbrace -> MetaObject( map=$1 )"); + map.get(129).add("$meta_value = :lsquare $_gen21 :rsquare -> MetaArray( values=$1 )"); + map.get(129).add("$meta_value = :null"); + map.get(80).add("$object_kv = :identifier :colon $e -> ObjectKV( key=$0, value=$2 )"); + map.get(125).add("$output_kv = $type_e :identifier :equal $e -> Output( type=$0, name=$1, expression=$3 )"); + map.get(70).add("$outputs = :output :lbrace $_gen14 :rbrace -> Outputs( outputs=$2 )"); + map.get(114).add("$parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); + map.get(67).add("$rt_map = :lbrace $_gen11 :rbrace -> $1"); + map.get(128).add("$runtime = :runtime $rt_map -> Runtime( map=$1 )"); + map.get(115).add("$scatter = :scatter :lparen :identifier :in $e :rparen :lbrace $_gen15 :rbrace -> Scatter( item=$2, collection=$4, body=$7 )"); + map.get(136).add("$setter = :equal $e -> $1"); + map.get(120).add("$static_string = :quote $_gen3 :quote -> StaticString( value=$1 )"); + map.get(111).add("$static_string_piece = :escape"); + map.get(111).add("$static_string_piece = :string"); + map.get(127).add("$string_literal = :quote $_gen4 :quote -> StringLiteral( pieces=$1 )"); + map.get(86).add("$string_piece = $expression_placeholder"); + map.get(86).add("$string_piece = $static_string_piece"); + map.get(76).add("$struct = :struct :identifier :lbrace $_gen2 :rbrace -> Struct( name=$1, entries=$3 )"); + map.get(78).add("$struct_declaration = $type_e :identifier -> StructEntry( type=$0, name=$1 )"); + map.get(121).add("$task = :task :identifier :lbrace $_gen7 :rbrace -> Task( name=$1, sections=$3 )"); + map.get(122).add("$task_sections = $command"); + map.get(122).add("$task_sections = $declaration"); + map.get(122).add("$task_sections = $inputs"); + map.get(122).add("$task_sections = $meta"); + map.get(122).add("$task_sections = $outputs"); + map.get(122).add("$task_sections = $parameter_meta"); + map.get(122).add("$task_sections = $runtime"); + map.get(79).add("$type_e = :identifier"); + map.get(79).add("$type_e = :type"); + map.get(79).add("$type_e = :type <=> :lsquare $_gen23 :rsquare -> Type( name=$0, subtype=$2 )"); + map.get(79).add("$type_e = :type <=> :plus -> NonEmptyType( innerType=$0 )"); + map.get(79).add("$type_e = :type <=> :qmark -> OptionalType( innerType=$0 )"); + map.get(96).add("$version = :version :version_name -> VersionDeclaration( v=$1 )"); + map.get(116).add("$wf_body_element = $call"); + map.get(116).add("$wf_body_element = $declaration"); + map.get(116).add("$wf_body_element = $if_stmt"); + map.get(116).add("$wf_body_element = $inputs"); + map.get(116).add("$wf_body_element = $outputs"); + map.get(116).add("$wf_body_element = $scatter"); + map.get(116).add("$wf_body_element = $wf_meta"); + map.get(116).add("$wf_body_element = $wf_parameter_meta"); + map.get(68).add("$wf_meta = :meta $meta_map -> Meta( map=$1 )"); + map.get(134).add("$wf_parameter_meta = :parameter_meta $meta_map -> ParameterMeta( map=$1 )"); + map.get(69).add("$workflow = :workflow :identifier :lbrace $_gen15 :rbrace -> Workflow( name=$1, body=$3 )"); nonterminal_rules = Collections.unmodifiableMap(map); } static { @@ -2644,9 +2648,9 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { map.put(new Integer(94), "$_gen21 = list($meta_value, :comma)"); map.put(new Integer(96), "$_gen22 = list($meta_kv, :comma)"); map.put(new Integer(98), "$_gen23 = list($type_e, :comma)"); - map.put(new Integer(120), "$_gen24 = list($e, :comma)"); - map.put(new Integer(124), "$_gen25 = list($object_kv, :comma)"); - map.put(new Integer(127), "$_gen26 = list($map_kv, :comma)"); + map.put(new Integer(120), "$_gen24 = list($object_kv, :comma)"); + map.put(new Integer(122), "$_gen25 = list($e, :comma)"); + map.put(new Integer(128), "$_gen26 = list($map_kv, :comma)"); map.put(new Integer(10), "$_gen3 = list($static_string_piece)"); map.put(new Integer(12), "$_gen4 = list($string_piece)"); map.put(new Integer(18), "$_gen5 = $import_namespace"); @@ -2678,22 +2682,23 @@ public enum WdlTerminalIdentifier implements TerminalIdentifier { map.put(new Integer(116), "$e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )"); map.put(new Integer(112), "$e = $e :plus $e -> Add( lhs=$0, rhs=$2 )"); map.put(new Integer(115), "$e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )"); - map.put(new Integer(123), "$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); - map.put(new Integer(122), "$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); - map.put(new Integer(131), "$e = $string_literal"); - map.put(new Integer(133), "$e = :boolean"); + map.put(new Integer(125), "$e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 )"); + map.put(new Integer(124), "$e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )"); + map.put(new Integer(132), "$e = $string_literal"); + map.put(new Integer(134), "$e = :boolean"); map.put(new Integer(119), "$e = :dash $e -> UnaryNegation( expression=$1 )"); - map.put(new Integer(135), "$e = :float"); - map.put(new Integer(132), "$e = :identifier"); - map.put(new Integer(121), "$e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 )"); - map.put(new Integer(130), "$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); - map.put(new Integer(134), "$e = :integer"); - map.put(new Integer(128), "$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); - map.put(new Integer(129), "$e = :lparen $_gen24 :rparen -> TupleLiteral( values=$1 )"); - map.put(new Integer(126), "$e = :lsquare $_gen24 :rsquare -> ArrayLiteral( values=$1 )"); - map.put(new Integer(136), "$e = :none"); + map.put(new Integer(136), "$e = :float"); + map.put(new Integer(133), "$e = :identifier"); + map.put(new Integer(121), "$e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 )"); + map.put(new Integer(123), "$e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 )"); + map.put(new Integer(131), "$e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )"); + map.put(new Integer(135), "$e = :integer"); + map.put(new Integer(129), "$e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 )"); + map.put(new Integer(130), "$e = :lparen $_gen25 :rparen -> TupleLiteral( values=$1 )"); + map.put(new Integer(127), "$e = :lsquare $_gen25 :rsquare -> ArrayLiteral( values=$1 )"); + map.put(new Integer(137), "$e = :none"); map.put(new Integer(117), "$e = :not $e -> LogicalNot( expression=$1 )"); - map.put(new Integer(125), "$e = :object :lbrace $_gen25 :rbrace -> ObjectLiteral( map=$2 )"); + map.put(new Integer(126), "$e = :object :lbrace $_gen24 :rbrace -> ObjectLiteral( map=$2 )"); map.put(new Integer(118), "$e = :plus $e -> UnaryPlus( expression=$1 )"); map.put(new Integer(38), "$expression_placeholder = :expression_placeholder_start $_gen9 $e :expression_placeholder_end -> ExpressionPlaceholder( attributes=$1, expr=$2 )"); map.put(new Integer(39), "$expression_placeholder_kv = :cmd_attr_hint :identifier :equal $e -> ExpressionPlaceholderAttr( key=$1, value=$3 )"); @@ -2803,29 +2808,30 @@ private static Terminal expect(ParserContext ctx, TerminalIdentifier expecting) private static Map prefix_binding_power_e; static { Map map = new HashMap(); - map.put(25, 4000); /* $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) */ - map.put(13, 5000); /* $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) */ - map.put(24, 6000); /* $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) */ - map.put(14, 6000); /* $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) */ - map.put(65, 7000); /* $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) */ - map.put(1, 7000); /* $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) */ - map.put(4, 7000); /* $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) */ - map.put(21, 7000); /* $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) */ - map.put(9, 8000); /* $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) */ - map.put(63, 8000); /* $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) */ - map.put(3, 9000); /* $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) */ - map.put(29, 9000); /* $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) */ - map.put(5, 9000); /* $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) */ - map.put(12, 11000); /* $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall( name=$0, params=$2 ) */ - map.put(51, 12000); /* $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) */ - map.put(62, 13000); /* $e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 ) */ + map.put(49, 4000); /* $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) */ + map.put(8, 5000); /* $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) */ + map.put(56, 6000); /* $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) */ + map.put(63, 6000); /* $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) */ + map.put(37, 7000); /* $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) */ + map.put(11, 7000); /* $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) */ + map.put(2, 7000); /* $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) */ + map.put(3, 7000); /* $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) */ + map.put(12, 8000); /* $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) */ + map.put(53, 8000); /* $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) */ + map.put(34, 9000); /* $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) */ + map.put(20, 9000); /* $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) */ + map.put(22, 9000); /* $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) */ + map.put(50, 11000); /* $e = :identifier <=> :lbrace list($object_kv, :comma) :rbrace -> StructLiteral( name=$0, map=$2 ) */ + map.put(28, 12000); /* $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall( name=$0, params=$2 ) */ + map.put(61, 13000); /* $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) */ + map.put(62, 14000); /* $e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 ) */ infix_binding_power_e = Collections.unmodifiableMap(map); } static { Map map = new HashMap(); - map.put(60, 10000); /* $e = :not $e -> LogicalNot( expression=$1 ) */ - map.put(9, 10000); /* $e = :plus $e -> UnaryPlus( expression=$1 ) */ - map.put(63, 10000); /* $e = :dash $e -> UnaryNegation( expression=$1 ) */ + map.put(52, 10000); /* $e = :not $e -> LogicalNot( expression=$1 ) */ + map.put(12, 10000); /* $e = :plus $e -> UnaryPlus( expression=$1 ) */ + map.put(53, 10000); /* $e = :dash $e -> UnaryNegation( expression=$1 ) */ prefix_binding_power_e = Collections.unmodifiableMap(map); } static int get_infix_binding_power_e(int terminal_id) { @@ -2862,7 +2868,7 @@ public static ParseTree parse_e_internal(ParserContext ctx, int rbp) throws Synt return left; } private static ParseTree nud_e(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(135, "e") ); + ParseTree tree = new ParseTree( new NonTerminal(133, "e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "e"; if (current == null) { @@ -2876,7 +2882,7 @@ else if (rule_first.get(117).contains(terminal_map.get(current.getId()))) { tree.setAstTransformation(new AstTransformNodeCreator("LogicalNot", parameters)); tree.setNudMorphemeCount(2); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_NOT)); - tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(60))); + tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(52))); tree.setPrefix(true); } else if (rule_first.get(118).contains(terminal_map.get(current.getId()))) { @@ -2887,7 +2893,7 @@ else if (rule_first.get(118).contains(terminal_map.get(current.getId()))) { tree.setAstTransformation(new AstTransformNodeCreator("UnaryPlus", parameters)); tree.setNudMorphemeCount(2); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_PLUS)); - tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(9))); + tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(12))); tree.setPrefix(true); } else if (rule_first.get(119).contains(terminal_map.get(current.getId()))) { @@ -2898,42 +2904,49 @@ else if (rule_first.get(119).contains(terminal_map.get(current.getId()))) { tree.setAstTransformation(new AstTransformNodeCreator("UnaryNegation", parameters)); tree.setNudMorphemeCount(2); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DASH)); - tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(63))); + tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(53))); tree.setPrefix(true); } else if (rule_first.get(121).contains(terminal_map.get(current.getId()))) { - /* (121) $e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 ) */ + /* (121) $e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 ) */ ctx.rule = rules.get(121); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); } - else if (rule_first.get(125).contains(terminal_map.get(current.getId()))) { - /* (125) $e = :object :lbrace $_gen25 :rbrace -> ObjectLiteral( map=$2 ) */ - ctx.rule = rules.get(125); + else if (rule_first.get(123).contains(terminal_map.get(current.getId()))) { + /* (123) $e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 ) */ + ctx.rule = rules.get(123); + tree.setAstTransformation(new AstTransformSubstitution(0)); + tree.setNudMorphemeCount(1); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); + } + else if (rule_first.get(126).contains(terminal_map.get(current.getId()))) { + /* (126) $e = :object :lbrace $_gen24 :rbrace -> ObjectLiteral( map=$2 ) */ + ctx.rule = rules.get(126); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("map", 2); tree.setAstTransformation(new AstTransformNodeCreator("ObjectLiteral", parameters)); tree.setNudMorphemeCount(4); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_OBJECT)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LBRACE)); - tree.add(parse__gen25(ctx)); + tree.add(parse__gen24(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RBRACE)); } - else if (rule_first.get(126).contains(terminal_map.get(current.getId()))) { - /* (126) $e = :lsquare $_gen24 :rsquare -> ArrayLiteral( values=$1 ) */ - ctx.rule = rules.get(126); + else if (rule_first.get(127).contains(terminal_map.get(current.getId()))) { + /* (127) $e = :lsquare $_gen25 :rsquare -> ArrayLiteral( values=$1 ) */ + ctx.rule = rules.get(127); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("values", 1); tree.setAstTransformation(new AstTransformNodeCreator("ArrayLiteral", parameters)); tree.setNudMorphemeCount(3); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LSQUARE)); - tree.add(parse__gen24(ctx)); + tree.add(parse__gen25(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RSQUARE)); } - else if (rule_first.get(128).contains(terminal_map.get(current.getId()))) { - /* (128) $e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 ) */ - ctx.rule = rules.get(128); + else if (rule_first.get(129).contains(terminal_map.get(current.getId()))) { + /* (129) $e = :lbrace $_gen26 :rbrace -> MapLiteral( map=$1 ) */ + ctx.rule = rules.get(129); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("map", 1); tree.setAstTransformation(new AstTransformNodeCreator("MapLiteral", parameters)); @@ -2942,20 +2955,20 @@ else if (rule_first.get(128).contains(terminal_map.get(current.getId()))) { tree.add(parse__gen26(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RBRACE)); } - else if (rule_first.get(129).contains(terminal_map.get(current.getId()))) { - /* (129) $e = :lparen $_gen24 :rparen -> TupleLiteral( values=$1 ) */ - ctx.rule = rules.get(129); + else if (rule_first.get(130).contains(terminal_map.get(current.getId()))) { + /* (130) $e = :lparen $_gen25 :rparen -> TupleLiteral( values=$1 ) */ + ctx.rule = rules.get(130); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("values", 1); tree.setAstTransformation(new AstTransformNodeCreator("TupleLiteral", parameters)); tree.setNudMorphemeCount(3); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LPAREN)); - tree.add(parse__gen24(ctx)); + tree.add(parse__gen25(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RPAREN)); } - else if (rule_first.get(130).contains(terminal_map.get(current.getId()))) { - /* (130) $e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 ) */ - ctx.rule = rules.get(130); + else if (rule_first.get(131).contains(terminal_map.get(current.getId()))) { + /* (131) $e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 ) */ + ctx.rule = rules.get(131); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("cond", 1); parameters.put("iftrue", 3); @@ -2969,56 +2982,56 @@ else if (rule_first.get(130).contains(terminal_map.get(current.getId()))) { tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_ELSE)); tree.add(parse_e(ctx)); } - else if (rule_first.get(131).contains(terminal_map.get(current.getId()))) { - /* (131) $e = $string_literal */ - ctx.rule = rules.get(131); - tree.setAstTransformation(new AstTransformSubstitution(0)); - tree.setNudMorphemeCount(1); - tree.add(parse_string_literal(ctx)); - } else if (rule_first.get(132).contains(terminal_map.get(current.getId()))) { - /* (132) $e = :identifier */ + /* (132) $e = $string_literal */ ctx.rule = rules.get(132); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); + tree.add(parse_string_literal(ctx)); } else if (rule_first.get(133).contains(terminal_map.get(current.getId()))) { - /* (133) $e = :boolean */ + /* (133) $e = :identifier */ ctx.rule = rules.get(133); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_BOOLEAN)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_IDENTIFIER)); } else if (rule_first.get(134).contains(terminal_map.get(current.getId()))) { - /* (134) $e = :integer */ + /* (134) $e = :boolean */ ctx.rule = rules.get(134); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_INTEGER)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_BOOLEAN)); } else if (rule_first.get(135).contains(terminal_map.get(current.getId()))) { - /* (135) $e = :float */ + /* (135) $e = :integer */ ctx.rule = rules.get(135); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); - tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_FLOAT)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_INTEGER)); } else if (rule_first.get(136).contains(terminal_map.get(current.getId()))) { - /* (136) $e = :none */ + /* (136) $e = :float */ ctx.rule = rules.get(136); tree.setAstTransformation(new AstTransformSubstitution(0)); tree.setNudMorphemeCount(1); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_FLOAT)); + } + else if (rule_first.get(137).contains(terminal_map.get(current.getId()))) { + /* (137) $e = :none */ + ctx.rule = rules.get(137); + tree.setAstTransformation(new AstTransformSubstitution(0)); + tree.setNudMorphemeCount(1); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_NONE)); } return tree; } private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(135, "e") ); + ParseTree tree = new ParseTree( new NonTerminal(133, "e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "e"; int modifier; - if (current.getId() == 25) { + if (current.getId() == 49) { /* $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(104); LinkedHashMap parameters = new LinkedHashMap(); @@ -3030,10 +3043,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DOUBLE_PIPE)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(25) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(49) - modifier)); return tree; } - if (current.getId() == 13) { + if (current.getId() == 8) { /* $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(105); LinkedHashMap parameters = new LinkedHashMap(); @@ -3045,10 +3058,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DOUBLE_AMPERSAND)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(13) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(8) - modifier)); return tree; } - if (current.getId() == 24) { + if (current.getId() == 56) { /* $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(106); LinkedHashMap parameters = new LinkedHashMap(); @@ -3060,10 +3073,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DOUBLE_EQUAL)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(24) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(56) - modifier)); return tree; } - if (current.getId() == 14) { + if (current.getId() == 63) { /* $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(107); LinkedHashMap parameters = new LinkedHashMap(); @@ -3075,10 +3088,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_NOT_EQUAL)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(14) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(63) - modifier)); return tree; } - if (current.getId() == 65) { + if (current.getId() == 37) { /* $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(108); LinkedHashMap parameters = new LinkedHashMap(); @@ -3090,10 +3103,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LT)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(65) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(37) - modifier)); return tree; } - if (current.getId() == 1) { + if (current.getId() == 11) { /* $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(109); LinkedHashMap parameters = new LinkedHashMap(); @@ -3105,10 +3118,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LTEQ)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(1) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(11) - modifier)); return tree; } - if (current.getId() == 4) { + if (current.getId() == 2) { /* $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(110); LinkedHashMap parameters = new LinkedHashMap(); @@ -3120,10 +3133,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_GT)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(4) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(2) - modifier)); return tree; } - if (current.getId() == 21) { + if (current.getId() == 3) { /* $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(111); LinkedHashMap parameters = new LinkedHashMap(); @@ -3135,10 +3148,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_GTEQ)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(21) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(3) - modifier)); return tree; } - if (current.getId() == 9) { + if (current.getId() == 12) { /* $e = $e :plus $e -> Add( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(112); LinkedHashMap parameters = new LinkedHashMap(); @@ -3150,10 +3163,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_PLUS)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(9) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(12) - modifier)); return tree; } - if (current.getId() == 63) { + if (current.getId() == 53) { /* $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(113); LinkedHashMap parameters = new LinkedHashMap(); @@ -3165,10 +3178,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_DASH)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(63) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(53) - modifier)); return tree; } - if (current.getId() == 3) { + if (current.getId() == 34) { /* $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(114); LinkedHashMap parameters = new LinkedHashMap(); @@ -3180,10 +3193,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_ASTERISK)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(3) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(34) - modifier)); return tree; } - if (current.getId() == 29) { + if (current.getId() == 20) { /* $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(115); LinkedHashMap parameters = new LinkedHashMap(); @@ -3195,10 +3208,10 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_SLASH)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(29) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(20) - modifier)); return tree; } - if (current.getId() == 5) { + if (current.getId() == 22) { /* $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 ) */ ctx.rule = rules.get(116); LinkedHashMap parameters = new LinkedHashMap(); @@ -3210,25 +3223,38 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_PERCENT)); modifier = 0; tree.setInfix(true); - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(5) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(22) - modifier)); return tree; } - if (current.getId() == 12) { - /* $e = :identifier <=> :lparen $_gen24 :rparen -> FunctionCall( name=$0, params=$2 ) */ + if (current.getId() == 50) { + /* $e = :identifier <=> :lbrace $_gen24 :rbrace -> StructLiteral( name=$0, map=$2 ) */ ctx.rule = rules.get(121); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("name", 0); + parameters.put("map", 2); + tree.setAstTransformation(new AstTransformNodeCreator("StructLiteral", parameters)); + tree.add(left); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LBRACE)); + tree.add(parse__gen24(ctx)); + tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RBRACE)); + return tree; + } + if (current.getId() == 28) { + /* $e = :identifier <=> :lparen $_gen25 :rparen -> FunctionCall( name=$0, params=$2 ) */ + ctx.rule = rules.get(123); + LinkedHashMap parameters = new LinkedHashMap(); + parameters.put("name", 0); parameters.put("params", 2); tree.setAstTransformation(new AstTransformNodeCreator("FunctionCall", parameters)); tree.add(left); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LPAREN)); - tree.add(parse__gen24(ctx)); + tree.add(parse__gen25(ctx)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RPAREN)); return tree; } - if (current.getId() == 51) { + if (current.getId() == 61) { /* $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 ) */ - ctx.rule = rules.get(122); + ctx.rule = rules.get(124); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("lhs", 0); parameters.put("rhs", 2); @@ -3237,13 +3263,13 @@ private static ParseTree led_e(ParseTree left, ParserContext ctx) throws SyntaxE tree.add(left); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_LSQUARE)); modifier = 0; - tree.add(parse_e_internal(ctx, get_infix_binding_power_e(51) - modifier)); + tree.add(parse_e_internal(ctx, get_infix_binding_power_e(61) - modifier)); tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RSQUARE)); return tree; } if (current.getId() == 62) { /* $e = $e <=> :dot :identifier -> MemberAccess( value=$0, member=$2 ) */ - ctx.rule = rules.get(123); + ctx.rule = rules.get(125); LinkedHashMap parameters = new LinkedHashMap(); parameters.put("value", 0); parameters.put("member", 2); @@ -3300,7 +3326,7 @@ public static ParseTree parse_meta_value_internal(ParserContext ctx, int rbp) th return left; } private static ParseTree nud_meta_value(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(113, "meta_value") ); + ParseTree tree = new ParseTree( new NonTerminal(129, "meta_value") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "meta_value"; if (current == null) { @@ -3366,7 +3392,7 @@ else if (rule_first.get(97).contains(terminal_map.get(current.getId()))) { return tree; } private static ParseTree led_meta_value(ParseTree left, ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(113, "meta_value") ); + ParseTree tree = new ParseTree( new NonTerminal(129, "meta_value") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "meta_value"; int modifier; @@ -3376,9 +3402,9 @@ private static ParseTree led_meta_value(ParseTree left, ParserContext ctx) throw private static Map prefix_binding_power_type_e; static { Map map = new HashMap(); - map.put(51, 1000); /* $type_e = :type <=> :lsquare list($type_e, :comma) :rsquare -> Type( name=$0, subtype=$2 ) */ - map.put(57, 2000); /* $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) */ - map.put(9, 3000); /* $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) */ + map.put(61, 1000); /* $type_e = :type <=> :lsquare list($type_e, :comma) :rsquare -> Type( name=$0, subtype=$2 ) */ + map.put(9, 2000); /* $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) */ + map.put(12, 3000); /* $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) */ infix_binding_power_type_e = Collections.unmodifiableMap(map); } static { @@ -3419,7 +3445,7 @@ public static ParseTree parse_type_e_internal(ParserContext ctx, int rbp) throws return left; } private static ParseTree nud_type_e(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(101, "type_e") ); + ParseTree tree = new ParseTree( new NonTerminal(79, "type_e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "type_e"; if (current == null) { @@ -3463,11 +3489,11 @@ else if (rule_first.get(103).contains(terminal_map.get(current.getId()))) { return tree; } private static ParseTree led_type_e(ParseTree left, ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree( new NonTerminal(101, "type_e") ); + ParseTree tree = new ParseTree( new NonTerminal(79, "type_e") ); Terminal current = ctx.tokens.current(); ctx.nonterminal = "type_e"; int modifier; - if (current.getId() == 51) { + if (current.getId() == 61) { /* $type_e = :type <=> :lsquare $_gen23 :rsquare -> Type( name=$0, subtype=$2 ) */ ctx.rule = rules.get(99); LinkedHashMap parameters = new LinkedHashMap(); @@ -3480,7 +3506,7 @@ private static ParseTree led_type_e(ParseTree left, ParserContext ctx) throws Sy tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_RSQUARE)); return tree; } - if (current.getId() == 57) { + if (current.getId() == 9) { /* $type_e = :type <=> :qmark -> OptionalType( innerType=$0 ) */ ctx.rule = rules.get(100); LinkedHashMap parameters = new LinkedHashMap(); @@ -3490,7 +3516,7 @@ private static ParseTree led_type_e(ParseTree left, ParserContext ctx) throws Sy tree.add(expect(ctx, WdlTerminalIdentifier.TERMINAL_QMARK)); return tree; } - if (current.getId() == 9) { + if (current.getId() == 12) { /* $type_e = :type <=> :plus -> NonEmptyType( innerType=$0 ) */ ctx.rule = rules.get(101); LinkedHashMap parameters = new LinkedHashMap(); @@ -3507,12 +3533,12 @@ public ParseTree parse__gen0(List tokens, SyntaxErrorFormatter error_f return parse__gen0(ctx); } private static ParseTree parse__gen0(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(96, "_gen0")); + ParseTree tree = new ParseTree(new NonTerminal(81, "_gen0")); tree.setList(true); ctx.nonterminal = "_gen0"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(96).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(96).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(81).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(81).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3521,7 +3547,7 @@ private static ParseTree parse__gen0(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(96).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(81).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_import(ctx)); ctx.nonterminal = "_gen0"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3533,12 +3559,12 @@ public ParseTree parse__gen1(List tokens, SyntaxErrorFormatter error_f return parse__gen1(ctx); } private static ParseTree parse__gen1(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(98, "_gen1")); + ParseTree tree = new ParseTree(new NonTerminal(77, "_gen1")); tree.setList(true); ctx.nonterminal = "_gen1"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(98).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(98).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(77).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(77).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3547,7 +3573,7 @@ private static ParseTree parse__gen1(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(98).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(77).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_file_body_element(ctx)); ctx.nonterminal = "_gen1"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3559,12 +3585,12 @@ public ParseTree parse__gen10(List tokens, SyntaxErrorFormatter error_ return parse__gen10(ctx); } private static ParseTree parse__gen10(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(121, "_gen10")); + ParseTree tree = new ParseTree(new NonTerminal(124, "_gen10")); tree.setList(true); ctx.nonterminal = "_gen10"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(121).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(121).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(124).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(124).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3573,7 +3599,7 @@ private static ParseTree parse__gen10(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(121).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(124).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_input_declaration(ctx)); ctx.nonterminal = "_gen10"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3585,12 +3611,12 @@ public ParseTree parse__gen11(List tokens, SyntaxErrorFormatter error_ return parse__gen11(ctx); } private static ParseTree parse__gen11(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(74, "_gen11")); + ParseTree tree = new ParseTree(new NonTerminal(97, "_gen11")); tree.setList(true); ctx.nonterminal = "_gen11"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(74).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(74).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(97).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(97).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3599,7 +3625,7 @@ private static ParseTree parse__gen11(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(74).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(97).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_kv(ctx)); ctx.nonterminal = "_gen11"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3611,12 +3637,12 @@ public ParseTree parse__gen12(List tokens, SyntaxErrorFormatter error_ return parse__gen12(ctx); } private static ParseTree parse__gen12(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(110, "_gen12")); + ParseTree tree = new ParseTree(new NonTerminal(106, "_gen12")); tree.setList(true); ctx.nonterminal = "_gen12"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(110).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(110).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(106).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(106).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3625,7 +3651,7 @@ private static ParseTree parse__gen12(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(110).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(106).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_meta_kv(ctx)); ctx.nonterminal = "_gen12"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3637,12 +3663,12 @@ public ParseTree parse__gen14(List tokens, SyntaxErrorFormatter error_ return parse__gen14(ctx); } private static ParseTree parse__gen14(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(67, "_gen14")); + ParseTree tree = new ParseTree(new NonTerminal(119, "_gen14")); tree.setList(true); ctx.nonterminal = "_gen14"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(67).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(67).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(119).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(119).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3651,7 +3677,7 @@ private static ParseTree parse__gen14(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(67).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(119).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_output_kv(ctx)); ctx.nonterminal = "_gen14"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3663,12 +3689,12 @@ public ParseTree parse__gen15(List tokens, SyntaxErrorFormatter error_ return parse__gen15(ctx); } private static ParseTree parse__gen15(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(123, "_gen15")); + ParseTree tree = new ParseTree(new NonTerminal(98, "_gen15")); tree.setList(true); ctx.nonterminal = "_gen15"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(123).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(123).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(98).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(98).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3677,7 +3703,7 @@ private static ParseTree parse__gen15(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(123).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(98).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_wf_body_element(ctx)); ctx.nonterminal = "_gen15"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3689,12 +3715,12 @@ public ParseTree parse__gen17(List tokens, SyntaxErrorFormatter error_ return parse__gen17(ctx); } private static ParseTree parse__gen17(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(132, "_gen17")); + ParseTree tree = new ParseTree(new NonTerminal(135, "_gen17")); tree.setList(true); ctx.nonterminal = "_gen17"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(132).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(132).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(135).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(135).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3703,7 +3729,7 @@ private static ParseTree parse__gen17(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(132).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(135).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_call_after(ctx)); ctx.nonterminal = "_gen17"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3715,12 +3741,12 @@ public ParseTree parse__gen2(List tokens, SyntaxErrorFormatter error_f return parse__gen2(ctx); } private static ParseTree parse__gen2(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(140, "_gen2")); + ParseTree tree = new ParseTree(new NonTerminal(131, "_gen2")); tree.setList(true); ctx.nonterminal = "_gen2"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(140).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(140).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(131).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(131).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3729,7 +3755,7 @@ private static ParseTree parse__gen2(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(140).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(131).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_struct_declaration(ctx)); ctx.nonterminal = "_gen2"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -3741,13 +3767,13 @@ public ParseTree parse__gen20(List tokens, SyntaxErrorFormatter error_ return parse__gen20(ctx); } private static ParseTree parse__gen20(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(119, "_gen20")); + ParseTree tree = new ParseTree(new NonTerminal(110, "_gen20")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen20"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(119).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(119).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(110).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(110).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3756,7 +3782,7 @@ private static ParseTree parse__gen20(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(119).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(110).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_input_kv(ctx)); ctx.nonterminal = "_gen20"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3782,13 +3808,13 @@ public ParseTree parse__gen21(List tokens, SyntaxErrorFormatter error_ return parse__gen21(ctx); } private static ParseTree parse__gen21(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(104, "_gen21")); + ParseTree tree = new ParseTree(new NonTerminal(140, "_gen21")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen21"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(104).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(104).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(140).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(140).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3797,7 +3823,7 @@ private static ParseTree parse__gen21(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(104).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(140).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_meta_value(ctx)); ctx.nonterminal = "_gen21"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3823,13 +3849,13 @@ public ParseTree parse__gen22(List tokens, SyntaxErrorFormatter error_ return parse__gen22(ctx); } private static ParseTree parse__gen22(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(89, "_gen22")); + ParseTree tree = new ParseTree(new NonTerminal(102, "_gen22")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen22"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(89).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(89).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(102).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(102).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3838,7 +3864,7 @@ private static ParseTree parse__gen22(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(89).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(102).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_meta_kv(ctx)); ctx.nonterminal = "_gen22"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3864,13 +3890,13 @@ public ParseTree parse__gen23(List tokens, SyntaxErrorFormatter error_ return parse__gen23(ctx); } private static ParseTree parse__gen23(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(129, "_gen23")); + ParseTree tree = new ParseTree(new NonTerminal(85, "_gen23")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen23"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(129).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(129).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(85).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(85).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3879,7 +3905,7 @@ private static ParseTree parse__gen23(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(129).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(85).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_type_e(ctx)); ctx.nonterminal = "_gen23"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -3905,13 +3931,13 @@ public ParseTree parse__gen24(List tokens, SyntaxErrorFormatter error_ return parse__gen24(ctx); } private static ParseTree parse__gen24(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(127, "_gen24")); + ParseTree tree = new ParseTree(new NonTerminal(90, "_gen24")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen24"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(127).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(127).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(90).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(90).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3920,8 +3946,8 @@ private static ParseTree parse__gen24(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(127).contains(terminal_map.get(ctx.tokens.current().getId())))) { - tree.add(parse_e(ctx)); + nonterminal_first.get(90).contains(terminal_map.get(ctx.tokens.current().getId())))) { + tree.add(parse_object_kv(ctx)); ctx.nonterminal = "_gen24"; // because parse_* can reset this if (ctx.tokens.current() != null && ctx.tokens.current().getId() == WdlTerminalIdentifier.TERMINAL_COMMA.id()) { @@ -3946,13 +3972,13 @@ public ParseTree parse__gen25(List tokens, SyntaxErrorFormatter error_ return parse__gen25(ctx); } private static ParseTree parse__gen25(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(80, "_gen25")); + ParseTree tree = new ParseTree(new NonTerminal(109, "_gen25")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen25"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(80).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(80).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -3961,8 +3987,8 @@ private static ParseTree parse__gen25(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(80).contains(terminal_map.get(ctx.tokens.current().getId())))) { - tree.add(parse_object_kv(ctx)); + nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())))) { + tree.add(parse_e(ctx)); ctx.nonterminal = "_gen25"; // because parse_* can reset this if (ctx.tokens.current() != null && ctx.tokens.current().getId() == WdlTerminalIdentifier.TERMINAL_COMMA.id()) { @@ -3987,13 +4013,13 @@ public ParseTree parse__gen26(List tokens, SyntaxErrorFormatter error_ return parse__gen26(ctx); } private static ParseTree parse__gen26(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(92, "_gen26")); + ParseTree tree = new ParseTree(new NonTerminal(118, "_gen26")); tree.setList(true); - tree.setListSeparator(38); + tree.setListSeparator(4); ctx.nonterminal = "_gen26"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(92).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(92).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(118).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(118).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4002,7 +4028,7 @@ private static ParseTree parse__gen26(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(92).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(118).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_map_kv(ctx)); ctx.nonterminal = "_gen26"; // because parse_* can reset this if (ctx.tokens.current() != null && @@ -4028,12 +4054,12 @@ public ParseTree parse__gen3(List tokens, SyntaxErrorFormatter error_f return parse__gen3(ctx); } private static ParseTree parse__gen3(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(109, "_gen3")); + ParseTree tree = new ParseTree(new NonTerminal(74, "_gen3")); tree.setList(true); ctx.nonterminal = "_gen3"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(109).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(74).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(74).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4042,7 +4068,7 @@ private static ParseTree parse__gen3(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(109).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(74).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_static_string_piece(ctx)); ctx.nonterminal = "_gen3"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4054,12 +4080,12 @@ public ParseTree parse__gen4(List tokens, SyntaxErrorFormatter error_f return parse__gen4(ctx); } private static ParseTree parse__gen4(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(141, "_gen4")); + ParseTree tree = new ParseTree(new NonTerminal(112, "_gen4")); tree.setList(true); ctx.nonterminal = "_gen4"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(141).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(141).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(112).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(112).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4068,7 +4094,7 @@ private static ParseTree parse__gen4(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(141).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(112).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_string_piece(ctx)); ctx.nonterminal = "_gen4"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4080,12 +4106,12 @@ public ParseTree parse__gen6(List tokens, SyntaxErrorFormatter error_f return parse__gen6(ctx); } private static ParseTree parse__gen6(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(124, "_gen6")); + ParseTree tree = new ParseTree(new NonTerminal(82, "_gen6")); tree.setList(true); ctx.nonterminal = "_gen6"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(124).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(124).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(82).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(82).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4094,7 +4120,7 @@ private static ParseTree parse__gen6(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(124).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(82).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_import_alias(ctx)); ctx.nonterminal = "_gen6"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4106,12 +4132,12 @@ public ParseTree parse__gen7(List tokens, SyntaxErrorFormatter error_f return parse__gen7(ctx); } private static ParseTree parse__gen7(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(120, "_gen7")); + ParseTree tree = new ParseTree(new NonTerminal(87, "_gen7")); tree.setList(true); ctx.nonterminal = "_gen7"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(120).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(120).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(87).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(87).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4120,7 +4146,7 @@ private static ParseTree parse__gen7(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(120).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(87).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_task_sections(ctx)); ctx.nonterminal = "_gen7"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4132,12 +4158,12 @@ public ParseTree parse__gen8(List tokens, SyntaxErrorFormatter error_f return parse__gen8(ctx); } private static ParseTree parse__gen8(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(100, "_gen8")); + ParseTree tree = new ParseTree(new NonTerminal(83, "_gen8")); tree.setList(true); ctx.nonterminal = "_gen8"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(100).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(100).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(83).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(83).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4146,7 +4172,7 @@ private static ParseTree parse__gen8(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(100).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(83).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_command_part(ctx)); ctx.nonterminal = "_gen8"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4158,12 +4184,12 @@ public ParseTree parse__gen9(List tokens, SyntaxErrorFormatter error_f return parse__gen9(ctx); } private static ParseTree parse__gen9(ParserContext ctx) throws SyntaxError { - ParseTree tree = new ParseTree(new NonTerminal(73, "_gen9")); + ParseTree tree = new ParseTree(new NonTerminal(75, "_gen9")); tree.setList(true); ctx.nonterminal = "_gen9"; if ( ctx.tokens.current() != null && - !nonterminal_first.get(73).contains(terminal_map.get(ctx.tokens.current().getId())) && - nonterminal_follow.get(73).contains(terminal_map.get(ctx.tokens.current().getId())) ) { + !nonterminal_first.get(75).contains(terminal_map.get(ctx.tokens.current().getId())) && + nonterminal_follow.get(75).contains(terminal_map.get(ctx.tokens.current().getId())) ) { return tree; } if (ctx.tokens.current() == null) { @@ -4172,7 +4198,7 @@ private static ParseTree parse__gen9(ParserContext ctx) throws SyntaxError { int minimum = 0; while (minimum > 0 || (ctx.tokens.current() != null && - nonterminal_first.get(73).contains(terminal_map.get(ctx.tokens.current().getId())))) { + nonterminal_first.get(75).contains(terminal_map.get(ctx.tokens.current().getId())))) { tree.add(parse_expression_placeholder_kv(ctx)); ctx.nonterminal = "_gen9"; // because parse_* can reset this minimum = Math.max(minimum - 1, 0); @@ -4187,12 +4213,12 @@ private static ParseTree parse__gen13(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[3][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(70, "_gen13")); + int rule = (current != null) ? table[34][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(101, "_gen13")); ctx.nonterminal = "_gen13"; if ( current != null && - !nonterminal_first.get(70).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(70).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(101).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(101).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4216,12 +4242,12 @@ private static ParseTree parse__gen16(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[14][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(81, "_gen16")); + int rule = (current != null) ? table[28][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(95, "_gen16")); ctx.nonterminal = "_gen16"; if ( current != null && - !nonterminal_first.get(81).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(81).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(95).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(95).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4245,12 +4271,12 @@ private static ParseTree parse__gen18(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[11][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(78, "_gen18")); + int rule = (current != null) ? table[33][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(100, "_gen18")); ctx.nonterminal = "_gen18"; if ( current != null && - !nonterminal_first.get(78).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(78).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(100).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(100).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4274,12 +4300,12 @@ private static ParseTree parse__gen19(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[50][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(117, "_gen19")); + int rule = (current != null) ? table[40][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(107, "_gen19")); ctx.nonterminal = "_gen19"; if ( current != null && - !nonterminal_first.get(117).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(117).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(107).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(107).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4303,12 +4329,12 @@ private static ParseTree parse__gen5(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[55][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(122, "_gen5")); + int rule = (current != null) ? table[59][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(126, "_gen5")); ctx.nonterminal = "_gen5"; if ( current != null && - !nonterminal_first.get(122).contains(terminal_map.get(current.getId())) && - nonterminal_follow.get(122).contains(terminal_map.get(current.getId())) ) { + !nonterminal_first.get(126).contains(terminal_map.get(current.getId())) && + nonterminal_follow.get(126).contains(terminal_map.get(current.getId())) ) { return tree; } if (current == null) { @@ -4332,14 +4358,14 @@ private static ParseTree parse_alias(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[49][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(116, "alias")); + int rule = (current != null) ? table[17][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(84, "alias")); ctx.nonterminal = "alias"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "alias", - nonterminal_first.get(116), - nonterminal_rules.get(116) + nonterminal_first.get(84), + nonterminal_rules.get(84) )); } if (rule == 81) { @@ -4355,7 +4381,7 @@ private static ParseTree parse_alias(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "alias", current, - nonterminal_first.get(116), + nonterminal_first.get(84), rules.get(81) )); } @@ -4367,14 +4393,14 @@ private static ParseTree parse_call(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[8][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(75, "call")); + int rule = (current != null) ? table[37][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(104, "call")); ctx.nonterminal = "call"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call", - nonterminal_first.get(75), - nonterminal_rules.get(75) + nonterminal_first.get(104), + nonterminal_rules.get(104) )); } if (rule == 75) { @@ -4401,7 +4427,7 @@ private static ParseTree parse_call(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call", current, - nonterminal_first.get(75), + nonterminal_first.get(104), rules.get(75) )); } @@ -4413,14 +4439,14 @@ private static ParseTree parse_call_after(ParserContext ctx) throws SyntaxError Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[61][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(128, "call_after")); + int rule = (current != null) ? table[63][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(130, "call_after")); ctx.nonterminal = "call_after"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call_after", - nonterminal_first.get(128), - nonterminal_rules.get(128) + nonterminal_first.get(130), + nonterminal_rules.get(130) )); } if (rule == 82) { @@ -4436,7 +4462,7 @@ private static ParseTree parse_call_after(ParserContext ctx) throws SyntaxError throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call_after", current, - nonterminal_first.get(128), + nonterminal_first.get(130), rules.get(82) )); } @@ -4448,14 +4474,14 @@ private static ParseTree parse_call_body(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[69][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(136, "call_body")); + int rule = (current != null) ? table[71][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(138, "call_body")); ctx.nonterminal = "call_body"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call_body", - nonterminal_first.get(136), - nonterminal_rules.get(136) + nonterminal_first.get(138), + nonterminal_rules.get(138) )); } if (rule == 80) { @@ -4475,7 +4501,7 @@ private static ParseTree parse_call_body(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call_body", current, - nonterminal_first.get(136), + nonterminal_first.get(138), rules.get(80) )); } @@ -4487,14 +4513,14 @@ private static ParseTree parse_call_brace_block(ParserContext ctx) throws Syntax Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[38][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(105, "call_brace_block")); + int rule = (current != null) ? table[4][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(71, "call_brace_block")); ctx.nonterminal = "call_brace_block"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "call_brace_block", - nonterminal_first.get(105), - nonterminal_rules.get(105) + nonterminal_first.get(71), + nonterminal_rules.get(71) )); } if (rule == 78) { @@ -4512,7 +4538,7 @@ private static ParseTree parse_call_brace_block(ParserContext ctx) throws Syntax throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "call_brace_block", current, - nonterminal_first.get(105), + nonterminal_first.get(71), rules.get(78) )); } @@ -4524,14 +4550,14 @@ private static ParseTree parse_command(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[28][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(95, "command")); + int rule = (current != null) ? table[46][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(113, "command")); ctx.nonterminal = "command"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "command", - nonterminal_first.get(95), - nonterminal_rules.get(95) + nonterminal_first.get(113), + nonterminal_rules.get(113) )); } if (rule == 34) { @@ -4553,7 +4579,7 @@ private static ParseTree parse_command(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "command", current, - nonterminal_first.get(95), + nonterminal_first.get(113), rules.get(34) )); } @@ -4565,14 +4591,14 @@ private static ParseTree parse_command_part(ParserContext ctx) throws SyntaxErro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[21][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(88, "command_part")); + int rule = (current != null) ? table[24][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(91, "command_part")); ctx.nonterminal = "command_part"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "command_part", - nonterminal_first.get(88), - nonterminal_rules.get(88) + nonterminal_first.get(91), + nonterminal_rules.get(91) )); } if (rule == 35) { @@ -4594,7 +4620,7 @@ else if (rule == 36) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "command_part", current, - nonterminal_first.get(88), + nonterminal_first.get(91), rules.get(36) )); } @@ -4606,14 +4632,14 @@ private static ParseTree parse_declaration(ParserContext ctx) throws SyntaxError Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[72][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(139, "declaration")); + int rule = (current != null) ? table[26][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(93, "declaration")); ctx.nonterminal = "declaration"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "declaration", - nonterminal_first.get(139), - nonterminal_rules.get(139) + nonterminal_first.get(93), + nonterminal_rules.get(93) )); } if (rule == 54) { @@ -4635,7 +4661,7 @@ private static ParseTree parse_declaration(ParserContext ctx) throws SyntaxError throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "declaration", current, - nonterminal_first.get(139), + nonterminal_first.get(93), rules.get(54) )); } @@ -4647,14 +4673,14 @@ private static ParseTree parse_document(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[63][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(130, "document")); + int rule = (current != null) ? table[74][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(141, "document")); ctx.nonterminal = "document"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "document", - nonterminal_first.get(130), - nonterminal_rules.get(130) + nonterminal_first.get(141), + nonterminal_rules.get(141) )); } if (rule == 2) { @@ -4676,7 +4702,7 @@ private static ParseTree parse_document(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "document", current, - nonterminal_first.get(130), + nonterminal_first.get(141), rules.get(2) )); } @@ -4688,14 +4714,14 @@ private static ParseTree parse_expression_placeholder(ParserContext ctx) throws Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[66][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(133, "expression_placeholder")); + int rule = (current != null) ? table[32][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(99, "expression_placeholder")); ctx.nonterminal = "expression_placeholder"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "expression_placeholder", - nonterminal_first.get(133), - nonterminal_rules.get(133) + nonterminal_first.get(99), + nonterminal_rules.get(99) )); } if (rule == 38) { @@ -4718,7 +4744,7 @@ private static ParseTree parse_expression_placeholder(ParserContext ctx) throws throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "expression_placeholder", current, - nonterminal_first.get(133), + nonterminal_first.get(99), rules.get(38) )); } @@ -4730,14 +4756,14 @@ private static ParseTree parse_expression_placeholder_kv(ParserContext ctx) thro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[20][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(87, "expression_placeholder_kv")); + int rule = (current != null) ? table[25][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(92, "expression_placeholder_kv")); ctx.nonterminal = "expression_placeholder_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "expression_placeholder_kv", - nonterminal_first.get(87), - nonterminal_rules.get(87) + nonterminal_first.get(92), + nonterminal_rules.get(92) )); } if (rule == 39) { @@ -4760,7 +4786,7 @@ private static ParseTree parse_expression_placeholder_kv(ParserContext ctx) thro throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "expression_placeholder_kv", current, - nonterminal_first.get(87), + nonterminal_first.get(92), rules.get(39) )); } @@ -4772,14 +4798,14 @@ private static ParseTree parse_file_body_element(ParserContext ctx) throws Synta Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[67][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(134, "file_body_element")); + int rule = (current != null) ? table[27][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(94, "file_body_element")); ctx.nonterminal = "file_body_element"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "file_body_element", - nonterminal_first.get(134), - nonterminal_rules.get(134) + nonterminal_first.get(94), + nonterminal_rules.get(94) )); } if (rule == 3) { @@ -4809,7 +4835,7 @@ else if (rule == 5) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "file_body_element", current, - nonterminal_first.get(134), + nonterminal_first.get(94), rules.get(5) )); } @@ -4821,14 +4847,14 @@ private static ParseTree parse_if_stmt(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[2][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(69, "if_stmt")); + int rule = (current != null) ? table[36][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(103, "if_stmt")); ctx.nonterminal = "if_stmt"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "if_stmt", - nonterminal_first.get(69), - nonterminal_rules.get(69) + nonterminal_first.get(103), + nonterminal_rules.get(103) )); } if (rule == 85) { @@ -4857,7 +4883,7 @@ private static ParseTree parse_if_stmt(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "if_stmt", current, - nonterminal_first.get(69), + nonterminal_first.get(103), rules.get(85) )); } @@ -4869,14 +4895,14 @@ private static ParseTree parse_import(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[19][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(86, "import")); + int rule = (current != null) ? table[38][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(105, "import")); ctx.nonterminal = "import"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "import", - nonterminal_first.get(86), - nonterminal_rules.get(86) + nonterminal_first.get(105), + nonterminal_rules.get(105) )); } if (rule == 21) { @@ -4900,7 +4926,7 @@ private static ParseTree parse_import(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "import", current, - nonterminal_first.get(86), + nonterminal_first.get(105), rules.get(21) )); } @@ -4912,14 +4938,14 @@ private static ParseTree parse_import_alias(ParserContext ctx) throws SyntaxErro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[15][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(82, "import_alias")); + int rule = (current != null) ? table[50][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(117, "import_alias")); ctx.nonterminal = "import_alias"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "import_alias", - nonterminal_first.get(82), - nonterminal_rules.get(82) + nonterminal_first.get(117), + nonterminal_rules.get(117) )); } if (rule == 23) { @@ -4942,7 +4968,7 @@ private static ParseTree parse_import_alias(ParserContext ctx) throws SyntaxErro throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "import_alias", current, - nonterminal_first.get(82), + nonterminal_first.get(117), rules.get(23) )); } @@ -4954,14 +4980,14 @@ private static ParseTree parse_import_namespace(ParserContext ctx) throws Syntax Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[24][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(91, "import_namespace")); + int rule = (current != null) ? table[21][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(88, "import_namespace")); ctx.nonterminal = "import_namespace"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "import_namespace", - nonterminal_first.get(91), - nonterminal_rules.get(91) + nonterminal_first.get(88), + nonterminal_rules.get(88) )); } if (rule == 22) { @@ -4977,7 +5003,7 @@ private static ParseTree parse_import_namespace(ParserContext ctx) throws Syntax throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "import_namespace", current, - nonterminal_first.get(91), + nonterminal_first.get(88), rules.get(22) )); } @@ -4989,14 +5015,14 @@ private static ParseTree parse_input_declaration(ParserContext ctx) throws Synta Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[58][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(125, "input_declaration")); + int rule = (current != null) ? table[56][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(123, "input_declaration")); ctx.nonterminal = "input_declaration"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "input_declaration", - nonterminal_first.get(125), - nonterminal_rules.get(125) + nonterminal_first.get(123), + nonterminal_rules.get(123) )); } if (rule == 53) { @@ -5018,7 +5044,7 @@ private static ParseTree parse_input_declaration(ParserContext ctx) throws Synta throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "input_declaration", current, - nonterminal_first.get(125), + nonterminal_first.get(123), rules.get(53) )); } @@ -5030,14 +5056,14 @@ private static ParseTree parse_input_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[9][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(76, "input_kv")); + int rule = (current != null) ? table[5][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(72, "input_kv")); ctx.nonterminal = "input_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "input_kv", - nonterminal_first.get(76), - nonterminal_rules.get(76) + nonterminal_first.get(72), + nonterminal_rules.get(72) )); } if (rule == 88) { @@ -5058,7 +5084,7 @@ private static ParseTree parse_input_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "input_kv", current, - nonterminal_first.get(76), + nonterminal_first.get(72), rules.get(88) )); } @@ -5070,14 +5096,14 @@ private static ParseTree parse_inputs(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[16][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(83, "inputs")); + int rule = (current != null) ? table[22][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(89, "inputs")); ctx.nonterminal = "inputs"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "inputs", - nonterminal_first.get(83), - nonterminal_rules.get(83) + nonterminal_first.get(89), + nonterminal_rules.get(89) )); } if (rule == 41) { @@ -5099,7 +5125,7 @@ private static ParseTree parse_inputs(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "inputs", current, - nonterminal_first.get(83), + nonterminal_first.get(89), rules.get(41) )); } @@ -5111,14 +5137,14 @@ private static ParseTree parse_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[12][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(79, "kv")); + int rule = (current != null) ? table[70][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(137, "kv")); ctx.nonterminal = "kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "kv", - nonterminal_first.get(79), - nonterminal_rules.get(79) + nonterminal_first.get(137), + nonterminal_rules.get(137) )); } if (rule == 45) { @@ -5139,7 +5165,7 @@ private static ParseTree parse_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "kv", current, - nonterminal_first.get(79), + nonterminal_first.get(137), rules.get(45) )); } @@ -5151,14 +5177,14 @@ private static ParseTree parse_map_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[18][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(85, "map_kv")); + int rule = (current != null) ? table[72][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(139, "map_kv")); ctx.nonterminal = "map_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "map_kv", - nonterminal_first.get(85), - nonterminal_rules.get(85) + nonterminal_first.get(139), + nonterminal_rules.get(139) )); } if (rule == 56) { @@ -5179,7 +5205,7 @@ private static ParseTree parse_map_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "map_kv", current, - nonterminal_first.get(85), + nonterminal_first.get(139), rules.get(56) )); } @@ -5191,14 +5217,14 @@ private static ParseTree parse_meta(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[59][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(126, "meta")); + int rule = (current != null) ? table[65][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(132, "meta")); ctx.nonterminal = "meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "meta", - nonterminal_first.get(126), - nonterminal_rules.get(126) + nonterminal_first.get(132), + nonterminal_rules.get(132) )); } if (rule == 46) { @@ -5216,7 +5242,7 @@ private static ParseTree parse_meta(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "meta", current, - nonterminal_first.get(126), + nonterminal_first.get(132), rules.get(46) )); } @@ -5228,14 +5254,14 @@ private static ParseTree parse_meta_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[10][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(77, "meta_kv")); + int rule = (current != null) ? table[6][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(73, "meta_kv")); ctx.nonterminal = "meta_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "meta_kv", - nonterminal_first.get(77), - nonterminal_rules.get(77) + nonterminal_first.get(73), + nonterminal_rules.get(73) )); } if (rule == 50) { @@ -5256,7 +5282,7 @@ private static ParseTree parse_meta_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "meta_kv", current, - nonterminal_first.get(77), + nonterminal_first.get(73), rules.get(50) )); } @@ -5268,14 +5294,14 @@ private static ParseTree parse_meta_map(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[48][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(115, "meta_map")); + int rule = (current != null) ? table[41][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(108, "meta_map")); ctx.nonterminal = "meta_map"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "meta_map", - nonterminal_first.get(115), - nonterminal_rules.get(115) + nonterminal_first.get(108), + nonterminal_rules.get(108) )); } if (rule == 49) { @@ -5293,7 +5319,7 @@ private static ParseTree parse_meta_map(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "meta_map", current, - nonterminal_first.get(115), + nonterminal_first.get(108), rules.get(49) )); } @@ -5305,14 +5331,14 @@ private static ParseTree parse_object_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[47][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(114, "object_kv")); + int rule = (current != null) ? table[13][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(80, "object_kv")); ctx.nonterminal = "object_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "object_kv", - nonterminal_first.get(114), - nonterminal_rules.get(114) + nonterminal_first.get(80), + nonterminal_rules.get(80) )); } if (rule == 87) { @@ -5333,7 +5359,7 @@ private static ParseTree parse_object_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "object_kv", current, - nonterminal_first.get(114), + nonterminal_first.get(80), rules.get(87) )); } @@ -5345,14 +5371,14 @@ private static ParseTree parse_output_kv(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[40][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(107, "output_kv")); + int rule = (current != null) ? table[58][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(125, "output_kv")); ctx.nonterminal = "output_kv"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "output_kv", - nonterminal_first.get(107), - nonterminal_rules.get(107) + nonterminal_first.get(125), + nonterminal_rules.get(125) )); } if (rule == 59) { @@ -5376,7 +5402,7 @@ private static ParseTree parse_output_kv(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "output_kv", current, - nonterminal_first.get(107), + nonterminal_first.get(125), rules.get(59) )); } @@ -5388,14 +5414,14 @@ private static ParseTree parse_outputs(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[44][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(111, "outputs")); + int rule = (current != null) ? table[3][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(70, "outputs")); ctx.nonterminal = "outputs"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "outputs", - nonterminal_first.get(111), - nonterminal_rules.get(111) + nonterminal_first.get(70), + nonterminal_rules.get(70) )); } if (rule == 58) { @@ -5417,7 +5443,7 @@ private static ParseTree parse_outputs(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "outputs", current, - nonterminal_first.get(111), + nonterminal_first.get(70), rules.get(58) )); } @@ -5429,14 +5455,14 @@ private static ParseTree parse_parameter_meta(ParserContext ctx) throws SyntaxEr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[5][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(72, "parameter_meta")); + int rule = (current != null) ? table[47][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(114, "parameter_meta")); ctx.nonterminal = "parameter_meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "parameter_meta", - nonterminal_first.get(72), - nonterminal_rules.get(72) + nonterminal_first.get(114), + nonterminal_rules.get(114) )); } if (rule == 47) { @@ -5454,7 +5480,7 @@ private static ParseTree parse_parameter_meta(ParserContext ctx) throws SyntaxEr throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "parameter_meta", current, - nonterminal_first.get(72), + nonterminal_first.get(114), rules.get(47) )); } @@ -5466,14 +5492,14 @@ private static ParseTree parse_rt_map(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[26][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(93, "rt_map")); + int rule = (current != null) ? table[0][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(67, "rt_map")); ctx.nonterminal = "rt_map"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "rt_map", - nonterminal_first.get(93), - nonterminal_rules.get(93) + nonterminal_first.get(67), + nonterminal_rules.get(67) )); } if (rule == 44) { @@ -5491,7 +5517,7 @@ private static ParseTree parse_rt_map(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "rt_map", current, - nonterminal_first.get(93), + nonterminal_first.get(67), rules.get(44) )); } @@ -5503,14 +5529,14 @@ private static ParseTree parse_runtime(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[64][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(131, "runtime")); + int rule = (current != null) ? table[61][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(128, "runtime")); ctx.nonterminal = "runtime"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "runtime", - nonterminal_first.get(131), - nonterminal_rules.get(131) + nonterminal_first.get(128), + nonterminal_rules.get(128) )); } if (rule == 42) { @@ -5528,7 +5554,7 @@ private static ParseTree parse_runtime(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "runtime", current, - nonterminal_first.get(131), + nonterminal_first.get(128), rules.get(42) )); } @@ -5540,14 +5566,14 @@ private static ParseTree parse_scatter(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[36][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(103, "scatter")); + int rule = (current != null) ? table[48][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(115, "scatter")); ctx.nonterminal = "scatter"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "scatter", - nonterminal_first.get(103), - nonterminal_rules.get(103) + nonterminal_first.get(115), + nonterminal_rules.get(115) )); } if (rule == 86) { @@ -5581,7 +5607,7 @@ private static ParseTree parse_scatter(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "scatter", current, - nonterminal_first.get(103), + nonterminal_first.get(115), rules.get(86) )); } @@ -5593,14 +5619,14 @@ private static ParseTree parse_setter(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[32][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(99, "setter")); + int rule = (current != null) ? table[69][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(136, "setter")); ctx.nonterminal = "setter"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "setter", - nonterminal_first.get(99), - nonterminal_rules.get(99) + nonterminal_first.get(136), + nonterminal_rules.get(136) )); } if (rule == 55) { @@ -5616,7 +5642,7 @@ private static ParseTree parse_setter(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "setter", current, - nonterminal_first.get(99), + nonterminal_first.get(136), rules.get(55) )); } @@ -5628,14 +5654,14 @@ private static ParseTree parse_static_string(ParserContext ctx) throws SyntaxErr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[39][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(106, "static_string")); + int rule = (current != null) ? table[53][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(120, "static_string")); ctx.nonterminal = "static_string"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "static_string", - nonterminal_first.get(106), - nonterminal_rules.get(106) + nonterminal_first.get(120), + nonterminal_rules.get(120) )); } if (rule == 11) { @@ -5655,7 +5681,7 @@ private static ParseTree parse_static_string(ParserContext ctx) throws SyntaxErr throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "static_string", current, - nonterminal_first.get(106), + nonterminal_first.get(120), rules.get(11) )); } @@ -5667,14 +5693,14 @@ private static ParseTree parse_static_string_piece(ParserContext ctx) throws Syn Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[51][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(118, "static_string_piece")); + int rule = (current != null) ? table[44][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(111, "static_string_piece")); ctx.nonterminal = "static_string_piece"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "static_string_piece", - nonterminal_first.get(118), - nonterminal_rules.get(118) + nonterminal_first.get(111), + nonterminal_rules.get(111) )); } if (rule == 14) { @@ -5696,7 +5722,7 @@ else if (rule == 15) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "static_string_piece", current, - nonterminal_first.get(118), + nonterminal_first.get(111), rules.get(15) )); } @@ -5708,14 +5734,14 @@ private static ParseTree parse_string_literal(ParserContext ctx) throws SyntaxEr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[30][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(97, "string_literal")); + int rule = (current != null) ? table[60][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(127, "string_literal")); ctx.nonterminal = "string_literal"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "string_literal", - nonterminal_first.get(97), - nonterminal_rules.get(97) + nonterminal_first.get(127), + nonterminal_rules.get(127) )); } if (rule == 13) { @@ -5735,7 +5761,7 @@ private static ParseTree parse_string_literal(ParserContext ctx) throws SyntaxEr throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "string_literal", current, - nonterminal_first.get(97), + nonterminal_first.get(127), rules.get(13) )); } @@ -5747,14 +5773,14 @@ private static ParseTree parse_string_piece(ParserContext ctx) throws SyntaxErro Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[35][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(102, "string_piece")); + int rule = (current != null) ? table[19][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(86, "string_piece")); ctx.nonterminal = "string_piece"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "string_piece", - nonterminal_first.get(102), - nonterminal_rules.get(102) + nonterminal_first.get(86), + nonterminal_rules.get(86) )); } if (rule == 16) { @@ -5776,7 +5802,7 @@ else if (rule == 17) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "string_piece", current, - nonterminal_first.get(102), + nonterminal_first.get(86), rules.get(17) )); } @@ -5788,14 +5814,14 @@ private static ParseTree parse_struct(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[23][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(90, "struct")); + int rule = (current != null) ? table[9][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(76, "struct")); ctx.nonterminal = "struct"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "struct", - nonterminal_first.get(90), - nonterminal_rules.get(90) + nonterminal_first.get(76), + nonterminal_rules.get(76) )); } if (rule == 8) { @@ -5820,7 +5846,7 @@ private static ParseTree parse_struct(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "struct", current, - nonterminal_first.get(90), + nonterminal_first.get(76), rules.get(8) )); } @@ -5832,14 +5858,14 @@ private static ParseTree parse_struct_declaration(ParserContext ctx) throws Synt Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[45][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(112, "struct_declaration")); + int rule = (current != null) ? table[11][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(78, "struct_declaration")); ctx.nonterminal = "struct_declaration"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "struct_declaration", - nonterminal_first.get(112), - nonterminal_rules.get(112) + nonterminal_first.get(78), + nonterminal_rules.get(78) )); } if (rule == 9) { @@ -5858,7 +5884,7 @@ private static ParseTree parse_struct_declaration(ParserContext ctx) throws Synt throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "struct_declaration", current, - nonterminal_first.get(112), + nonterminal_first.get(78), rules.get(9) )); } @@ -5870,14 +5896,14 @@ private static ParseTree parse_task(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[1][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(68, "task")); + int rule = (current != null) ? table[54][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(121, "task")); ctx.nonterminal = "task"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "task", - nonterminal_first.get(68), - nonterminal_rules.get(68) + nonterminal_first.get(121), + nonterminal_rules.get(121) )); } if (rule == 25) { @@ -5902,7 +5928,7 @@ private static ParseTree parse_task(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "task", current, - nonterminal_first.get(68), + nonterminal_first.get(121), rules.get(25) )); } @@ -5914,14 +5940,14 @@ private static ParseTree parse_task_sections(ParserContext ctx) throws SyntaxErr Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[70][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(137, "task_sections")); + int rule = (current != null) ? table[55][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(122, "task_sections")); ctx.nonterminal = "task_sections"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "task_sections", - nonterminal_first.get(137), - nonterminal_rules.get(137) + nonterminal_first.get(122), + nonterminal_rules.get(122) )); } if (rule == 26) { @@ -5983,7 +6009,7 @@ else if (rule == 32) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "task_sections", current, - nonterminal_first.get(137), + nonterminal_first.get(122), rules.get(32) )); } @@ -5995,14 +6021,14 @@ private static ParseTree parse_version(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[17][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(84, "version")); + int rule = (current != null) ? table[29][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(96, "version")); ctx.nonterminal = "version"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "version", - nonterminal_first.get(84), - nonterminal_rules.get(84) + nonterminal_first.get(96), + nonterminal_rules.get(96) )); } if (rule == 6) { @@ -6020,7 +6046,7 @@ private static ParseTree parse_version(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "version", current, - nonterminal_first.get(84), + nonterminal_first.get(96), rules.get(6) )); } @@ -6032,14 +6058,14 @@ private static ParseTree parse_wf_body_element(ParserContext ctx) throws SyntaxE Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[4][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(71, "wf_body_element")); + int rule = (current != null) ? table[49][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(116, "wf_body_element")); ctx.nonterminal = "wf_body_element"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "wf_body_element", - nonterminal_first.get(71), - nonterminal_rules.get(71) + nonterminal_first.get(116), + nonterminal_rules.get(116) )); } if (rule == 62) { @@ -6109,7 +6135,7 @@ else if (rule == 69) { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "wf_body_element", current, - nonterminal_first.get(71), + nonterminal_first.get(116), rules.get(69) )); } @@ -6121,14 +6147,14 @@ private static ParseTree parse_wf_meta(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[71][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(138, "wf_meta")); + int rule = (current != null) ? table[1][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(68, "wf_meta")); ctx.nonterminal = "wf_meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "wf_meta", - nonterminal_first.get(138), - nonterminal_rules.get(138) + nonterminal_first.get(68), + nonterminal_rules.get(68) )); } if (rule == 84) { @@ -6146,7 +6172,7 @@ private static ParseTree parse_wf_meta(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "wf_meta", current, - nonterminal_first.get(138), + nonterminal_first.get(68), rules.get(84) )); } @@ -6158,14 +6184,14 @@ private static ParseTree parse_wf_parameter_meta(ParserContext ctx) throws Synta Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[41][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(108, "wf_parameter_meta")); + int rule = (current != null) ? table[67][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(134, "wf_parameter_meta")); ctx.nonterminal = "wf_parameter_meta"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "wf_parameter_meta", - nonterminal_first.get(108), - nonterminal_rules.get(108) + nonterminal_first.get(134), + nonterminal_rules.get(134) )); } if (rule == 83) { @@ -6183,7 +6209,7 @@ private static ParseTree parse_wf_parameter_meta(ParserContext ctx) throws Synta throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "wf_parameter_meta", current, - nonterminal_first.get(108), + nonterminal_first.get(134), rules.get(83) )); } @@ -6195,14 +6221,14 @@ private static ParseTree parse_workflow(ParserContext ctx) throws SyntaxError { Terminal current = ctx.tokens.current(); Terminal next; ParseTree subtree; - int rule = (current != null) ? table[27][current.getId()] : -1; - ParseTree tree = new ParseTree(new NonTerminal(94, "workflow")); + int rule = (current != null) ? table[2][current.getId()] : -1; + ParseTree tree = new ParseTree(new NonTerminal(69, "workflow")); ctx.nonterminal = "workflow"; if (current == null) { throw new SyntaxError(ctx.error_formatter.unexpectedEof( "workflow", - nonterminal_first.get(94), - nonterminal_rules.get(94) + nonterminal_first.get(69), + nonterminal_rules.get(69) )); } if (rule == 61) { @@ -6227,7 +6253,7 @@ private static ParseTree parse_workflow(ParserContext ctx) throws SyntaxError { throw new SyntaxError(ctx.error_formatter.unexpectedSymbol( "workflow", current, - nonterminal_first.get(94), + nonterminal_first.get(69), rules.get(61) )); } @@ -6357,9 +6383,6 @@ public void output(LexerContext ctx, TerminalIdentifier terminal, String source_ default_action(ctx, terminal, source_string, line, col); } /* END USER CODE */ - public List post_filter(List terminals) { - return terminals; - } public void destroy(Object context) { return; } @@ -7867,8 +7890,7 @@ public List lex(String string, String resource) throws SyntaxError { } } this.destroy(context); - List filtered = post_filter(lctx.terminals); - return filtered; + return lctx.terminals; } /* Section: Main */ } diff --git a/wdl/transforms/cascades/src/main/resources/CHANGELOG.txt b/wdl/transforms/cascades/src/main/resources/CHANGELOG.txt index b407769cba8..bb8a4687868 100644 --- a/wdl/transforms/cascades/src/main/resources/CHANGELOG.txt +++ b/wdl/transforms/cascades/src/main/resources/CHANGELOG.txt @@ -2,4 +2,15 @@ Duplicated Cromwell `biscayne` into `cascades` to serve as new home for OpenWDL `development` version. Grammar synced from OpenWDL. Will become WDL 1.2 or 2.0. -Some Terra users run `version development` WDLs, we don't officially support it, but shouldn't break it too badly if possible. \ No newline at end of file +Some Terra users run `version development` WDLs, we don't officially support it, but shouldn't break it too badly if possible. + +2024-02-28 +When changing the grammar file, generate a new parser by: +- changing current working directory to cromwell/wdl/transforms/cascades +- running: hermes generate src/main/resources/grammar.hgr \ + --language=java \ + --directory=src/main/java \ + --name=wdl \ + --java-package=wdl.cascades.parser \ + --java-use-apache-commons --java-imports=org.apache.commons.lang3.StringEscapeUtils \ + --header diff --git a/wdl/transforms/cascades/src/main/resources/grammar.hgr b/wdl/transforms/cascades/src/main/resources/grammar.hgr index 0b17648d925..b5b743b2b06 100644 --- a/wdl/transforms/cascades/src/main/resources/grammar.hgr +++ b/wdl/transforms/cascades/src/main/resources/grammar.hgr @@ -401,6 +401,7 @@ grammar { (*:unary) $e = :not $e -> LogicalNot(expression=$1) (-:unary) $e = :plus $e -> UnaryPlus(expression=$1) (-:unary) $e = :dash $e -> UnaryNegation(expression=$1) + (*:left) $e = :identifier <=> :lbrace list($object_kv, :comma) :rbrace -> StructLiteral(name=$0, map=$2) (*:left) $e = :identifier <=> :lparen list($e, :comma) :rparen -> FunctionCall(name=$0, params=$2) (*:left) $e = $e <=> :lsquare $e :rsquare -> ArrayOrMapLookup(lhs=$0, rhs=$2) (*:left) $e = $e <=> :dot :identifier -> MemberAccess(value=$0, member=$2) diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumers.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumers.scala index d0faaea154e..1d752645bad 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumers.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumers.scala @@ -105,4 +105,14 @@ object cascadesExpressionValueConsumers { ): Set[UnlinkedConsumedValueHook] = expressionValueConsumer.expressionConsumedValueHooks(a.param)(expressionValueConsumer) } + + implicit val structLiteralExpressionValueConsumer: ExpressionValueConsumer[StructLiteral] = + new ExpressionValueConsumer[StructLiteral] { + override def expressionConsumedValueHooks(a: StructLiteral)(implicit + expressionValueConsumer: ExpressionValueConsumer[ExpressionElement] + ): Set[UnlinkedConsumedValueHook] = + a.elements.values + .flatMap(element => expressionValueConsumer.expressionConsumedValueHooks(element)(expressionValueConsumer)) + .toSet + } } diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/consumed.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/consumed.scala index 4916a7afd02..18a855e29b8 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/consumed.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/consumed/consumed.scala @@ -24,6 +24,7 @@ package object consumed { case a: StringExpression => a.expressionConsumedValueHooks(expressionValueConsumer) case a: ObjectLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) + case a: StructLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) case a: PairLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) case a: ArrayLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) case a: MapLiteral => a.expressionConsumedValueHooks(expressionValueConsumer) diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluators.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluators.scala index 2ce3d01b0de..220049bfca6 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluators.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluators.scala @@ -1,5 +1,8 @@ package wdl.transforms.cascades.linking.expression.files +import cats.implicits.{catsSyntaxValidatedId, toTraverseOps} +import common.validation.ErrorOr.ErrorOr +import wdl.model.draft3.elements.ExpressionElement import wdl.model.draft3.elements.ExpressionElement.{ AsMap, AsPairs, @@ -10,16 +13,20 @@ import wdl.model.draft3.elements.ExpressionElement.{ Quote, Sep, SQuote, + StructLiteral, SubPosix, Suffix, Unzip } -import wdl.model.draft3.graph.expression.FileEvaluator +import wdl.model.draft3.graph.expression.{FileEvaluator, ValueEvaluator} import wdl.transforms.base.linking.expression.files.EngineFunctionEvaluators import wdl.transforms.base.linking.expression.files.EngineFunctionEvaluators.{ threeParameterFunctionPassthroughFileEvaluator, twoParameterFunctionPassthroughFileEvaluator } +import wom.expression.IoFunctionSet +import wom.types.{WomCompositeType, WomType} +import wom.values.{WomFile, WomValue} object cascadesFileEvaluators { @@ -45,4 +52,37 @@ object cascadesFileEvaluators { implicit val minFunctionEvaluator: FileEvaluator[Min] = twoParameterFunctionPassthroughFileEvaluator[Min] implicit val maxFunctionEvaluator: FileEvaluator[Max] = twoParameterFunctionPassthroughFileEvaluator[Max] + implicit val structLiteralEvaluator: FileEvaluator[StructLiteral] = new FileEvaluator[StructLiteral] { + override def predictFilesNeededToEvaluate(a: StructLiteral, + inputs: Map[String, WomValue], + ioFunctionSet: IoFunctionSet, + coerceTo: WomType + )(implicit + fileEvaluator: FileEvaluator[ExpressionElement], + valueEvaluator: ValueEvaluator[ExpressionElement] + ): ErrorOr[Set[WomFile]] = { + def filesInObjectField(fieldAndWomTypeTuple: (String, WomType)): ErrorOr[Set[WomFile]] = { + val (field, womType) = fieldAndWomTypeTuple + a.elements.get(field) match { + case Some(fieldElement) => + fileEvaluator.predictFilesNeededToEvaluate(fieldElement, inputs, ioFunctionSet, womType)(fileEvaluator, + valueEvaluator + ) + case None => s"Invalid assignment to struct. Required field $field was not specified.".invalidNel + } + } + + coerceTo match { + case WomCompositeType(mapping, _) => mapping.toList.traverse(filesInObjectField).map(_.flatten.toSet) + case _ => + a.elements.values.toList + .traverse( + fileEvaluator.evaluateFilesNeededToEvaluate(_, inputs, ioFunctionSet, coerceTo)(fileEvaluator, + valueEvaluator + ) + ) + .map(_.toSet.flatten) + } + } + } } diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/files.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/files.scala index f1935603458..c770483e4c7 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/files.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/files/files.scala @@ -37,6 +37,8 @@ package object files { a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) case a: ObjectLiteral => a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) + case a: StructLiteral => + a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) case a: MapLiteral => a.predictFilesNeededToEvaluate(inputs, ioFunctionSet, coerceTo)(fileEvaluator, valueEvaluator) case a: ArrayLiteral => diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluators.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluators.scala index ba7e9ae8dff..137b42128e2 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluators.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluators.scala @@ -159,4 +159,16 @@ object cascadesTypeEvaluators { case other => s"Cannot invoke 'unzip' on type '${other.stableName}'. Expected an array of pairs".invalidNel } } + + implicit val structLiteralTypeEvaluator: TypeEvaluator[StructLiteral] = new TypeEvaluator[StructLiteral] { + override def evaluateType(a: StructLiteral, linkedValues: Map[UnlinkedConsumedValueHook, GeneratedValueHandle])( + implicit expressionTypeEvaluator: TypeEvaluator[ExpressionElement] + ): ErrorOr[WomType] = + // This works fine, but is not yet a strong enough type check for the WDL 1.1 spec + // (i.e. users are able to instantiate struct literals with k/v pairs that aren't actually in the struct definition, without an error being thrown.) + // We want to add extra validation here, and return a WomCompositeType that matches the struct definition of everything is OK. + // Note that users are allowed to omit optional k/v pairs in their literal. + // This requires some extra work to be done in a subsequent PR. + WomObjectType.validNel + } } diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/types.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/types.scala index 1a027b745ed..58e1fe888d7 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/types.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/types/types.scala @@ -29,6 +29,7 @@ package object types { case a: StringLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: StringExpression => a.evaluateType(linkedValues)(typeEvaluator) case a: ObjectLiteral => a.evaluateType(linkedValues)(typeEvaluator) + case a: StructLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: MapLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: ArrayLiteral => a.evaluateType(linkedValues)(typeEvaluator) case a: PairLiteral => a.evaluateType(linkedValues)(typeEvaluator) diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluators.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluators.scala index ee106f2ef6a..5df336f062e 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluators.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluators.scala @@ -18,7 +18,7 @@ import wdl.transforms.base.linking.expression.values.EngineFunctionEvaluators.{ } import wom.expression.IoFunctionSet import wom.types._ -import wom.values.{WomArray, WomFloat, WomInteger, WomMap, WomOptionalValue, WomPair, WomString, WomValue} +import wom.values.{WomArray, WomFloat, WomInteger, WomMap, WomObject, WomOptionalValue, WomPair, WomString, WomValue} import wom.types.coercion.defaults._ object cascadesValueEvaluators { @@ -345,4 +345,29 @@ object cascadesValueEvaluators { s"Invalid call of 'unzip' on parameter of type '${other.womType.stableName}' (expected Array[Pair[X, Y]])".invalidNel } } + + implicit val structLiteralValueEvaluator: ValueEvaluator[StructLiteral] = new ValueEvaluator[StructLiteral] { + // This works fine, but is missing a feature from the WDL 1.1 spec: users are allowed to omit optional values from their struct literal. + // This requires some extra work to be done in a subsequent PR. + // Specifically, make the known struct definitions available to this function so we can populate k/v pairs with None appropriately. + override def evaluateValue(a: StructLiteral, + inputs: Map[String, WomValue], + ioFunctionSet: IoFunctionSet, + forCommandInstantiationOptions: Option[ForCommandInstantiationOptions] + )(implicit expressionValueEvaluator: ValueEvaluator[ExpressionElement]): ErrorOr[EvaluatedValue[_ <: WomValue]] = { + + val evaluated: ErrorOr[List[(String, EvaluatedValue[_])]] = a.elements.toList traverse { + case (key: String, value: ExpressionElement) => + expressionValueEvaluator + .evaluateValue(value, inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) + .map(key -> _) + } + + evaluated map { mapping => + val value = mapping.map(entry => entry._1 -> entry._2.value).toMap + val sideEffectFiles = mapping.flatMap(entry => entry._2.sideEffectFiles) + EvaluatedValue(WomObject(value), sideEffectFiles) + } + } + } } diff --git a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/values.scala b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/values.scala index 3e92a27b2b8..59d20a381d2 100644 --- a/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/values.scala +++ b/wdl/transforms/cascades/src/main/scala/wdl/transforms/cascades/linking/expression/values/values.scala @@ -39,6 +39,8 @@ package object values { a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: ObjectLiteral => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) + case a: StructLiteral => + a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: MapLiteral => a.evaluateValue(inputs, ioFunctionSet, forCommandInstantiationOptions)(expressionValueEvaluator) case a: ArrayLiteral => diff --git a/wdl/transforms/cascades/src/test/cases/struct_literal.wdl b/wdl/transforms/cascades/src/test/cases/struct_literal.wdl new file mode 100644 index 00000000000..b32150d7bd0 --- /dev/null +++ b/wdl/transforms/cascades/src/test/cases/struct_literal.wdl @@ -0,0 +1,39 @@ +version development + +struct Plant { + String color + Boolean tasty +} + +struct Animal { + String name + Boolean? isGood +} + +task test_struct_parsing { + input { + Plant standard_plant_input + Animal standard_animal_input + } + + runtime { + docker: "ubuntu:latest" + } + + command { + echo "all dogs are good" + } + + output { + Plant standard_plant_forwarded = standard_plant_input + Animal standard_animal_forwarded = standard_animal_input + Plant plant_output_literal = Plant{color: "red", tasty: true} + } +} + +workflow struct_literal { + call test_struct_parsing { + input: standard_plant_input = Plant{color: "green", tasty: true}, + standard_animal_input = Animal{name: "mittens", isGood: false} + } +} diff --git a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/Ast2WdlomSpec.scala b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/Ast2WdlomSpec.scala index ffc6d3bc131..971f5d54dc7 100644 --- a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/Ast2WdlomSpec.scala +++ b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/Ast2WdlomSpec.scala @@ -1,7 +1,6 @@ package wdl.transforms.cascades import java.util - import common.Checked import common.assertion.ErrorOrAssertions._ import common.transforms.CheckedAtoB @@ -19,7 +18,7 @@ import wdl.transforms.cascades.ast2wdlom._ import wdl.transforms.cascades.parsing.WdlCascadesSyntaxErrorFormatter import wom.callable.MetaValueElement.MetaValueElementInteger import wom.types.WomIntegerType -import wom.values.WomInteger +import wom.values.{WomBoolean, WomInteger} import scala.jdk.CollectionConverters._ @@ -121,4 +120,13 @@ class Ast2WdlomSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { val expr = fromString[ExpressionElement](str, parser.parse_e) expr shouldBeValid (Unzip(IdentifierLookup("some_array_of_pairs"))) } + + it should "parse a struct literal" in { + val str = """Dog{breed: "fluffy", isGood: true}""" + val expr = fromString[ExpressionElement](str, parser.parse_e) + expr shouldBeValid (StructLiteral( + "Dog", + Map("breed" -> StringLiteral("fluffy"), "isGood" -> PrimitiveLiteralExpressionElement(WomBoolean(true))) + )) + } } diff --git a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/ast2wdlom/WdlFileToWdlomSpec.scala b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/ast2wdlom/WdlFileToWdlomSpec.scala index 0a6a6f0e08e..8a8d691b8d7 100644 --- a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/ast2wdlom/WdlFileToWdlomSpec.scala +++ b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/ast2wdlom/WdlFileToWdlomSpec.scala @@ -10,7 +10,7 @@ import wdl.model.draft3.elements._ import wdl.transforms.cascades.ast2wdlom.WdlFileToWdlomSpec._ import wom.SourceFileLocation import wom.types._ -import wom.values.WomInteger +import wom.values.{WomBoolean, WomInteger} class WdlFileToWdlomSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { @@ -367,6 +367,104 @@ object WdlFileToWdlomSpec { ) ), tasks = Vector.empty + ), + "struct_literal" -> FileElement( + imports = Vector(), + structs = Vector( + StructElement("Plant", + Vector(StructEntryElement("color", PrimitiveTypeElement(WomStringType)), + StructEntryElement("tasty", PrimitiveTypeElement(WomBooleanType)) + ) + ), + StructElement( + "Animal", + Vector(StructEntryElement("name", PrimitiveTypeElement(WomStringType)), + StructEntryElement("isGood", OptionalTypeElement(PrimitiveTypeElement(WomBooleanType))) + ) + ) + ), + workflows = Vector( + WorkflowDefinitionElement( + "struct_literal", + None, + Set( + CallElement( + "test_struct_parsing", + None, + Vector(), + Some( + CallBodyElement( + Vector( + KvPair("standard_plant_input", + StructLiteral("Plant", + Map("color" -> StringLiteral("green"), + "tasty" -> PrimitiveLiteralExpressionElement(WomBoolean(true)) + ) + ) + ), + KvPair("standard_animal_input", + StructLiteral("Animal", + Map("name" -> StringLiteral("mittens"), + "isGood" -> PrimitiveLiteralExpressionElement(WomBoolean(false)) + ) + ) + ) + ) + ) + ), + Some(SourceFileLocation(35)) + ) + ), + None, + None, + None, + Some(SourceFileLocation(34)) + ) + ), + tasks = Vector( + TaskDefinitionElement( + "test_struct_parsing", + Some( + InputsSectionElement( + Vector( + InputDeclarationElement(TypeAliasElement("Plant"), "standard_plant_input", None), + InputDeclarationElement(TypeAliasElement("Animal"), "standard_animal_input", None) + ) + ) + ), + Vector(), + Some( + OutputsSectionElement( + Vector( + OutputDeclarationElement(TypeAliasElement("Plant"), + "standard_plant_forwarded", + IdentifierLookup("standard_plant_input") + ), + OutputDeclarationElement(TypeAliasElement("Animal"), + "standard_animal_forwarded", + IdentifierLookup("standard_animal_input") + ), + OutputDeclarationElement( + TypeAliasElement("Plant"), + "plant_output_literal", + StructLiteral("Plant", + Map("color" -> StringLiteral("red"), + "tasty" -> PrimitiveLiteralExpressionElement(WomBoolean(true)) + ) + ) + ) + ) + ) + ), + CommandSectionElement( + List(CommandSectionLine(Vector(StringCommandPartElement("""echo "all dogs are good"""")))) + ), + Some(RuntimeAttributesSectionElement(Vector(KvPair("docker", StringLiteral("ubuntu:latest"))))), + None, + None, + Some(SourceFileLocation(13)) + ) ) + ) ) } diff --git a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumersSpec.scala b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumersSpec.scala index 9e47424d6c5..2d1f5c0b812 100644 --- a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumersSpec.scala +++ b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/consumed/CascadesExpressionValueConsumersSpec.scala @@ -111,4 +111,13 @@ class CascadesExpressionValueConsumersSpec extends AnyFlatSpec with CromwellTime e.expressionConsumedValueHooks should be(Set(UnlinkedIdentifierHook("my_array_of_pairs"))) } } + + it should "discover an array variable lookup within a struct literal member access" in { + val str = """ (StructWithAnArray{myArrayMember: arrayToLookup}).myArray """ + val expr = fromString[ExpressionElement](str, parser.parse_e) + + expr.shouldBeValidPF { case e => + e.expressionConsumedValueHooks should be(Set(UnlinkedIdentifierHook("arrayToLookup"))) + } + } } diff --git a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluatorSpec.scala b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluatorSpec.scala index afc73a56a32..60ca92d2fc8 100644 --- a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluatorSpec.scala +++ b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/files/CascadesFileEvaluatorSpec.scala @@ -100,4 +100,15 @@ class CascadesFileEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec wit ) } } + + it should "discover the file which would be required to evaluate a struct literal" in { + val str = """ StructWithStringVec{myVec: read_lines("foo.txt")}""" + val expr = fromString[ExpressionElement](str, parser.parse_e) + + expr.shouldBeValidPF { case e => + e.predictFilesNeededToEvaluate(Map.empty, NoIoFunctionSet, WomStringType) shouldBeValid Set( + WomSingleFile("foo.txt") + ) + } + } } diff --git a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluatorSpec.scala b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluatorSpec.scala index d874fb7e6dd..0bef2d7a6ef 100644 --- a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluatorSpec.scala +++ b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/types/CascadesTypeEvaluatorSpec.scala @@ -131,4 +131,14 @@ class CascadesTypeEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec wit e.evaluateType(Map.empty) shouldBeValid WomPairType(WomArrayType(WomAnyType), WomArrayType(WomAnyType)) } } + + it should "evaluate the type of a struct literal" in { + // NB: This is not yet strict enough type checking for the WDL 1.1 spec. + // In a subsequent branch, we will make this be a WomCompositeType that matches the struct definition. + val structLiteral = """ Animal{fur: "fuzzy", isGood: true} """ + val structExpr = fromString[ExpressionElement](structLiteral, parser.parse_e) + structExpr.shouldBeValidPF { case e => + e.evaluateType(Map.empty) shouldBeValid WomObjectType + } + } } diff --git a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluatorSpec.scala b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluatorSpec.scala index 60215046d05..68027a868af 100644 --- a/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluatorSpec.scala +++ b/wdl/transforms/cascades/src/test/scala/wdl/transforms/cascades/linking/expression/values/CascadesValueEvaluatorSpec.scala @@ -12,7 +12,7 @@ import wdl.transforms.cascades.Ast2WdlomSpec.{fromString, parser} import wdl.transforms.cascades.ast2wdlom._ import wom.expression.NoIoFunctionSet import wom.types.{WomAnyType, WomArrayType, WomIntegerType, WomMapType, WomOptionalType, WomStringType} -import wom.values.{WomArray, WomInteger, WomMap, WomOptionalValue, WomPair, WomString} +import wom.values.{WomArray, WomBoolean, WomInteger, WomMap, WomObject, WomOptionalValue, WomPair, WomString} class CascadesValueEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { @@ -408,4 +408,14 @@ class CascadesValueEvaluatorSpec extends AnyFlatSpec with CromwellTimeoutSpec wi ) ) } + + it should "evaluate a struct literal" in { + val literal = """ Animal{type: "dog", barks: false}""" + val expectedValue = WomObject(Map("type" -> WomString("dog"), "barks" -> WomBoolean(false))) + val expr = fromString[ExpressionElement](literal, parser.parse_e) + + expr.shouldBeValidPF { case e => + e.evaluateValue(Map.empty, NoIoFunctionSet, None) shouldBeValid EvaluatedValue(expectedValue, Seq.empty) + } + } } diff --git a/wdl/transforms/draft3/src/test/scala/wdl/draft3/transforms/ast2wdlom/Ast2WdlomSpec.scala b/wdl/transforms/draft3/src/test/scala/wdl/draft3/transforms/ast2wdlom/Ast2WdlomSpec.scala index d7f507b8343..2865d977f7d 100644 --- a/wdl/transforms/draft3/src/test/scala/wdl/draft3/transforms/ast2wdlom/Ast2WdlomSpec.scala +++ b/wdl/transforms/draft3/src/test/scala/wdl/draft3/transforms/ast2wdlom/Ast2WdlomSpec.scala @@ -93,4 +93,12 @@ class Ast2WdlomSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers { val expr = fromString[ExpressionElement](str, parser.parse_e) expr shouldBeInvalid "Failed to parse expression (reason 1 of 1): Unknown engine function: 'unzip'" } + + it should "not parse a struct literal" in { + val str = """Dog{breed: "fluffy", isGood: true}""" + val expr = fromString[ExpressionElement](str, parser.parse_e) + // parser interprets "Dog" as an identifier, rather than as part of a struct literal, + // since struct literals aren't in WDL 1.0 + expr shouldBeValid (IdentifierLookup("Dog")) + } } diff --git a/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/ast2wdlom/AstNodeToExpressionElement.scala b/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/ast2wdlom/AstNodeToExpressionElement.scala index acf3eac9f0b..49bb1c68df6 100644 --- a/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/ast2wdlom/AstNodeToExpressionElement.scala +++ b/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/ast2wdlom/AstNodeToExpressionElement.scala @@ -57,6 +57,12 @@ object AstNodeToExpressionElement { objectKvs <- a.getAttributeAsVector[KvPair]("map") asMap = objectKvs.map(kv => kv.key -> kv.value).toMap } yield ObjectLiteral(asMap)).toValidated + case a: GenericAst if a.getName == "StructLiteral" => + (for { + objectKvs <- a.getAttributeAsVector[KvPair]("map") + asMap = objectKvs.map(kv => kv.key -> kv.value).toMap + structTypeName <- a.getAttributeAs[String]("name") + } yield StructLiteral(structTypeName, asMap)).toValidated case a: GenericAst if a.getName == "MapLiteral" => final case class MapKvPair(key: ExpressionElement, value: ExpressionElement) def convertOnePair(astNode: GenericAstNode): ErrorOr[MapKvPair] = astNode match { diff --git a/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/wdlom2wdl/WdlWriterImpl.scala b/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/wdlom2wdl/WdlWriterImpl.scala index d4a0b043b17..ab63d0be7c0 100644 --- a/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/wdlom2wdl/WdlWriterImpl.scala +++ b/wdl/transforms/new-base/src/main/scala/wdl/transforms/base/wdlom2wdl/WdlWriterImpl.scala @@ -39,6 +39,12 @@ object WdlWriterImpl { pair._1 + ": " + expressionElementWriter.toWdlV1(pair._2) } .mkString(", ") + " }" + case a: StructLiteral => + a.structTypeName + " { " + a.elements + .map { pair => + pair._1 + ": " + expressionElementWriter.toWdlV1(pair._2) + } + .mkString(", ") + " }" case a: ArrayLiteral => "[" + a.elements.map(expressionElementWriter.toWdlV1).mkString(", ") + "]" case a: MapLiteral =>