// Common functions for lexers 'use strict'; function isWhiteSpace(ch) { return ch === 0x20; } // Check if line has zero length or contains spaces only function isEmpty(state, line) { return state.bMarks[line] + state.tShift[line] >= state.eMarks[line]; } // Scan lines from given one and return first not empty function skipEmptyLines(state, from) { for (var max = state.lineMax; from < max; from++) { if (state.bMarks[from] + state.tShift[from] < state.eMarks[from]) { break; } } return from; } // Skip spaces from given position. function skipSpaces(state, pos) { for (var max = state.src.length; pos < max; pos++) { if (!isWhiteSpace(state.src.charCodeAt(pos))) { break; } } return pos; } // Skip char codes from given position function skipChars(state, pos, code) { for (var max = state.src.length; pos < max; pos++) { if (state.src.charCodeAt(pos) !== code) { break; } } return pos; } // Skip char codes reverse from given position /*function skipCharsBack(state, pos, code, min) { for (; pos >= min; pos--) { if (code !== state.src.charCodeAt(pos)) { break; } } return pos; }*/ exports.isWhiteSpace = isWhiteSpace; exports.isEmpty = isEmpty; exports.skipEmptyLines = skipEmptyLines; exports.skipSpaces = skipSpaces; exports.skipChars = skipChars;