P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package foundation.io.freemarker;
 
import freemarker.core.ParseException;
import freemarker.template.Template;
 
public class TokenMgrError extends Error {
    
    private static final long serialVersionUID = 1L;
    static final int LEXICAL_ERROR = 0;
    static final int STATIC_LEXER_ERROR = 1;
    static final int INVALID_LEXICAL_STATE = 2;
    static final int LOOP_DETECTED = 3;
    int errorCode;
    private String detail;
    private Integer lineNumber;
    private Integer columnNumber;
    private Integer endLineNumber;
    private Integer endColumnNumber;
 
    protected static final String addEscapes(String str) {
        StringBuilder retval = new StringBuilder();
 
        for(int i = 0; i < str.length(); ++i) {
            switch(str.charAt(i)) {
                case '\u0000':
                    break;
                case '\b':
                    retval.append("\\b");
                    break;
                case '\t':
                    retval.append("\\t");
                    break;
                case '\n':
                    retval.append("\\n");
                    break;
                case '\f':
                    retval.append("\\f");
                    break;
                case '\r':
                    retval.append("\\r");
                    break;
                case '"':
                    retval.append("\\\"");
                    break;
                case '\'':
                    retval.append("\\'");
                    break;
                case '\\':
                    retval.append("\\\\");
                    break;
                default:
                    char ch;
                    if ((ch = str.charAt(i)) >= ' ' && ch <= '~') {
                        retval.append(ch);
                    } else {
                        String s = "0000" + Integer.toString(ch, 16);
                        retval.append("\\u" + s.substring(s.length() - 4, s.length()));
                    }
            }
        }
 
        return retval.toString();
    }
 
    protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
        return "Lexical error: encountered " + (EOFSeen ? "<EOF> " : "\"" + addEscapes(String.valueOf(curChar)) + "\"" + " (" + curChar + "), ") + "after \"" + addEscapes(errorAfter) + "\".";
    }
 
    public String getMessage() {
        return super.getMessage();
    }
 
    public TokenMgrError() {
    }
 
    public TokenMgrError(String detail, int reason) {
        super(detail);
        this.detail = detail;
        this.errorCode = reason;
    }
 
    /** @deprecated */
    @Deprecated
    public TokenMgrError(String detail, int reason, int errorLine, int errorColumn) {
        this(detail, reason, errorLine, errorColumn, 0, 0);
        this.endLineNumber = null;
        this.endColumnNumber = null;
    }
 
    public TokenMgrError(String detail, int reason, int errorLine, int errorColumn, int endLineNumber, int endColumnNumber) {
        super(detail);
        this.detail = detail;
        this.errorCode = reason;
        this.lineNumber = errorLine;
        this.columnNumber = errorColumn;
        this.endLineNumber = endLineNumber;
        this.endColumnNumber = endColumnNumber;
    }
 
    TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, int curChar, int reason) {
        this(EOFSeen, lexState, errorLine, errorColumn, errorAfter, (char)curChar, reason);
    }
 
    public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
        this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
        this.lineNumber = errorLine;
        this.columnNumber = errorColumn;
        this.endLineNumber = this.lineNumber;
        this.endColumnNumber = this.columnNumber;
    }
 
    public Integer getLineNumber() {
        return this.lineNumber;
    }
 
    public Integer getColumnNumber() {
        return this.columnNumber;
    }
 
    public Integer getEndLineNumber() {
        return this.endLineNumber;
    }
 
    public Integer getEndColumnNumber() {
        return this.endColumnNumber;
    }
 
    public String getDetail() {
        return this.detail;
    }
 
    public ParseException toParseException(Template template) {
        return new ParseException(this.getDetail(), template, this.getLineNumber() != null ? this.getLineNumber() : 0, this.getColumnNumber() != null ? this.getColumnNumber() : 0, this.getEndLineNumber() != null ? this.getEndLineNumber() : 0, this.getEndColumnNumber() != null ? this.getEndColumnNumber() : 0);
    }
}