Initial code commit
This commit is contained in:
43
dist/language-service/LSCommonTokenStream.js
vendored
Normal file
43
dist/language-service/LSCommonTokenStream.js
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = function (d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
}
|
||||
return function (d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var CommonTokenStream_1 = require("antlr4/CommonTokenStream");
|
||||
var Token_1 = require("antlr4/Token");
|
||||
var LSCommonTokenStream = /** @class */ (function (_super) {
|
||||
__extends(LSCommonTokenStream, _super);
|
||||
function LSCommonTokenStream(tokenSource) {
|
||||
return _super.call(this, tokenSource) || this;
|
||||
}
|
||||
LSCommonTokenStream.prototype.LA = function (i) {
|
||||
var token = _super.prototype.LA.call(this, i);
|
||||
if (token != null && token == Token_1.Token.EOF && this.EofListener != undefined) {
|
||||
this.EofListener();
|
||||
}
|
||||
return token;
|
||||
};
|
||||
LSCommonTokenStream.prototype.LT = function (i) {
|
||||
var token = _super.prototype.LT.call(this, i);
|
||||
if (token != null && token.type == Token_1.Token.EOF && this.EofListener != undefined) {
|
||||
this.EofListener();
|
||||
}
|
||||
return token;
|
||||
};
|
||||
return LSCommonTokenStream;
|
||||
}(CommonTokenStream_1.CommonTokenStream));
|
||||
exports.LSCommonTokenStream = LSCommonTokenStream;
|
||||
//# sourceMappingURL=LSCommonTokenStream.js.map
|
||||
1
dist/language-service/LSCommonTokenStream.js.map
vendored
Normal file
1
dist/language-service/LSCommonTokenStream.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"LSCommonTokenStream.js","sourceRoot":"","sources":["../../src/language-service/LSCommonTokenStream.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,6DAA6D;AAC7D,+EAA+E;;;;;;;;;;;;;;;AAE/E,8DAA6D;AAE7D,sCAAqC;AAErC;IAAyC,uCAAiB;IAGtD,6BAAY,WAAmB;eAC3B,kBAAM,WAAW,CAAC;IACtB,CAAC;IAEM,gCAAE,GAAT,UAAU,CAAU;QAChB,IAAI,KAAK,GAAY,iBAAM,EAAE,YAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,aAAK,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;YACtE,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,gCAAE,GAAT,UAAU,CAAU;QAChB,IAAI,KAAK,GAAG,iBAAM,EAAE,YAAC,CAAC,CAAC,CAAC;QAExB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,aAAK,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;YAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IACL,0BAAC;AAAD,CAAC,AAxBD,CAAyC,qCAAiB,GAwBzD;AAxBY,kDAAmB"}
|
||||
33
dist/language-service/LSErrorListener.js
vendored
Normal file
33
dist/language-service/LSErrorListener.js
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = function (d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
}
|
||||
return function (d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var ErrorListener_1 = require("antlr4/error/ErrorListener");
|
||||
var LSErrorListener = /** @class */ (function (_super) {
|
||||
__extends(LSErrorListener, _super);
|
||||
function LSErrorListener(AddSyntaxError) {
|
||||
var _this = _super.call(this) || this;
|
||||
_this.AddSyntaxError = AddSyntaxError;
|
||||
return _this;
|
||||
}
|
||||
LSErrorListener.prototype.syntaxError = function (recognizer, offendingSymbol, line, column, msg, e) {
|
||||
this.AddSyntaxError(msg, line, column);
|
||||
};
|
||||
return LSErrorListener;
|
||||
}(ErrorListener_1.ErrorListener));
|
||||
exports.LSErrorListener = LSErrorListener;
|
||||
//# sourceMappingURL=LSErrorListener.js.map
|
||||
1
dist/language-service/LSErrorListener.js.map
vendored
Normal file
1
dist/language-service/LSErrorListener.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"LSErrorListener.js","sourceRoot":"","sources":["../../src/language-service/LSErrorListener.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,6DAA6D;AAC7D,+EAA+E;;;;;;;;;;;;;;;AAE/E,4DAA2D;AAE3D;IAAqC,mCAAa;IAG9C,yBAAY,cAAsE;QAAlF,YACI,iBAAO,SAEV;QADG,KAAI,CAAC,cAAc,GAAG,cAAc,CAAC;;IACzC,CAAC;IAEM,qCAAW,GAAlB,UAAmB,UAAe,EAAE,eAAoB,EAAC,IAAY,EAAE,MAAc,EAAE,GAAW,EAAE,CAAM;QACtG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACL,sBAAC;AAAD,CAAC,AAXD,CAAqC,6BAAa,GAWjD;AAXY,0CAAe"}
|
||||
272
dist/language-service/LSParserATNSimulator.js
vendored
Normal file
272
dist/language-service/LSParserATNSimulator.js
vendored
Normal file
@@ -0,0 +1,272 @@
|
||||
"use strict";
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = function (d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
}
|
||||
return function (d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var ATNState = require("antlr4/atn/ATNState");
|
||||
var Transition = require("antlr4/atn/Transition");
|
||||
var Errors_1 = require("antlr4/error/Errors");
|
||||
var ParserATNSimulator_1 = require("antlr4/atn/ParserATNSimulator");
|
||||
var PredictionMode_1 = require("antlr4/atn/PredictionMode");
|
||||
var Token_1 = require("antlr4/Token");
|
||||
var Utils_1 = require("./Utils");
|
||||
var LSParserATNSimulator = /** @class */ (function (_super) {
|
||||
__extends(LSParserATNSimulator, _super);
|
||||
function LSParserATNSimulator(parser, atn, decisionToDFA, sharedContextCache, languageService) {
|
||||
var _this = _super.call(this, parser, atn, decisionToDFA, sharedContextCache) || this;
|
||||
_this.predictionMode = PredictionMode_1.PredictionMode.LL;
|
||||
_this.parser = parser;
|
||||
_this.atn = atn;
|
||||
_this.languageService = languageService;
|
||||
return _this;
|
||||
}
|
||||
LSParserATNSimulator.prototype.adaptivePredict = function (input, decision, outerContext) {
|
||||
var tokensLeft = -1;
|
||||
try {
|
||||
this.languageService.IsInPredict = true;
|
||||
this.languageService.EofReachedInPredict = false;
|
||||
if (decision >= 0) {
|
||||
return _super.prototype.adaptivePredict.call(this, input, decision, outerContext);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
if (error instanceof Errors_1.NoViableAltException && error.offendingToken.type === Token_1.Token.EOF) {
|
||||
tokensLeft = error.offendingToken.tokenIndex - this.parser.getCurrentToken().tokenIndex;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
finally {
|
||||
if (this.languageService.EofReachedInPredict) {
|
||||
if (tokensLeft < 0) {
|
||||
tokensLeft = 0;
|
||||
while (input.LA(tokensLeft + 1) != Token_1.Token.EOF) {
|
||||
tokensLeft++;
|
||||
}
|
||||
}
|
||||
if (tokensLeft > 0) {
|
||||
var states = this.CalculateValidStates(input, tokensLeft);
|
||||
this.languageService.RecordErrorStatesBeforeEof(states);
|
||||
}
|
||||
}
|
||||
this.languageService.IsInPredict = false;
|
||||
}
|
||||
};
|
||||
LSParserATNSimulator.prototype.CalculateValidStates = function (input, tokensLeft) {
|
||||
var _this = this;
|
||||
var state = this.atn.states[this.parser.state];
|
||||
var states = [{
|
||||
state: state,
|
||||
transitionStates: []
|
||||
}];
|
||||
var validStates = [];
|
||||
var _loop_1 = function (index) {
|
||||
var _states = [];
|
||||
var nextToken = input.LA(index);
|
||||
states.forEach(function (s) { _states = _states.concat(_this.ConsumeSingleTokenAhead(s, nextToken)).filter(Utils_1.Utils.notDuplicate); });
|
||||
states = _states.filter(Utils_1.Utils.notDuplicate);
|
||||
};
|
||||
// one step each time. Consume a single token each time.
|
||||
for (var index = 1; index <= tokensLeft; index++) {
|
||||
_loop_1(index);
|
||||
}
|
||||
states.forEach(function (s) { validStates = validStates.concat(_this.SearchValidStates(s)); });
|
||||
return validStates.map(function (s) { return s.state; }).filter(Utils_1.Utils.notDuplicate);
|
||||
};
|
||||
LSParserATNSimulator.prototype.ConsumeSingleTokenAhead = function (stateWithTransitionPath, matchToken) {
|
||||
var validStates = [];
|
||||
var currentState = stateWithTransitionPath.state;
|
||||
var nextStateWithTransitionPath = {
|
||||
state: null,
|
||||
transitionStates: stateWithTransitionPath.transitionStates.slice()
|
||||
};
|
||||
if (nextStateWithTransitionPath.transitionStates.length > 0 &&
|
||||
nextStateWithTransitionPath.transitionStates[nextStateWithTransitionPath.transitionStates.length - 1].ruleIndex === currentState.ruleIndex) {
|
||||
nextStateWithTransitionPath.transitionStates.pop();
|
||||
}
|
||||
nextStateWithTransitionPath.transitionStates.push(currentState);
|
||||
if (!(currentState instanceof ATNState.RuleStopState)) {
|
||||
for (var index = 0; index < currentState.transitions.length; index++) {
|
||||
var transition = currentState.transitions[index];
|
||||
var destinationChildState = transition.target;
|
||||
nextStateWithTransitionPath.state = destinationChildState;
|
||||
if (!transition.isEpsilon) {
|
||||
if (transition.label != null && transition.label.contains(matchToken)) {
|
||||
validStates = validStates.concat(this.SearchValidStates(nextStateWithTransitionPath));
|
||||
}
|
||||
}
|
||||
else {
|
||||
validStates = validStates.concat(this.ConsumeSingleTokenAhead(nextStateWithTransitionPath, matchToken)).filter(Utils_1.Utils.notDuplicate);
|
||||
}
|
||||
}
|
||||
}
|
||||
return validStates.filter(Utils_1.Utils.notEmpty);
|
||||
};
|
||||
LSParserATNSimulator.prototype.SearchValidStates = function (stateWithTransitionPath) {
|
||||
var validStates = [];
|
||||
if (!this.IsLastStateBeforeRuleStopState(stateWithTransitionPath.state)) {
|
||||
validStates.push(stateWithTransitionPath);
|
||||
}
|
||||
else {
|
||||
validStates = this.BackTracingAndFindActiveStates(stateWithTransitionPath).filter(Utils_1.Utils.notDuplicate);
|
||||
if (this.HasActiveChildrenState(stateWithTransitionPath.state)) {
|
||||
validStates.push(stateWithTransitionPath);
|
||||
}
|
||||
}
|
||||
return validStates;
|
||||
};
|
||||
LSParserATNSimulator.prototype.BackTracingAndFindActiveStates = function (stateWithTransitionPath) {
|
||||
var validStates = [];
|
||||
var completedRuleIndex = stateWithTransitionPath.state.ruleIndex;
|
||||
var statesStack = this.GetLastStateInDifferentRulesFomStatesStack(stateWithTransitionPath.transitionStates, completedRuleIndex);
|
||||
var currentStateIndex = statesStack.length - 1;
|
||||
var keepBackTracing = true;
|
||||
while (keepBackTracing && currentStateIndex >= 0) {
|
||||
var currentState = statesStack[currentStateIndex];
|
||||
keepBackTracing = false;
|
||||
var followingStates = this.GetRuleFollowingState(currentState, completedRuleIndex);
|
||||
for (var index = 0; index < followingStates.length; index++) {
|
||||
var lastStateBeforeRuleStopState = false;
|
||||
var haveActiveChildrenStatesInCurrentRule = false;
|
||||
var transitions = followingStates[index].transitions;
|
||||
while (transitions.length > 0) {
|
||||
var epsilonTrans = [];
|
||||
for (var tIndex = 0; tIndex < transitions.length; tIndex++) {
|
||||
if (transitions[tIndex].isEpsilon) {
|
||||
if (transitions[tIndex] instanceof Transition.RuleTransition) {
|
||||
haveActiveChildrenStatesInCurrentRule = true;
|
||||
}
|
||||
else if (transitions[tIndex].target instanceof ATNState.RuleStopState) {
|
||||
lastStateBeforeRuleStopState = true;
|
||||
}
|
||||
else {
|
||||
epsilonTrans = epsilonTrans.concat(transitions[tIndex].target.transitions);
|
||||
}
|
||||
}
|
||||
else {
|
||||
haveActiveChildrenStatesInCurrentRule = true;
|
||||
}
|
||||
}
|
||||
transitions = epsilonTrans;
|
||||
if (lastStateBeforeRuleStopState && haveActiveChildrenStatesInCurrentRule) {
|
||||
// We can jump out of loop ahead of schedule.
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (lastStateBeforeRuleStopState) {
|
||||
keepBackTracing = true;
|
||||
}
|
||||
if (haveActiveChildrenStatesInCurrentRule) {
|
||||
//validStates.push(followingStates[index]);
|
||||
var newValidState = {
|
||||
state: followingStates[index],
|
||||
transitionStates: statesStack.slice(0, currentStateIndex + 1)
|
||||
};
|
||||
validStates.push(newValidState);
|
||||
}
|
||||
}
|
||||
currentStateIndex--;
|
||||
if (keepBackTracing) {
|
||||
completedRuleIndex = followingStates[0].ruleIndex;
|
||||
}
|
||||
}
|
||||
return validStates.filter(Utils_1.Utils.notEmpty);
|
||||
};
|
||||
LSParserATNSimulator.prototype.GetLastStateInDifferentRulesFomStatesStack = function (statesStack, lastMatchedRuleIndex) {
|
||||
var lastStates = [];
|
||||
var matchedRuleIndex = lastMatchedRuleIndex;
|
||||
for (var currentStateIndex = statesStack.length - 1; currentStateIndex >= 0; currentStateIndex--) {
|
||||
if (statesStack[currentStateIndex].ruleIndex === matchedRuleIndex) {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
lastStates.push(statesStack[currentStateIndex]);
|
||||
matchedRuleIndex = statesStack[currentStateIndex].ruleIndex;
|
||||
}
|
||||
}
|
||||
lastStates.reverse();
|
||||
return lastStates.filter(Utils_1.Utils.notEmpty);
|
||||
};
|
||||
LSParserATNSimulator.prototype.GetRuleFollowingState = function (state, ruleIndex) {
|
||||
var followingStates = [];
|
||||
if (state instanceof ATNState.RuleStopState) {
|
||||
return followingStates;
|
||||
}
|
||||
var transitions = state.transitions;
|
||||
while (transitions.length > 0) {
|
||||
var epsilonTrans = [];
|
||||
for (var index = 0; index < transitions.length; index++) {
|
||||
if (transitions[index].isEpsilon) {
|
||||
if (transitions[index] instanceof Transition.RuleTransition) {
|
||||
if (transitions[index].ruleIndex === ruleIndex) {
|
||||
followingStates.push(transitions[index].followState);
|
||||
}
|
||||
}
|
||||
else if (!(transitions[index].target instanceof ATNState.RuleStopState)) {
|
||||
epsilonTrans = epsilonTrans.concat(transitions[index].target.transitions);
|
||||
}
|
||||
}
|
||||
}
|
||||
transitions = epsilonTrans;
|
||||
}
|
||||
return followingStates.filter(Utils_1.Utils.notEmpty);
|
||||
};
|
||||
// Means with this state, parser can make up a complete rule.
|
||||
LSParserATNSimulator.prototype.IsLastStateBeforeRuleStopState = function (state) {
|
||||
var transitions = state.transitions;
|
||||
while (transitions.length > 0) {
|
||||
var epsilonTrans = [];
|
||||
for (var index = 0; index < transitions.length; index++) {
|
||||
if (transitions[index].isEpsilon) {
|
||||
if (transitions[index].target instanceof ATNState.RuleStopState) {
|
||||
return true;
|
||||
}
|
||||
else if (!(transitions[index] instanceof Transition.RuleTransition)) {
|
||||
epsilonTrans = epsilonTrans.concat(transitions[index].target.transitions);
|
||||
}
|
||||
}
|
||||
}
|
||||
transitions = epsilonTrans;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
LSParserATNSimulator.prototype.HasActiveChildrenState = function (state) {
|
||||
var transitions = state.transitions;
|
||||
while (transitions.length > 0) {
|
||||
var epsilonTrans = [];
|
||||
for (var index = 0; index < transitions.length; index++) {
|
||||
if (transitions[index].isEpsilon) {
|
||||
if (transitions[index] instanceof Transition.RuleTransition) {
|
||||
return true;
|
||||
}
|
||||
else if (!(transitions[index].target instanceof ATNState.RuleStopState)) {
|
||||
epsilonTrans = epsilonTrans.concat(transitions[index].target.transitions);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
transitions = epsilonTrans;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
return LSParserATNSimulator;
|
||||
}(ParserATNSimulator_1.ParserATNSimulator));
|
||||
exports.LSParserATNSimulator = LSParserATNSimulator;
|
||||
//# sourceMappingURL=LSParserATNSimulator.js.map
|
||||
1
dist/language-service/LSParserATNSimulator.js.map
vendored
Normal file
1
dist/language-service/LSParserATNSimulator.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
136
dist/language-service/LanguageService.js
vendored
Normal file
136
dist/language-service/LanguageService.js
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
"use strict";
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var antlr4 = require("antlr4");
|
||||
var InputStream_1 = require("antlr4/InputStream");
|
||||
var IntervalSet_1 = require("antlr4/IntervalSet");
|
||||
var LSCommonTokenStream_1 = require("./LSCommonTokenStream");
|
||||
var LSErrorListener_1 = require("./LSErrorListener");
|
||||
var LSParserATNSimulator_1 = require("./LSParserATNSimulator");
|
||||
var Utils_1 = require("./Utils");
|
||||
var StateContext = /** @class */ (function () {
|
||||
function StateContext(state, ruleIndex, expectedTokens, ruleStack) {
|
||||
this.State = state;
|
||||
this.RuleIndex = ruleIndex;
|
||||
this.ExpectedTokens = expectedTokens;
|
||||
this.RuleStack = ruleStack;
|
||||
}
|
||||
return StateContext;
|
||||
}());
|
||||
var LanguageService = /** @class */ (function () {
|
||||
function LanguageService(lexerCtr, parserCtr, keywordsDict) {
|
||||
var _this = this;
|
||||
this._lexer = null;
|
||||
this._parser = null;
|
||||
this._keywordsDict = null;
|
||||
this.StatesBeforeEof = {};
|
||||
this.SyntaxErrors = [];
|
||||
this._eofReached = false;
|
||||
this.EofReachedInPredict = false;
|
||||
this._exThrownAfterEofReached = false;
|
||||
this.IsInPredict = false;
|
||||
this.GetExpectedTokenStrs = function () {
|
||||
var intervalSets = new IntervalSet_1.IntervalSet();
|
||||
for (var key in this.StatesBeforeEof) {
|
||||
if (this.StatesBeforeEof.hasOwnProperty(key)) {
|
||||
intervalSets.addSet(this.StatesBeforeEof[key].ExpectedTokens);
|
||||
}
|
||||
}
|
||||
var expectedStrings = [];
|
||||
if (intervalSets.intervals === null) {
|
||||
return expectedStrings;
|
||||
}
|
||||
for (var i = 0; i < intervalSets.intervals.length; i++) {
|
||||
var v = intervalSets.intervals[i];
|
||||
if (v.start < 0) {
|
||||
continue;
|
||||
}
|
||||
for (var j = v.start; j < v.stop; j++) {
|
||||
var tokenString = this._parser._input.tokenSource.symbolicNames[j];
|
||||
if (tokenString != null) {
|
||||
var keyword = this._keywordsDict[tokenString.replace(/^\'|\'$/gi, "")];
|
||||
if (keyword != null) {
|
||||
expectedStrings.push(keyword);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return expectedStrings.filter(Utils_1.Utils.notDuplicate);
|
||||
};
|
||||
this.RecordStateBeforeEof = function () {
|
||||
if (!this.IsInPredict) {
|
||||
this.EofReached = true;
|
||||
if (!this.ExThrownAfterEofReached) {
|
||||
if (this.StatesBeforeEof[this._parser.state] == undefined || this.StatesBeforeEof[this._parser.state] == null) {
|
||||
this.StatesBeforeEof[this._parser.state] = new StateContext(this._parser.state, this._parser._ctx.ruleIndex, this._parser.getExpectedTokens(), this._parser.getRuleInvocationStack());
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.EofReachedInPredict = true;
|
||||
}
|
||||
};
|
||||
this.RecordErrorStatesBeforeEof = function (states) {
|
||||
var _this = this;
|
||||
if (states.length > 0) {
|
||||
states.forEach(function (state) {
|
||||
if (state != null) {
|
||||
if (_this.StatesBeforeEof[state.stateNumber] == undefined || _this.StatesBeforeEof[state.stateNumber] == null) {
|
||||
_this.StatesBeforeEof[state.stateNumber] = new StateContext(state.stateNumber, state.ruleIndex, _this._parser._interp.atn.nextTokens(state), _this._parser.getRuleInvocationStack());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
this.AddSyntaxError = function (msg, line, column) {
|
||||
var error = {
|
||||
line: line,
|
||||
column: column,
|
||||
Message: msg
|
||||
};
|
||||
_this.SyntaxErrors.push(error);
|
||||
if (_this._eofReached) {
|
||||
_this._exThrownAfterEofReached = true;
|
||||
}
|
||||
};
|
||||
this._lexerCtr = lexerCtr;
|
||||
this._parserCtr = parserCtr;
|
||||
this._keywordsDict = keywordsDict;
|
||||
}
|
||||
LanguageService.prototype._parse = function (input) {
|
||||
var _this = this;
|
||||
this.PrepareParse();
|
||||
this._lexer = new this._lexerCtr(new InputStream_1.InputStream(input));
|
||||
this._parser = new this._parserCtr(new LSCommonTokenStream_1.LSCommonTokenStream(this._lexer));
|
||||
this._parser.getTokenStream().EofListener = function () {
|
||||
_this.RecordStateBeforeEof();
|
||||
};
|
||||
this._parser.removeErrorListeners();
|
||||
this._parser.addErrorListener(new LSErrorListener_1.LSErrorListener(function (msg, line, column) {
|
||||
_this.AddSyntaxError(msg, line, column);
|
||||
}));
|
||||
var decisionsToDFA = this._parser.atn.decisionToState.map(function (ds, index) { return new antlr4.dfa.DFA(ds, index); });
|
||||
this._parser._interp = new LSParserATNSimulator_1.LSParserATNSimulator(this._parser, this._parser.atn, decisionsToDFA, new antlr4.PredictionContextCache(), this);
|
||||
this._parser.root();
|
||||
};
|
||||
LanguageService.prototype.PrepareParse = function () {
|
||||
this._eofReached = false;
|
||||
this.EofReachedInPredict = false;
|
||||
this._exThrownAfterEofReached = false;
|
||||
this.StatesBeforeEof = {};
|
||||
this.SyntaxErrors = [];
|
||||
};
|
||||
LanguageService.prototype.getCompletionWords = function (input) {
|
||||
this._parse(input);
|
||||
return this.GetExpectedTokenStrs();
|
||||
};
|
||||
LanguageService.prototype.getSyntaxErrors = function (input) {
|
||||
this._parse(input);
|
||||
return this.SyntaxErrors;
|
||||
};
|
||||
return LanguageService;
|
||||
}());
|
||||
exports.LanguageService = LanguageService;
|
||||
//# sourceMappingURL=LanguageService.js.map
|
||||
1
dist/language-service/LanguageService.js.map
vendored
Normal file
1
dist/language-service/LanguageService.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"LanguageService.js","sourceRoot":"","sources":["../../src/language-service/LanguageService.ts"],"names":[],"mappings":"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"}
|
||||
18
dist/language-service/Utils.js
vendored
Normal file
18
dist/language-service/Utils.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
"use strict";
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var Utils = /** @class */ (function () {
|
||||
function Utils() {
|
||||
}
|
||||
Utils.notEmpty = function (value) {
|
||||
return value !== null && value !== undefined;
|
||||
};
|
||||
Utils.notDuplicate = function (item, pos, self) {
|
||||
return self.indexOf(item) == pos;
|
||||
};
|
||||
return Utils;
|
||||
}());
|
||||
exports.Utils = Utils;
|
||||
//# sourceMappingURL=Utils.js.map
|
||||
1
dist/language-service/Utils.js.map
vendored
Normal file
1
dist/language-service/Utils.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../src/language-service/Utils.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,6DAA6D;AAC7D,+EAA+E;;AAE/E;IAAA;IAQA,CAAC;IAPiB,cAAQ,GAAtB,UAA+B,KAAiC;QAC5D,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IACjD,CAAC;IAEa,kBAAY,GAA1B,UAA2B,IAAI,EAAE,GAAG,EAAE,IAAI;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACrC,CAAC;IACL,YAAC;AAAD,CAAC,AARD,IAQC;AARY,sBAAK"}
|
||||
Reference in New Issue
Block a user