function nud_e()

in src/parser/WDL/hermes/wdl_parser.js [1496:1663]


function nud_e(ctx) {
  var tree = new ParseTree(new NonTerminal(79, 'e'));
  var current = ctx.tokens.current();
  var ast_parameters;
  ctx.nonterminal = "e";
  if (!current) {
    return tree;
  }
  else if (rule_first[93].indexOf(current.id) != -1) {
    // $e = :not $e -> LogicalNot( expression=$1 )
    ctx.rule = rules[93];
    ast_parameters = {
      'expression': 1,
    }
    tree.astTransform = new AstTransformNodeCreator('LogicalNot', ast_parameters);
    tree.nudMorphemeCount = 2;
    tree.add(expect(ctx, 15));
    tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(15)));
    tree.isPrefix = true;
  }
  else if (rule_first[94].indexOf(current.id) != -1) {
    // $e = :plus $e -> UnaryPlus( expression=$1 )
    ctx.rule = rules[94];
    ast_parameters = {
      'expression': 1,
    }
    tree.astTransform = new AstTransformNodeCreator('UnaryPlus', ast_parameters);
    tree.nudMorphemeCount = 2;
    tree.add(expect(ctx, 21));
    tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(21)));
    tree.isPrefix = true;
  }
  else if (rule_first[95].indexOf(current.id) != -1) {
    // $e = :dash $e -> UnaryNegation( expression=$1 )
    ctx.rule = rules[95];
    ast_parameters = {
      'expression': 1,
    }
    tree.astTransform = new AstTransformNodeCreator('UnaryNegation', ast_parameters);
    tree.nudMorphemeCount = 2;
    tree.add(expect(ctx, 19));
    tree.add(parse_e_internal(ctx, get_prefix_binding_power_e(19)));
    tree.isPrefix = true;
  }
  else if (rule_first[97].indexOf(current.id) != -1) {
    // $e = :identifier <=> :lparen $_gen18 :rparen -> FunctionCall( name=$0, params=$2 )
    ctx.rule = rules[97];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 39));
  }
  else if (rule_first[98].indexOf(current.id) != -1) {
    // $e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )
    ctx.rule = rules[98];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 39));
  }
  else if (rule_first[99].indexOf(current.id) != -1) {
    // $e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 )
    ctx.rule = rules[99];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 39));
  }
  else if (rule_first[101].indexOf(current.id) != -1) {
    // $e = :object :lbrace $_gen19 :rbrace -> ObjectLiteral( map=$2 )
    ctx.rule = rules[101];
    ast_parameters = {
      'map': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('ObjectLiteral', ast_parameters);
    tree.nudMorphemeCount = 4;
    tree.add(expect(ctx, 56));
    tree.add(expect(ctx, 42));
    tree.add(parse__gen19(ctx));
    tree.add(expect(ctx, 51));
  }
  else if (rule_first[102].indexOf(current.id) != -1) {
    // $e = :lsquare $_gen18 :rsquare -> ArrayLiteral( values=$1 )
    ctx.rule = rules[102];
    ast_parameters = {
      'values': 1,
    }
    tree.astTransform = new AstTransformNodeCreator('ArrayLiteral', ast_parameters);
    tree.nudMorphemeCount = 3;
    tree.add(expect(ctx, 38));
    tree.add(parse__gen18(ctx));
    tree.add(expect(ctx, 28));
  }
  else if (rule_first[104].indexOf(current.id) != -1) {
    // $e = :lbrace $_gen20 :rbrace -> MapLiteral( map=$1 )
    ctx.rule = rules[104];
    ast_parameters = {
      'map': 1,
    }
    tree.astTransform = new AstTransformNodeCreator('MapLiteral', ast_parameters);
    tree.nudMorphemeCount = 3;
    tree.add(expect(ctx, 42));
    tree.add(parse__gen20(ctx));
    tree.add(expect(ctx, 51));
  }
  else if (rule_first[105].indexOf(current.id) != -1) {
    // $e = :lparen $_gen18 :rparen -> TupleLiteral( values=$1 )
    ctx.rule = rules[105];
    ast_parameters = {
      'values': 1,
    }
    tree.astTransform = new AstTransformNodeCreator('TupleLiteral', ast_parameters);
    tree.nudMorphemeCount = 3;
    tree.add(expect(ctx, 43));
    tree.add(parse__gen18(ctx));
    tree.add(expect(ctx, 5));
  }
  else if (rule_first[106].indexOf(current.id) != -1) {
    // $e = :if $e :then $e :else $e -> TernaryIf( cond=$1, iftrue=$3, iffalse=$5 )
    ctx.rule = rules[106];
    ast_parameters = {
      'cond': 1,
      'iftrue': 3,
      'iffalse': 5,
    }
    tree.astTransform = new AstTransformNodeCreator('TernaryIf', ast_parameters);
    tree.nudMorphemeCount = 6;
    tree.add(expect(ctx, 46));
    tree.add(parse_e(ctx));
    tree.add(expect(ctx, 3));
    tree.add(parse_e(ctx));
    tree.add(expect(ctx, 52));
    tree.add(parse_e(ctx));
  }
  else if (rule_first[107].indexOf(current.id) != -1) {
    // $e = :string
    ctx.rule = rules[107];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 27));
  }
  else if (rule_first[108].indexOf(current.id) != -1) {
    // $e = :identifier
    ctx.rule = rules[108];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 39));
  }
  else if (rule_first[109].indexOf(current.id) != -1) {
    // $e = :boolean
    ctx.rule = rules[109];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 14));
  }
  else if (rule_first[110].indexOf(current.id) != -1) {
    // $e = :integer
    ctx.rule = rules[110];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 34));
  }
  else if (rule_first[111].indexOf(current.id) != -1) {
    // $e = :float
    ctx.rule = rules[111];
    tree.astTransform = new AstTransformSubstitution(0);
    tree.nudMorphemeCount = 1;
    tree.add(expect(ctx, 17));
  }
  return tree;
}