commonMain.org.luaj.vm2.parser.TokenMgrError.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of luak Show documentation
Show all versions of luak Show documentation
Multiplatform Kotlin LuaJ port (LUA interpreter)
/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
/* JavaCCOptions: */
package org.luaj.vm2.parser
/** Token Manager Error. */
class TokenMgrError : Error {
/**
* Indicates the reason why the exception is thrown. It will have
* one of the above 4 values.
*/
internal var errorCode: Int = 0
/*
* Constructors of various flavors follow.
*/
/** No arg constructor. */
constructor() {}
/** Constructor with message and reason. */
constructor(message: String, reason: Int) : super(message) {
errorCode = reason
}
/** Full Constructor. */
constructor(
EOFSeen: Boolean,
lexState: Int,
errorLine: Int,
errorColumn: Int,
errorAfter: String,
curChar: Char,
reason: Int
) : this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason)
companion object {
/*
* Ordinals for various reasons why an Error of this type can be thrown.
*/
/** Lexical error occurred. */
const val LEXICAL_ERROR = 0
/** An attempt was made to create a second instance of a static token manager. */
const val STATIC_LEXER_ERROR = 1
/** Tried to change to an invalid lexical state. */
const val INVALID_LEXICAL_STATE = 2
/** Detected (and bailed out of) an infinite loop in the token manager. */
const val LOOP_DETECTED = 3
/**
* Replaces unprintable characters by their escaped (or unicode escaped)
* equivalents in the given string
*/
protected fun addEscapes(str: String): String {
val retval = StringBuilder()
var ch: Char
loop@for (i in 0 until str.length) {
when (str[i]) {
'\u0000' -> Unit
'\b' -> retval.append("\\b")
'\t' -> retval.append("\\t")
'\n' -> retval.append("\\n")
'\u000c' -> retval.append("\\f")
'\r' -> retval.append("\\r")
'\"' -> retval.append("\\\"")
'\'' -> retval.append("\\\'")
'\\' -> retval.append("\\\\")
else -> {
if (run {
ch = str[i]
(ch).toInt() < 0x20
} || ch.toInt() > 0x7e
) {
val s = "0000" + ch.toInt().toString(16)
retval.append("\\u" + s.substring(s.length - 4, s.length))
} else {
retval.append(ch)
}
continue@loop
}
}
}
return retval.toString()
}
/**
* Returns a detailed message for the Error when it is thrown by the
* token manager to indicate a lexical error.
* Parameters :
* EOFSeen : indicates if EOF caused the lexical error
* curLexState : lexical state in which this error occurred
* errorLine : line number when the error occurred
* errorColumn : column number when the error occurred
* errorAfter : prefix that was seen before this error occurred
* curchar : the offending character
* Note: You can customize the lexical error message by modifying this method.
*/
protected fun LexicalError(
EOFSeen: Boolean, lexState: Int,
errorLine: Int, errorColumn: Int, errorAfter: String,
curChar: Char
): String = "Lexical error at line " +
errorLine + ", column " +
errorColumn + ". Encountered: " +
(if (EOFSeen) " " else "\"" + addEscapes(curChar.toString()) + "\"" + " (" + curChar.toInt() + "), ") +
"after : \"" + addEscapes(errorAfter) + "\""
}
}
/* JavaCC - OriginalChecksum=bd3720425dc7b44a5223b12676db358c (do not edit this line) */