modl-parser
Advanced tools
Comparing version 0.1.11 to 0.1.12
@@ -16,4 +16,4 @@ export declare class Modl { | ||
readonly key: string | ModlQuoted; | ||
readonly value: ModlValue | ModlMap | ModlArray; | ||
constructor(key: string | ModlQuoted, value: ModlValue | ModlMap | ModlArray); | ||
readonly value: ModlPrimitive | ModlMap | ModlArray; | ||
constructor(key: string | ModlQuoted, value: ModlPrimitive | ModlMap | ModlArray); | ||
} | ||
@@ -20,0 +20,0 @@ export declare type ModlMapItem = ModlPair; |
@@ -118,64 +118,74 @@ "use strict"; | ||
}; | ||
var parseModlValue = function (s) { | ||
var parseModlMap = function (s) { | ||
var firstToken = s.next(); | ||
if (firstToken.type === MODLTokeniser_1.TokenType.LBRACKET) { | ||
var arrayEntries = []; | ||
while (!s.empty()) { | ||
var peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RBRACKET) { | ||
var mapEntries = []; | ||
while (!s.empty()) { | ||
var peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RPAREN) { | ||
s.next(); | ||
break; | ||
} | ||
var mp = parseModlValue(s); | ||
mapEntries.push(mp); | ||
peek = s.peek(); | ||
if (peek) { | ||
if (peek.type === MODLTokeniser_1.TokenType.RPAREN) { | ||
s.next(); | ||
break; | ||
} | ||
var ms = parseModlValue(s); | ||
arrayEntries.push(ms); | ||
peek = s.peek(); | ||
if (peek) { | ||
if (peek.type === MODLTokeniser_1.TokenType.RBRACKET) { | ||
s.next(); | ||
break; | ||
if (peek.type === MODLTokeniser_1.TokenType.STRUCT_SEP) { | ||
s.next(); | ||
peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RPAREN) { | ||
throw new ParserException("Unexpected ; before ] at " + peek); | ||
} | ||
if (peek.type === MODLTokeniser_1.TokenType.STRUCT_SEP) { | ||
s.next(); | ||
peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RBRACKET) { | ||
throw new ParserException("Unexpected ; before ] at " + peek); | ||
} | ||
} | ||
} | ||
else { | ||
throw new ParserException("Expected ']' near " + firstToken.toS()); | ||
} | ||
} | ||
return new Model_1.ModlArray(arrayEntries); | ||
else { | ||
throw new ParserException("Expected ')' near " + firstToken.toS()); | ||
} | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.LPAREN) { | ||
var mapEntries = []; | ||
while (!s.empty()) { | ||
var peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RPAREN) { | ||
return new Model_1.ModlMap(mapEntries); | ||
}; | ||
var parseModlArray = function (s) { | ||
var firstToken = s.next(); | ||
var arrayEntries = []; | ||
while (!s.empty()) { | ||
var peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RBRACKET) { | ||
s.next(); | ||
break; | ||
} | ||
var ms = parseModlValue(s); | ||
arrayEntries.push(ms); | ||
peek = s.peek(); | ||
if (peek) { | ||
if (peek.type === MODLTokeniser_1.TokenType.RBRACKET) { | ||
s.next(); | ||
break; | ||
} | ||
var mp = parseModlValue(s); | ||
mapEntries.push(mp); | ||
peek = s.peek(); | ||
if (peek) { | ||
if (peek.type === MODLTokeniser_1.TokenType.RPAREN) { | ||
s.next(); | ||
break; | ||
if (peek.type === MODLTokeniser_1.TokenType.STRUCT_SEP) { | ||
s.next(); | ||
peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RBRACKET) { | ||
throw new ParserException("Unexpected ; before ] at " + peek); | ||
} | ||
if (peek.type === MODLTokeniser_1.TokenType.STRUCT_SEP) { | ||
s.next(); | ||
peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.RPAREN) { | ||
throw new ParserException("Unexpected ; before ] at " + peek); | ||
} | ||
} | ||
} | ||
else { | ||
throw new ParserException("Expected ')' near " + firstToken.toS()); | ||
} | ||
} | ||
return new Model_1.ModlMap(mapEntries); | ||
else { | ||
throw new ParserException("Expected ']' near " + firstToken.toS()); | ||
} | ||
} | ||
return new Model_1.ModlArray(arrayEntries); | ||
}; | ||
var parseModlValue = function (s) { | ||
var firstToken = s.next(); | ||
if (firstToken.type === MODLTokeniser_1.TokenType.LBRACKET) { | ||
s.pushBack(firstToken); | ||
return parseModlArray(s); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.LPAREN) { | ||
s.pushBack(firstToken); | ||
return parseModlMap(s); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.STRING || firstToken.type === MODLTokeniser_1.TokenType.QUOTED) { | ||
@@ -186,6 +196,6 @@ var peek = s.peek(); | ||
s.next(); | ||
return new Model_1.ModlPair(key, parseModlValue(s)); | ||
return new Model_1.ModlPair(key, parsePairValue(s)); | ||
} | ||
if (peek && (peek.type === MODLTokeniser_1.TokenType.LBRACKET || peek.type === MODLTokeniser_1.TokenType.LPAREN)) { | ||
return new Model_1.ModlPair(key, parseModlValue(s)); | ||
return new Model_1.ModlPair(key, parsePairValue(s)); | ||
} | ||
@@ -228,2 +238,56 @@ if (!peek || | ||
}; | ||
var parsePairValue = function (s) { | ||
var firstToken = s.next(); | ||
if (firstToken.type === MODLTokeniser_1.TokenType.LBRACKET) { | ||
s.pushBack(firstToken); | ||
return parseModlArray(s); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.LPAREN) { | ||
s.pushBack(firstToken); | ||
return parseModlMap(s); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.STRING || firstToken.type === MODLTokeniser_1.TokenType.QUOTED) { | ||
var peek = s.peek(); | ||
if (peek && peek.type === MODLTokeniser_1.TokenType.EQUALS) { | ||
throw new ParserException("Unexpected token: '" + firstToken.toS() + "'"); | ||
} | ||
if (peek && (peek.type === MODLTokeniser_1.TokenType.LBRACKET || peek.type === MODLTokeniser_1.TokenType.LPAREN)) { | ||
throw new ParserException("Unexpected token: '" + firstToken.toS() + "'"); | ||
} | ||
if (!peek || | ||
(peek && | ||
(peek.type === MODLTokeniser_1.TokenType.STRUCT_SEP || peek.type === MODLTokeniser_1.TokenType.RPAREN || peek.type === MODLTokeniser_1.TokenType.RBRACKET))) { | ||
if (firstToken.type === MODLTokeniser_1.TokenType.STRING) { | ||
return new Model_1.ModlString(firstToken.value); | ||
} | ||
else { | ||
return new Model_1.ModlQuoted(firstToken.value); | ||
} | ||
} | ||
throw new ParserException("Unexpected token: '" + firstToken.toS() + "'"); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.INTEGER) { | ||
return new Model_1.ModlInteger(firstToken.value); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.FLOAT) { | ||
return new Model_1.ModlFloat(firstToken.value); | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.NULL) { | ||
return Model_1.ModlBoolNull.ModlNull; | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.TRUE) { | ||
return Model_1.ModlBoolNull.ModlTrue; | ||
} | ||
else if (firstToken.type === MODLTokeniser_1.TokenType.FALSE) { | ||
return Model_1.ModlBoolNull.ModlFalse; | ||
} | ||
else { | ||
s.pushBack(firstToken); | ||
var maybePrimitive = parsePrimitive(s); | ||
if (maybePrimitive) { | ||
return maybePrimitive; | ||
} | ||
} | ||
throw new ParserException("Unexpected token: '" + firstToken.toS() + "'"); | ||
}; | ||
//# sourceMappingURL=MODLParser.js.map |
{ | ||
"name": "modl-parser", | ||
"version": "0.1.11", | ||
"version": "0.1.12", | ||
"description": "A MODL parser in TypeScript", | ||
@@ -52,2 +52,2 @@ "main": "dist/index.js", | ||
] | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
43673
674