aboutsummaryrefslogtreecommitdiff
path: root/node_modules/babylon/lib/tokenizer/state.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/babylon/lib/tokenizer/state.js')
-rw-r--r--node_modules/babylon/lib/tokenizer/state.js146
1 files changed, 146 insertions, 0 deletions
diff --git a/node_modules/babylon/lib/tokenizer/state.js b/node_modules/babylon/lib/tokenizer/state.js
new file mode 100644
index 000000000..30a6a9e50
--- /dev/null
+++ b/node_modules/babylon/lib/tokenizer/state.js
@@ -0,0 +1,146 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _location = require("../util/location");
+
+var _context = require("./context");
+
+var _types = require("./types");
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var State = function () {
+ function State() {
+ _classCallCheck(this, State);
+ }
+
+ State.prototype.init = function init(options, input) {
+ this.strict = options.strictMode === false ? false : options.sourceType === "module";
+
+ this.input = input;
+
+ this.potentialArrowAt = -1;
+
+ this.inMethod = this.inFunction = this.inGenerator = this.inAsync = false;
+
+ this.labels = [];
+
+ this.decorators = [];
+
+ this.tokens = [];
+
+ this.comments = [];
+
+ this.trailingComments = [];
+ this.leadingComments = [];
+ this.commentStack = [];
+
+ this.pos = this.lineStart = 0;
+ this.curLine = 1;
+
+ this.type = _types.types.eof;
+ this.value = null;
+ this.start = this.end = this.pos;
+ this.startLoc = this.endLoc = this.curPosition();
+
+ this.lastTokEndLoc = this.lastTokStartLoc = null;
+ this.lastTokStart = this.lastTokEnd = this.pos;
+
+ this.context = [_context.types.braceStatement];
+ this.exprAllowed = true;
+
+ this.containsEsc = this.containsOctal = false;
+ this.octalPosition = null;
+
+ this.exportedIdentifiers = [];
+
+ return this;
+ };
+
+ // TODO
+
+
+ // TODO
+
+
+ // Used to signify the start of a potential arrow function
+
+
+ // Flags to track whether we are in a function, a generator.
+
+
+ // Labels in scope.
+
+
+ // Leading decorators.
+
+
+ // Token store.
+
+
+ // Comment store.
+
+
+ // Comment attachment store
+
+
+ // The current position of the tokenizer in the input.
+
+
+ // Properties of the current token:
+ // Its type
+
+
+ // For tokens that include more information than their type, the value
+
+
+ // Its start and end offset
+
+
+ // And, if locations are used, the {line, column} object
+ // corresponding to those offsets
+
+
+ // Position information for the previous token
+
+
+ // The context stack is used to superficially track syntactic
+ // context to predict whether a regular expression is allowed in a
+ // given position.
+
+
+ // Used to signal to callers of `readWord1` whether the word
+ // contained any escape sequences. This is needed because words with
+ // escape sequences must not be interpreted as keywords.
+
+
+ // TODO
+
+
+ // Names of exports store. `default` is stored as a name for both
+ // `export default foo;` and `export { foo as default };`.
+
+
+ State.prototype.curPosition = function curPosition() {
+ return new _location.Position(this.curLine, this.pos - this.lineStart);
+ };
+
+ State.prototype.clone = function clone(skipArrays) {
+ var state = new State();
+ for (var key in this) {
+ var val = this[key];
+
+ if ((!skipArrays || key === "context") && Array.isArray(val)) {
+ val = val.slice();
+ }
+
+ state[key] = val;
+ }
+ return state;
+ };
+
+ return State;
+}();
+
+exports.default = State; \ No newline at end of file