function led_e()

in src/parser/WDL/hermes/wdl_parser.js [1664:1904]


function led_e(left, ctx) {
  var tree = new ParseTree(new NonTerminal(79, 'e'))
  var current = ctx.tokens.current()
  var ast_parameters;
  ctx.nonterminal = "e";
  if (current.id == 53) { // :double_pipe
    // $e = $e :double_pipe $e -> LogicalOr( lhs=$0, rhs=$2 )
    ctx.rule = rules[80];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('LogicalOr', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 53)); // :double_pipe
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(53) - modifier));
  }
  if (current.id == 8) { // :double_ampersand
    // $e = $e :double_ampersand $e -> LogicalAnd( lhs=$0, rhs=$2 )
    ctx.rule = rules[81];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('LogicalAnd', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 8)); // :double_ampersand
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(8) - modifier));
  }
  if (current.id == 22) { // :double_equal
    // $e = $e :double_equal $e -> Equals( lhs=$0, rhs=$2 )
    ctx.rule = rules[82];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('Equals', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 22)); // :double_equal
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(22) - modifier));
  }
  if (current.id == 13) { // :not_equal
    // $e = $e :not_equal $e -> NotEquals( lhs=$0, rhs=$2 )
    ctx.rule = rules[83];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('NotEquals', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 13)); // :not_equal
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(13) - modifier));
  }
  if (current.id == 55) { // :lt
    // $e = $e :lt $e -> LessThan( lhs=$0, rhs=$2 )
    ctx.rule = rules[84];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('LessThan', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 55)); // :lt
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(55) - modifier));
  }
  if (current.id == 47) { // :lteq
    // $e = $e :lteq $e -> LessThanOrEqual( lhs=$0, rhs=$2 )
    ctx.rule = rules[85];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('LessThanOrEqual', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 47)); // :lteq
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(47) - modifier));
  }
  if (current.id == 30) { // :gt
    // $e = $e :gt $e -> GreaterThan( lhs=$0, rhs=$2 )
    ctx.rule = rules[86];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('GreaterThan', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 30)); // :gt
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(30) - modifier));
  }
  if (current.id == 26) { // :gteq
    // $e = $e :gteq $e -> GreaterThanOrEqual( lhs=$0, rhs=$2 )
    ctx.rule = rules[87];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('GreaterThanOrEqual', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 26)); // :gteq
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(26) - modifier));
  }
  if (current.id == 21) { // :plus
    // $e = $e :plus $e -> Add( lhs=$0, rhs=$2 )
    ctx.rule = rules[88];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('Add', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 21)); // :plus
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(21) - modifier));
  }
  if (current.id == 19) { // :dash
    // $e = $e :dash $e -> Subtract( lhs=$0, rhs=$2 )
    ctx.rule = rules[89];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('Subtract', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 19)); // :dash
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(19) - modifier));
  }
  if (current.id == 10) { // :asterisk
    // $e = $e :asterisk $e -> Multiply( lhs=$0, rhs=$2 )
    ctx.rule = rules[90];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('Multiply', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 10)); // :asterisk
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(10) - modifier));
  }
  if (current.id == 32) { // :slash
    // $e = $e :slash $e -> Divide( lhs=$0, rhs=$2 )
    ctx.rule = rules[91];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('Divide', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 32)); // :slash
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(32) - modifier));
  }
  if (current.id == 57) { // :percent
    // $e = $e :percent $e -> Remainder( lhs=$0, rhs=$2 )
    ctx.rule = rules[92];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('Remainder', ast_parameters);
    tree.isExprNud = true;
    tree.add(left);
    tree.add(expect(ctx, 57)); // :percent
    var modifier = 0;
    tree.isInfix = true;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(57) - modifier));
  }
  if (current.id == 43) { // :lparen
    // $e = :identifier <=> :lparen $_gen18 :rparen -> FunctionCall( name=$0, params=$2 )
    ctx.rule = rules[97];
    ast_parameters = {
      'name': 0,
      'params': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('FunctionCall', ast_parameters);
    tree.add(left);
    tree.add(expect(ctx, 43)); // :lparen
    tree.add(parse__gen18(ctx));
    tree.add(expect(ctx, 5)); // :rparen
  }
  if (current.id == 38) { // :lsquare
    // $e = :identifier <=> :lsquare $e :rsquare -> ArrayOrMapLookup( lhs=$0, rhs=$2 )
    ctx.rule = rules[98];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('ArrayOrMapLookup', ast_parameters);
    tree.add(left);
    tree.add(expect(ctx, 38)); // :lsquare
    var modifier = 0;
    tree.add(parse_e_internal(ctx, get_infix_binding_power_e(38) - modifier));
    tree.add(expect(ctx, 28)); // :rsquare
  }
  if (current.id == 35) { // :dot
    // $e = :identifier <=> :dot :identifier -> MemberAccess( lhs=$0, rhs=$2 )
    ctx.rule = rules[99];
    ast_parameters = {
      'lhs': 0,
      'rhs': 2,
    }
    tree.astTransform = new AstTransformNodeCreator('MemberAccess', ast_parameters);
    tree.add(left);
    tree.add(expect(ctx, 35)); // :dot
    tree.add(expect(ctx, 39)); // :identifier
  }
  return tree;
}