block auto start
  string for
    snip
      for $1 <- $|2⟨\@\⟨$2\⟩,$2⟩
      $0

  for kind <- @⟨string,pattern⟩
  string @⟨@kind:s,p⟩snip
    snip
      @kind $1
        name $2
        snip $3

      $0

block auto !word
  string choice
    name choice node
    snip \$|$1⟨$2\⟩$0

  string nonempty
    name nonempty node
    snip \$?$1⟨$2\⟩$0

  string arrin
    name array index
    snip \@\⟨\@$1:$2\⟩

  string nil
    name ignore symbol
    snip \⋄