(stream, state)
| 43 | } |
| 44 | |
| 45 | function tokenBase(stream, state) { |
| 46 | var ch = stream.next(); |
| 47 | if (ch == '"') { |
| 48 | state.tokenize = tokenString; |
| 49 | return state.tokenize(stream, state); |
| 50 | } |
| 51 | if (ch == "'") { |
| 52 | tcat = "atom"; |
| 53 | if (stream.eat("\\")) { |
| 54 | if (stream.skipTo("'")) { stream.next(); return "string"; } |
| 55 | else { return "error"; } |
| 56 | } else { |
| 57 | stream.next(); |
| 58 | return stream.eat("'") ? "string" : "error"; |
| 59 | } |
| 60 | } |
| 61 | if (ch == "/") { |
| 62 | if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } |
| 63 | if (stream.eat("*")) { |
| 64 | state.tokenize = tokenComment(1); |
| 65 | return state.tokenize(stream, state); |
| 66 | } |
| 67 | } |
| 68 | if (ch == "#") { |
| 69 | if (stream.eat("[")) { tcat = "open-attr"; return null; } |
| 70 | stream.eatWhile(/\w/); |
| 71 | return r("macro", "meta"); |
| 72 | } |
| 73 | if (ch == ":" && stream.match(":<")) { |
| 74 | return r("op", null); |
| 75 | } |
| 76 | if (ch.match(/\d/) || (ch == "." && stream.eat(/\d/))) { |
| 77 | var flp = false; |
| 78 | if (!stream.match(/^x[\da-f]+/i) && !stream.match(/^b[01]+/)) { |
| 79 | stream.eatWhile(/\d/); |
| 80 | if (stream.eat(".")) { flp = true; stream.eatWhile(/\d/); } |
| 81 | if (stream.match(/^e[+\-]?\d+/i)) { flp = true; } |
| 82 | } |
| 83 | if (flp) stream.match(/^f(?:32|64)/); |
| 84 | else stream.match(/^[ui](?:8|16|32|64)/); |
| 85 | return r("atom", "number"); |
| 86 | } |
| 87 | if (ch.match(/[()\[\]{}:;,]/)) return r(ch, null); |
| 88 | if (ch == "-" && stream.eat(">")) return r("->", null); |
| 89 | if (ch.match(operatorChar)) { |
| 90 | stream.eatWhile(operatorChar); |
| 91 | return r("op", null); |
| 92 | } |
| 93 | stream.eatWhile(/\w/); |
| 94 | content = stream.current(); |
| 95 | if (stream.match(/^::\w/)) { |
| 96 | stream.backUp(1); |
| 97 | return r("prefix", "variable-2"); |
| 98 | } |
| 99 | if (state.keywords.propertyIsEnumerable(content)) |
| 100 | return r(state.keywords[content], content.match(/true|false/) ? "atom" : "keyword"); |
| 101 | return r("name", "variable"); |
| 102 | } |
nothing calls this directly
no test coverage detected