mirror of
https://github.com/CamHenlin/MessagesForMacintosh.git
synced 2025-02-16 23:30:51 +00:00
119 lines
2.4 KiB
JavaScript
119 lines
2.4 KiB
JavaScript
import defineInspect from "../jsutils/defineInspect.mjs";
|
|
|
|
/**
|
|
* Contains a range of UTF-8 character offsets and token references that
|
|
* identify the region of the source from which the AST derived.
|
|
*/
|
|
export var Location = /*#__PURE__*/function () {
|
|
/**
|
|
* The character offset at which this Node begins.
|
|
*/
|
|
|
|
/**
|
|
* The character offset at which this Node ends.
|
|
*/
|
|
|
|
/**
|
|
* The Token at which this Node begins.
|
|
*/
|
|
|
|
/**
|
|
* The Token at which this Node ends.
|
|
*/
|
|
|
|
/**
|
|
* The Source document the AST represents.
|
|
*/
|
|
function Location(startToken, endToken, source) {
|
|
this.start = startToken.start;
|
|
this.end = endToken.end;
|
|
this.startToken = startToken;
|
|
this.endToken = endToken;
|
|
this.source = source;
|
|
}
|
|
|
|
var _proto = Location.prototype;
|
|
|
|
_proto.toJSON = function toJSON() {
|
|
return {
|
|
start: this.start,
|
|
end: this.end
|
|
};
|
|
};
|
|
|
|
return Location;
|
|
}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.
|
|
|
|
defineInspect(Location);
|
|
/**
|
|
* Represents a range of characters represented by a lexical token
|
|
* within a Source.
|
|
*/
|
|
|
|
export var Token = /*#__PURE__*/function () {
|
|
/**
|
|
* The kind of Token.
|
|
*/
|
|
|
|
/**
|
|
* The character offset at which this Node begins.
|
|
*/
|
|
|
|
/**
|
|
* The character offset at which this Node ends.
|
|
*/
|
|
|
|
/**
|
|
* The 1-indexed line number on which this Token appears.
|
|
*/
|
|
|
|
/**
|
|
* The 1-indexed column number at which this Token begins.
|
|
*/
|
|
|
|
/**
|
|
* For non-punctuation tokens, represents the interpreted value of the token.
|
|
*/
|
|
|
|
/**
|
|
* Tokens exist as nodes in a double-linked-list amongst all tokens
|
|
* including ignored tokens. <SOF> is always the first node and <EOF>
|
|
* the last.
|
|
*/
|
|
function Token(kind, start, end, line, column, prev, value) {
|
|
this.kind = kind;
|
|
this.start = start;
|
|
this.end = end;
|
|
this.line = line;
|
|
this.column = column;
|
|
this.value = value;
|
|
this.prev = prev;
|
|
this.next = null;
|
|
}
|
|
|
|
var _proto2 = Token.prototype;
|
|
|
|
_proto2.toJSON = function toJSON() {
|
|
return {
|
|
kind: this.kind,
|
|
value: this.value,
|
|
line: this.line,
|
|
column: this.column
|
|
};
|
|
};
|
|
|
|
return Token;
|
|
}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.
|
|
|
|
defineInspect(Token);
|
|
/**
|
|
* @internal
|
|
*/
|
|
|
|
export function isNode(maybeNode) {
|
|
return maybeNode != null && typeof maybeNode.kind === 'string';
|
|
}
|
|
/**
|
|
* The list of all possible AST node types.
|
|
*/
|