emitError method
void
emitError(])
Implementation
void emitError(int msg_code, int name_index, int left_token, int right_token,
[int scope_name_index = 0]) {
var token_name =
(name_index >= 0 && !(name(name_index).toUpperCase() == ('ERROR'))
? '\"' + name(name_index) + '\"'
: '');
if (msg_code == INVALID_CODE) {
msg_code = token_name.isEmpty ? INVALID_CODE : INVALID_TOKEN_CODE;
}
if (msg_code == SCOPE_CODE) {
token_name = '\"';
for (var i = scopeSuffix(-name_index); scopeRhs(i) != 0; i++) {
if (!isNullable(scopeRhs(i))) {
var symbol_index = (scopeRhs(i) > NT_OFFSET
? nonterminalIndex(scopeRhs(i) - NT_OFFSET)
: terminalIndex(scopeRhs(i)));
if (name(symbol_index).isNotEmpty) {
if (token_name.length > 1) {
token_name += ' ';
} // add a space separator
token_name += name(symbol_index);
}
}
}
token_name += '\"';
}
tokStream.reportError(msg_code, left_token, right_token, token_name);
return;
}