()
| 116 | } |
| 117 | |
| 118 | function parseVal(): ParseValueOutput | undefined { |
| 119 | switch (kind) { |
| 120 | case '[': |
| 121 | return parseArr(); |
| 122 | case '{': |
| 123 | return parseObj(); |
| 124 | case 'String': |
| 125 | case 'Number': |
| 126 | case 'Boolean': |
| 127 | case 'Null': |
| 128 | const token = curToken(); |
| 129 | lex(); |
| 130 | return token; |
| 131 | } |
| 132 | expect('Value'); |
| 133 | } |
| 134 | |
| 135 | function curToken(): ParseTokenOutput { |
| 136 | return { kind, start, end, value: JSON.parse(string.slice(start, end)) }; |