Feat/range boundary (#241)
* feat: unify the index, line and column in all APIs * docs: describe index, line and column
This commit is contained in:
@ -48,11 +48,13 @@ export interface WordRange {
|
||||
readonly text: string;
|
||||
/** start at 0 */
|
||||
readonly startIndex: number;
|
||||
readonly stopIndex: number;
|
||||
/** end at ..n-1 */
|
||||
readonly endIndex: number;
|
||||
/** start at 1 */
|
||||
readonly line: number;
|
||||
/** start at 1 */
|
||||
readonly startColumn: number;
|
||||
/** end at ..n + 1 */
|
||||
readonly stopColumn: number;
|
||||
}
|
||||
|
||||
@ -81,12 +83,15 @@ export interface Suggestions<T = WordRange> {
|
||||
export interface TextSlice {
|
||||
/** start at 0 */
|
||||
readonly startIndex: number;
|
||||
/** end at ..n-1 */
|
||||
readonly endIndex: number;
|
||||
/** start at 1 */
|
||||
readonly startLine: number;
|
||||
/** end at ..n */
|
||||
readonly endLine: number;
|
||||
/** start at 1 */
|
||||
readonly startColumn: number;
|
||||
/** end at ..n + 1 */
|
||||
readonly endColumn: number;
|
||||
readonly text: string;
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ export default abstract class BasicParser<
|
||||
startLine: start.line,
|
||||
endLine: stop.line,
|
||||
startColumn: start.charPositionInLine + 1,
|
||||
endColumn: stop.charPositionInLine + stop.text.length,
|
||||
endColumn: stop.charPositionInLine + 1 + stop.text.length,
|
||||
text: this._parsedInput.slice(start.startIndex, stop.stopIndex + 1),
|
||||
};
|
||||
});
|
||||
@ -364,10 +364,10 @@ export default abstract class BasicParser<
|
||||
return {
|
||||
text: this._parsedInput.slice(token.startIndex, token.stopIndex + 1),
|
||||
startIndex: token.startIndex,
|
||||
stopIndex: token.stopIndex,
|
||||
endIndex: token.stopIndex,
|
||||
line: token.line,
|
||||
startColumn: token.charPositionInLine + 1,
|
||||
stopColumn: token.charPositionInLine + token.text.length,
|
||||
stopColumn: token.charPositionInLine + 1 + token.text.length,
|
||||
};
|
||||
});
|
||||
return {
|
||||
|
@ -5,10 +5,14 @@ import { ATNSimulator } from 'antlr4ts/atn/ATNSimulator';
|
||||
* Converted from {@link SyntaxError}.
|
||||
*/
|
||||
export interface ParseError {
|
||||
/** start at 1 */
|
||||
readonly startLine: number;
|
||||
/** end at ..n */
|
||||
readonly endLine: number;
|
||||
readonly startCol: number;
|
||||
readonly endCol: number;
|
||||
/** start at 1 */
|
||||
readonly startColumn: number;
|
||||
/** end at ..n + 1 */
|
||||
readonly endColumn: number;
|
||||
readonly message: string;
|
||||
}
|
||||
|
||||
@ -31,7 +35,7 @@ export interface SyntaxError<T> {
|
||||
export type ErrorListener<T> = (parseError: ParseError, originalError: SyntaxError<T>) => void;
|
||||
|
||||
export default class ParseErrorListener implements ANTLRErrorListener<Token> {
|
||||
private _errorListener;
|
||||
private _errorListener: ErrorListener<Token>;
|
||||
|
||||
constructor(errorListener: ErrorListener<Token>) {
|
||||
this._errorListener = errorListener;
|
||||
@ -54,8 +58,8 @@ export default class ParseErrorListener implements ANTLRErrorListener<Token> {
|
||||
{
|
||||
startLine: line,
|
||||
endLine: line,
|
||||
startCol: charPositionInLine,
|
||||
endCol: endCol,
|
||||
startColumn: charPositionInLine + 1,
|
||||
endColumn: endCol + 1,
|
||||
message: msg,
|
||||
},
|
||||
{
|
||||
|
Reference in New Issue
Block a user