| 84 | } |
| 85 | |
| 86 | function parseWord(stream, prop) { |
| 87 | let start = stream.pos |
| 88 | for (;;) { |
| 89 | let next = stream.next |
| 90 | if ((next >= 97 && next <= 122) || (next >= 65 && next <= 90) || next == 95 || (next >= 48 && next <= 57)) stream.pos++ |
| 91 | else break |
| 92 | } |
| 93 | let word = stream.str.slice(start, stream.pos) |
| 94 | if (!word) stream.err("Expected word") |
| 95 | stream.space() |
| 96 | if (/^(?:0x[\da-f]+|\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?)$/i.test(word)) return JSON.parse(word) |
| 97 | if (!prop) { |
| 98 | if (word == "true") return true |
| 99 | if (word == "false") return false |
| 100 | } |
| 101 | return word |
| 102 | } |