=====================================
Ellipsis in function body
=====================================

function Invoke-Test {
  ...
}

---

(program
  (statement_list
    (function_statement
      (function_name)
      (script_block
        script_block_body: (script_block_body
          statement_list: (statement_list
            (pipeline
              (pipeline_chain
                (semgrep_ellipsis)))))))))

=====================================
Ellipsis in statement list
=====================================

$x = 1
...
$y = 2

---

(program
  (statement_list
    (pipeline
      (assignment_expression
        (left_assignment_expression
          (logical_expression
            (bitwise_expression
              (comparison_expression
                (additive_expression
                  (multiplicative_expression
                    (format_expression
                      (range_expression
                        (array_literal_expression
                          (unary_expression
                            (variable)))))))))))
        (assignement_operator)
        value: (pipeline
          (pipeline_chain
            (logical_expression
              (bitwise_expression
                (comparison_expression
                  (additive_expression
                    (multiplicative_expression
                      (format_expression
                        (range_expression
                          (array_literal_expression
                            (unary_expression
                              (integer_literal
                                (decimal_integer_literal)))))))))))))))
    (pipeline
      (pipeline_chain
        (semgrep_ellipsis)))
    (pipeline
      (assignment_expression
        (left_assignment_expression
          (logical_expression
            (bitwise_expression
              (comparison_expression
                (additive_expression
                  (multiplicative_expression
                    (format_expression
                      (range_expression
                        (array_literal_expression
                          (unary_expression
                            (variable)))))))))))
        (assignement_operator)
        value: (pipeline
          (pipeline_chain
            (logical_expression
              (bitwise_expression
                (comparison_expression
                  (additive_expression
                    (multiplicative_expression
                      (format_expression
                        (range_expression
                          (array_literal_expression
                            (unary_expression
                              (integer_literal
                                (decimal_integer_literal)))))))))))))))))

=====================================
Ellipsis as expression
=====================================

$x = ...

---

(program
  (statement_list
    (pipeline
      (assignment_expression
        (left_assignment_expression
          (logical_expression
            (bitwise_expression
              (comparison_expression
                (additive_expression
                  (multiplicative_expression
                    (format_expression
                      (range_expression
                        (array_literal_expression
                          (unary_expression
                            (variable)))))))))))
        (assignement_operator)
        value: (semgrep_ellipsis)))))

=====================================
Ellipsis in method arguments
=====================================

$OBJ.GetMethods(...)

---

(program
  (statement_list
    (pipeline
      (pipeline_chain
        (logical_expression
          (bitwise_expression
            (comparison_expression
              (additive_expression
                (multiplicative_expression
                  (format_expression
                    (range_expression
                      (array_literal_expression
                        (unary_expression
                          (invokation_expression
                            (variable)
                            (member_name
                              (simple_name))
                            (argument_list
                              argument_expression_list: (argument_expression_list
                                (argument_expression
                                  (semgrep_ellipsis))))))))))))))))))

=====================================
Ellipsis at beginning of method arguments
=====================================

$OBJ.GetMethods(..., "arg2")

---

(program
  (statement_list
    (pipeline
      (pipeline_chain
        (logical_expression
          (bitwise_expression
            (comparison_expression
              (additive_expression
                (multiplicative_expression
                  (format_expression
                    (range_expression
                      (array_literal_expression
                        (unary_expression
                          (invokation_expression
                            (variable)
                            (member_name
                              (simple_name))
                            (argument_list
                              argument_expression_list: (argument_expression_list
                                (argument_expression
                                  (semgrep_ellipsis))
                                (argument_expression
                                  (logical_argument_expression
                                    (bitwise_argument_expression
                                      (comparison_argument_expression
                                        (additive_argument_expression
                                          (multiplicative_argument_expression
                                            (format_argument_expression
                                              (range_argument_expression
                                                (unary_expression
                                                  (string_literal
                                                    (expandable_string_literal)))))))))))))))))))))))))))

=====================================
Ellipsis at end of method arguments
=====================================

$OBJ.GetMethods("arg1", ...)

---

(program
  (statement_list
    (pipeline
      (pipeline_chain
        (logical_expression
          (bitwise_expression
            (comparison_expression
              (additive_expression
                (multiplicative_expression
                  (format_expression
                    (range_expression
                      (array_literal_expression
                        (unary_expression
                          (invokation_expression
                            (variable)
                            (member_name
                              (simple_name))
                            (argument_list
                              argument_expression_list: (argument_expression_list
                                (argument_expression
                                  (logical_argument_expression
                                    (bitwise_argument_expression
                                      (comparison_argument_expression
                                        (additive_argument_expression
                                          (multiplicative_argument_expression
                                            (format_argument_expression
                                              (range_argument_expression
                                                (unary_expression
                                                  (string_literal
                                                    (expandable_string_literal)))))))))))
                                (argument_expression
                                  (semgrep_ellipsis))))))))))))))))))

=====================================
Ellipsis in middle of method arguments
=====================================

$OBJ.GetMethods("arg1", ..., "arg3")

---

(program
  (statement_list
    (pipeline
      (pipeline_chain
        (logical_expression
          (bitwise_expression
            (comparison_expression
              (additive_expression
                (multiplicative_expression
                  (format_expression
                    (range_expression
                      (array_literal_expression
                        (unary_expression
                          (invokation_expression
                            (variable)
                            (member_name
                              (simple_name))
                            (argument_list
                              argument_expression_list: (argument_expression_list
                                (argument_expression
                                  (logical_argument_expression
                                    (bitwise_argument_expression
                                      (comparison_argument_expression
                                        (additive_argument_expression
                                          (multiplicative_argument_expression
                                            (format_argument_expression
                                              (range_argument_expression
                                                (unary_expression
                                                  (string_literal
                                                    (expandable_string_literal)))))))))))
                                (argument_expression
                                  (semgrep_ellipsis))
                                (argument_expression
                                  (logical_argument_expression
                                    (bitwise_argument_expression
                                      (comparison_argument_expression
                                        (additive_argument_expression
                                          (multiplicative_argument_expression
                                            (format_argument_expression
                                              (range_argument_expression
                                                (unary_expression
                                                  (string_literal
                                                    (expandable_string_literal)))))))))))))))))))))))))))

=====================================
Ellipsis in static method arguments
=====================================

[System.IO.Path]::Combine(...)

---

(program
  (statement_list
    (pipeline
      (pipeline_chain
        (logical_expression
          (bitwise_expression
            (comparison_expression
              (additive_expression
                (multiplicative_expression
                  (format_expression
                    (range_expression
                      (array_literal_expression
                        (unary_expression
                          (invokation_expression
                            (type_literal
                              (type_spec
                                (type_name
                                  (type_name
                                    (type_name
                                      (type_identifier))
                                    (type_identifier))
                                  (type_identifier))))
                            (member_name
                              (simple_name))
                            (argument_list
                              argument_expression_list: (argument_expression_list
                                (argument_expression
                                  (semgrep_ellipsis))))))))))))))))))

=====================================
Metavariable in expression
=====================================

$X -eq $Y

---

(program
  (statement_list
    (pipeline
      (pipeline_chain
        (logical_expression
          (bitwise_expression
            (comparison_expression
              (comparison_expression
                (additive_expression
                  (multiplicative_expression
                    (format_expression
                      (range_expression
                        (array_literal_expression
                          (unary_expression
                            (variable))))))))
              (comparison_operator)
              (additive_expression
                (multiplicative_expression
                  (format_expression
                    (range_expression
                      (array_literal_expression
                        (unary_expression
                          (variable))))))))))))))
