import State from "../tokenizer/state" ; import { ErrorWithPos } from "../tokenizer/state" ; import { charCodes } from "../util/charcodes" ; export let state ; export let input ; export function augmentError ( error ) { const loc = locationForIndex ( error . pos ) ; error . message += ` (${ loc . line }:${ loc . column })` ; error . loc = loc ; return error ; } export class Loc { line : i32 ; column : i32 ; constructor ( line , column ) { this . line = line ; this . column = column ; } } export function locationForIndex ( pos ) { let line = 1 ; let column = 1 ; for ( let i = 0 ; i < pos ; i ++ ) { if ( input . charCodeAt ( i ) === charCodes . lineFeed ) { line ++ ; column = 1 ; } else { column ++ ; } } return new Loc ( line , column ) ; } export function initParser ( inputCode ) { input = inputCode ; state = new State ( ) ; }