index.js
function(state, noError) {
        if(validators.isSemicolon(state)) {
            state.next();
        }
        else if(state.token && !validators.isBlockEnd(state)) {
            var lb = state.lookback();
            if(!lb || state.token.line === lb.line) {
                if(!noError) state.error(constants.unexpectedToken);
                return false;
            }
        }

        return true;
    }
function(state, noError) {
        if(validators.isSemicolon(state)) {
            state.next();
        }
        else if(state.token && !validators.isBlockEnd(state)) {
            var lb = state.lookback();
            if(!lb || state.token.line === lb.line) {
                if(!noError) state.error(constants.unexpectedToken);
                return false;
            }
        }

        return true;
    }
Parses a semicolon or applies automatic semicolon insertion.
@param state The parser state.
@param [noError] {boolean} Whether a missing semicolon should cause an error.
@returns {boolean} Whether the parsing or the insertion was successful.