[
  [
    "start",
    [
      "comment",
      "#test: tokenize keyword"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "keyword",
      "for"
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "identifier",
      "i"
    ],
    [
      "text",
      " "
    ],
    [
      "constant.numeric",
      "1"
    ],
    [
      "punctuation.operator",
      ".."
    ],
    [
      "constant.numeric",
      "2"
    ],
    [
      "paren.rparen",
      ")"
    ]
  ],
  [
    "start",
    [
      "comment",
      "#test: tokenize regexp"
    ]
  ],
  [
    "start",
    [
      "string.regex",
      "/\"[a]/"
    ]
  ],
  [
    "start",
    [
      "comment",
      "#test: tokenize functions"
    ]
  ],
  [
    "start",
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{args}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{a1, a2}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{@a1, a2}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{args}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{args}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{0abc}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "paren",
      "{"
    ],
    [
      "keyword.operator",
      "/"
    ],
    [
      "identifier",
      "abc"
    ],
    [
      "paren",
      "}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "=>"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "paren",
      "{"
    ],
    [
      "identifier",
      "abc"
    ],
    [
      "keyword.operator",
      "/"
    ],
    [
      "paren",
      "}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{#abc}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{abc#}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "paren",
      "{"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "identifier",
      "abc"
    ],
    [
      "paren",
      "}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "paren",
      "{"
    ],
    [
      "identifier",
      "abc"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "paren",
      "}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{a{bc}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{ }"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "{}"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "args"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "arg1, arg2"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "arg1 = 1, arg2 = 'name'"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "@arg1 = /abc/, arg2 = 'name'"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "comment",
      "#test: tokenize function: invalid case:"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "keyword.operator",
      "/"
    ],
    [
      "identifier",
      "args"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      " "
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      " "
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "variable.language",
      "window"
    ],
    [
      "punctuation.operator",
      "."
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "args"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "entity.name.function",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "comment",
      "#test: tokenize callback function"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "identifier",
      "bar"
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "constant.numeric",
      "1"
    ],
    [
      "punctuation.operator",
      ","
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "args"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "constant.numeric",
      "1"
    ],
    [
      "punctuation.operator",
      ","
    ],
    [
      "text",
      " "
    ],
    [
      "constant.numeric",
      "2"
    ],
    [
      "text",
      " "
    ],
    [
      "paren.lparen",
      "("
    ],
    [
      "variable.parameter",
      "x"
    ],
    [
      "paren.rparen",
      ")"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "start",
    [
      "comment",
      "#test: tokenize class"
    ]
  ],
  [
    "start",
    [
      "keyword",
      "class"
    ],
    [
      "text",
      " "
    ],
    [
      "language.support.class",
      "Foo"
    ]
  ],
  [
    "start",
    [
      "keyword",
      "class"
    ],
    [
      "text",
      " "
    ],
    [
      "language.support.class",
      "Foo"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword",
      "extends"
    ],
    [
      "text",
      " "
    ],
    [
      "language.support.class",
      "Bar"
    ]
  ],
  [
    "start",
    [
      "comment",
      "#test: tokenize illegal name property"
    ]
  ],
  [
    "start",
    [
      "identifier",
      "foo"
    ],
    [
      "punctuation.operator",
      "."
    ],
    [
      "identifier",
      "static"
    ],
    [
      "punctuation.operator",
      "."
    ],
    [
      "identifier",
      "function"
    ]
  ],
  [
    "start",
    [
      "comment",
      "#!test tokenize string with interpolation"
    ]
  ],
  [
    "start",
    [
      "identifier",
      "a"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "string.start",
      "\""
    ],
    [
      "paren.string",
      "#{"
    ],
    [
      "text",
      " "
    ],
    [
      "constant.numeric",
      "22"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "/"
    ],
    [
      "text",
      " "
    ],
    [
      "constant.numeric",
      "7"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "+"
    ],
    [
      "text",
      " "
    ],
    [
      "paren",
      "{"
    ],
    [
      "identifier",
      "x"
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "string.start",
      "\""
    ],
    [
      "paren.string",
      "#{"
    ],
    [
      "identifier",
      "a"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "+"
    ],
    [
      "text",
      " "
    ],
    [
      "identifier",
      "b"
    ],
    [
      "paren.string",
      "}"
    ],
    [
      "string.end",
      "\""
    ],
    [
      "paren",
      "}"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "+"
    ],
    [
      "text",
      " "
    ],
    [
      "constant.numeric",
      "2"
    ],
    [
      "paren.string",
      "}"
    ],
    [
      "string.end",
      "\""
    ]
  ],
  [
    "start",
    [
      "string.start",
      "\""
    ],
    [
      "string",
      " "
    ],
    [
      "paren.string",
      "#{"
    ],
    [
      "text",
      " "
    ],
    [
      "string.start",
      "\""
    ],
    [
      "string.end",
      "\""
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "+"
    ],
    [
      "text",
      " "
    ],
    [
      "paren",
      "{}"
    ],
    [
      "text",
      " "
    ],
    [
      "paren.string",
      "}"
    ],
    [
      "string",
      " )"
    ],
    [
      "string.end",
      "\""
    ],
    [
      "text",
      "  "
    ]
  ],
  [
    "qqdoc",
    [
      "string",
      "\"\"\"heredoc"
    ]
  ],
  [
    "start",
    [
      "string",
      "   \"\"\""
    ]
  ],
  [
    "start",
    [
      "keyword",
      "do"
    ],
    [
      "text",
      " "
    ],
    [
      "storage.type",
      "->"
    ]
  ],
  [
    "comment",
    [
      "text",
      "    "
    ],
    [
      "comment",
      "###"
    ]
  ],
  [
    "comment",
    [
      "comment",
      "    herecomment"
    ]
  ],
  [
    "start",
    [
      "comment",
      "    ###"
    ]
  ],
  [
    "heregex",
    [
      "text",
      "    "
    ],
    [
      "identifier",
      "re"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword.operator",
      "="
    ],
    [
      "text",
      " "
    ],
    [
      "string.regex",
      "/regex/imgy"
    ],
    [
      "punctuation.operator",
      "."
    ],
    [
      "identifier",
      "test"
    ],
    [
      "text",
      " "
    ],
    [
      "string.regex",
      "///"
    ]
  ],
  [
    "heregex",
    [
      "comment.regex",
      "        "
    ],
    [
      "string.regex",
      "heregex"
    ],
    [
      "comment.regex",
      "  # comment"
    ]
  ],
  [
    "start",
    [
      "string.regex",
      "    ///imgy"
    ]
  ],
  [
    "js",
    [
      "text",
      "    "
    ],
    [
      "keyword",
      "this"
    ],
    [
      "text",
      " "
    ],
    [
      "keyword",
      "isnt"
    ],
    [
      "keyword.operator",
      ":"
    ],
    [
      "text",
      " "
    ],
    [
      "string",
      "`just "
    ]
  ],
  [
    "start",
    [
      "string",
      "       JavaScript`"
    ]
  ],
  [
    "start",
    [
      "text",
      "    "
    ],
    [
      "constant.language",
      "undefined"
    ]
  ],
  [
    "start"
  ]
]