|
@@ -109,7 +109,7 @@ export class IVProgParser {
|
|
|
this.checkOpenCurly();
|
|
|
this.pos++;
|
|
|
this.pushVariableStack();
|
|
|
- while(true) {
|
|
|
+ for(;;) {
|
|
|
this.consumeNewLines();
|
|
|
const token = this.getToken();
|
|
|
if (token.type === this.lexerClass.RK_CONST || this.isVariableType(token)) {
|
|
@@ -467,12 +467,16 @@ export class IVProgParser {
|
|
|
getBoolLiteral (token) {
|
|
|
const val = toBool(token.text);
|
|
|
const exp = new Expressions.BoolLiteral(val);
|
|
|
- exp.sourceInfo = SourceInfo.createSourceInfo(token);;
|
|
|
+ exp.sourceInfo = SourceInfo.createSourceInfo(token);
|
|
|
return exp;
|
|
|
}
|
|
|
|
|
|
parseArrayLiteral (typeString) {
|
|
|
- this.checkOpenCurly();
|
|
|
+ const openCurly = this.checkOpenCurly(true);
|
|
|
+ if(!openCurly) {
|
|
|
+ // const invalid_token = this.getToken();
|
|
|
+ throw new Error("Array can only be init with a literal");
|
|
|
+ }
|
|
|
const beginArray = this.getToken();
|
|
|
if (this.parsingArrayDimension >= 2) {
|
|
|
// TODO better message
|
|
@@ -513,7 +517,7 @@ export class IVProgParser {
|
|
|
parseVectorList (typeString) {
|
|
|
let list = [];
|
|
|
let lastSize = null;
|
|
|
- while(true) {
|
|
|
+ for(;;) {
|
|
|
this.checkOpenCurly();
|
|
|
const beginArray = this.getToken();
|
|
|
if (this.parsingArrayDimension >= 2) {
|
|
@@ -630,7 +634,7 @@ export class IVProgParser {
|
|
|
**/
|
|
|
parseFormalParameters () {
|
|
|
const list = [];
|
|
|
- while(true) {
|
|
|
+ for(;;) {
|
|
|
let dimensions = 0;
|
|
|
const typeString = this.parseType();
|
|
|
const idToken = this.getToken();
|
|
@@ -723,7 +727,7 @@ export class IVProgParser {
|
|
|
}
|
|
|
this.consumeNewLines();
|
|
|
let parsedCommand = false;
|
|
|
- while(true) {
|
|
|
+ for(;;) {
|
|
|
|
|
|
const cmd = this.parseCommand();
|
|
|
if (cmd === null)
|
|
@@ -1164,11 +1168,12 @@ export class IVProgParser {
|
|
|
parseTerm () {
|
|
|
const token = this.getToken();
|
|
|
let sourceInfo = null;
|
|
|
+ let exp = null;
|
|
|
switch(token.type) {
|
|
|
case this.lexerClass.SUM_OP:
|
|
|
this.pos++;
|
|
|
sourceInfo = SourceInfo.createSourceInfo(token);
|
|
|
- const exp = new Expressions.UnaryApp(convertFromString(token.text), this.parseTerm());
|
|
|
+ exp = new Expressions.UnaryApp(convertFromString(token.text), this.parseTerm());
|
|
|
exp.sourceInfo = sourceInfo;
|
|
|
return exp;
|
|
|
case this.lexerClass.INTEGER:
|
|
@@ -1266,14 +1271,14 @@ export class IVProgParser {
|
|
|
parseParenthesisExp () {
|
|
|
this.checkOpenParenthesis();
|
|
|
const tokenA = this.getToken();
|
|
|
- this.pos++;
|
|
|
+ this.pos += 1;
|
|
|
this.consumeNewLines();
|
|
|
const exp = this.parseExpressionOR();
|
|
|
this.consumeNewLines();
|
|
|
this.checkCloseParenthesis();
|
|
|
const tokenB = this.getToken();
|
|
|
const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);
|
|
|
- this.pos++;
|
|
|
+ this.pos += 1;
|
|
|
exp.sourceInfo = sourceInfo;
|
|
|
return exp;
|
|
|
}
|
|
@@ -1295,7 +1300,7 @@ export class IVProgParser {
|
|
|
|
|
|
parseExpressionList () {
|
|
|
const list = [];
|
|
|
- while(true) {
|
|
|
+ for(;;) {
|
|
|
const exp = this.parseExpressionOR();
|
|
|
list.push(exp);
|
|
|
const maybeToken = this.getToken();
|