===============================================================================
Wildcards (Definition)
===============================================================================

rule a:
  input:
    "a"
    "{a}"
    "{a,x\d+}"
    "{a,x\d{3}}{b}"
    "{a}{b}"
    "{{a}{b}"
    "{{a}{b}}"
    "{{a}{b}}{{}}"
    f"{a}"

-------------------------------------------------------------------------------

(module (rule_definition (identifier) (rule_body (directive (directive_parameters (concatenated_string
  (string (string_start) (string_content) (string_end))
  (string (string_start) (wildcard (identifier)) (string_end))
  (string (string_start) (wildcard (identifier) (constraint)) (string_end))
  (string (string_start) (wildcard (identifier) (constraint)) (wildcard (identifier)) (string_end))
  (string (string_start) (wildcard (identifier)) (wildcard (identifier)) (string_end))
  (string (string_start) (string_content) (wildcard (identifier)) (wildcard (identifier)) (string_end))
  (string (string_start) (string_content) (wildcard (identifier)) (wildcard (identifier)) (string_content) (string_end))
  (string (string_start) (string_content) (wildcard (identifier)) (wildcard (identifier)) (string_content) (string_end))
  (string (string_start) (interpolation (identifier)) (string_end))
))))))


===============================================================================
Wildcards (Interpolation)
===============================================================================

rule a:
  shell:
    "a"
    "{input}"
    "{input}{output}"
    "{{input}}{output}{{}}"
    "{input.a}"
    "{input[3]}"
    "{input.a.b[3].x}"
    f"{input}"
    "{input:q}"

-------------------------------------------------------------------------------

(module (rule_definition (identifier) (rule_body (directive (directive_parameters (concatenated_string
  (string (string_start) (string_content) (string_end))
  (string (string_start) (wildcard (identifier)) (string_end))
  (string (string_start) (wildcard (identifier)) (wildcard (identifier)) (string_end))
  (string (string_start) (string_content) (wildcard (identifier)) (string_content) (string_end))
  (string (string_start) (wildcard (attribute (identifier) (identifier))) (string_end))
  (string (string_start) (wildcard (subscript (identifier) (integer))) (string_end))
  (string (string_start) (wildcard (attribute (subscript (attribute (attribute (identifier) (identifier)) (identifier)) (integer)) (identifier))) (string_end))
  (string (string_start) (interpolation (identifier)) (string_end))
  (string (string_start) (wildcard (identifier) (flag)) (string_end))
))))))
