UNPKG

buntis

Version:

A 100% compliant, self-hosted typescript parser that emits an ESTree-compatible abstract syntax tree

62 lines (53 loc) 1.57 kB
import { Errors } from '../errors'; export const enum Escape { Empty = -1, InvalidCodePoint = -2, InvalidHex = -3, UnicodeOverflow = -4, InvalidSequence = -5, InvalidUnicode = -6, MissingCurlyBrace = -7 } export const enum UnicodeEscape { Empty = -1, StrictOctal = -2, EightOrNine = -3, InvalidHex = -4, OutOfRange = -5, MissingCurlyBrace = -6 } export function handleIdentifierError(code: Escape): Errors { switch (code) { case Escape.InvalidCodePoint: return Errors.InvalidCodePoint; case Escape.InvalidHex: return Errors.InvalidHexEscapeSequence; case Escape.UnicodeOverflow: return Errors.UnicodeOverflow; case Escape.InvalidUnicode: case Escape.InvalidSequence: return Errors.InvalidUnicodeEscapeSequence; case Escape.MissingCurlyBrace: return Errors.MissingCurlyBrace; default: return Errors.Unexpected; } } export function handleEscapeError(code: UnicodeEscape, isTemplate: 0 | 1): Errors { if (code === UnicodeEscape.StrictOctal) { return isTemplate ? Errors.TemplateOctalLiteral : Errors.StrictOctalEscape; } if (code === UnicodeEscape.EightOrNine) { return Errors.InvalidEightAndNine; } if (code === UnicodeEscape.InvalidHex) { return Errors.InvalidHexEscapeSequence; } if (code === UnicodeEscape.OutOfRange) { return Errors.UnicodeOverflow; } if (code === UnicodeEscape.MissingCurlyBrace) { return Errors.MissingCurlyBrace; } return Errors.Unexpected; }