@@ -4,7 +4,6 @@ const ParserError = require('./error/Parser');
44
55const {
66 TOKEN_TYPE_VALUE ,
7- TOKEN_TYPE_STATEMENT ,
87 TOKEN_TYPE_UNARY_OPERATOR ,
98 TOKEN_TYPE_BINARY_OPERATOR ,
109
@@ -117,6 +116,7 @@ class Parser {
117116 }
118117
119118 const token = this . nextTokens [ n - 1 ] ;
119+
120120 return types ? Parser . checkTokenType ( token , types ) : token ;
121121 }
122122
@@ -129,6 +129,7 @@ class Parser {
129129
130130 popToken ( ) {
131131 const token = this . tokens . next ( ) ;
132+
132133 if ( token . done ) {
133134 throw new ParserError ( 'Unexpected end of tokens' ) ;
134135 }
@@ -137,6 +138,7 @@ class Parser {
137138
138139 generateAST ( ) {
139140 const ast = this . generateRootNode ( ) ;
141+
140142 this . getExpectedToken ( TOKEN_STRUCTURE_EOF ) ;
141143 return ast ;
142144 }
@@ -180,6 +182,7 @@ class Parser {
180182
181183 generateLiteral ( ) {
182184 const token = this . getExpectedToken ( TOKEN_STRUCTURE_TEXT_LITERAL ) ;
185+
183186 return {
184187 type : PARSER_TYPE_TEXT_LITERAL ,
185188 value : token . value
@@ -188,9 +191,9 @@ class Parser {
188191
189192 generateStatement ( ) {
190193 const token = this . lookahead ( 2 , [ TOKEN_STATEMENT_IF , TOKEN_STATEMENT_INCLUDE ] ) ;
194+
191195 return (
192- token . subType === TOKEN_STATEMENT_IF
193- ? this . generateBranchStatement ( ) : this . generateIncludeStatement ( )
196+ token . subType === TOKEN_STATEMENT_IF ? this . generateBranchStatement ( ) : this . generateIncludeStatement ( )
194197 ) ;
195198 }
196199
@@ -218,13 +221,15 @@ class Parser {
218221 ] ) ;
219222
220223 let condition ;
224+
221225 if ( token . subType !== TOKEN_STATEMENT_ELSE ) {
222226 condition = this . generateExpression ( ) ;
223227 }
224228 // else it's an ELSE token
225229
226230 this . getExpectedToken ( TOKEN_BOUNDARY_TAG_END ) ;
227231 const consequent = this . generateRootNode ( ) ;
232+
228233 branches . push ( {
229234 condition, consequent
230235 } ) ;
@@ -250,6 +255,7 @@ class Parser {
250255 ] ) ;
251256
252257 let value ;
258+
253259 if ( token . subType === TOKEN_VALUE_VARIABLE ) {
254260 value = {
255261 type : PARSER_TYPE_VARIABLE ,
@@ -281,6 +287,7 @@ class Parser {
281287
282288 while ( true ) {
283289 let token = this . lookahead ( ) ;
290+
284291 if (
285292 token . type !== TOKEN_TYPE_BINARY_OPERATOR
286293 || PrecedenceTable [ token . subType ] . precedence < minPrecedence
@@ -290,7 +297,7 @@ class Parser {
290297 token = this . getExpectedToken ( TOKEN_TYPE_BINARY_OPERATOR ) ;
291298 const precedenceInfo = PrecedenceTable [ token . subType ] ;
292299 const nextPrecedence = precedenceInfo . precedence + 1 ;
293- // there currently is no right associative binary operator
300+ // there currently is no right associative binary operator
294301 // const nextPrecedence = precedenceInfo.association === LEFT_ASSOCIATIVE
295302 // ? precedenceInfo.precedence + 1 : precedenceInfo.precedence;
296303
@@ -325,6 +332,7 @@ class Parser {
325332
326333 generateUnaryExpression ( ) {
327334 const token = this . getExpectedToken ( TOKEN_TYPE_UNARY_OPERATOR ) ;
335+
328336 return {
329337 type : PARSER_TYPE_UNARY_OPERATOR ,
330338 operator : token . subType ,
@@ -334,7 +342,9 @@ class Parser {
334342
335343 generateBracketExpression ( ) {
336344 this . getExpectedToken ( TOKEN_BOUNDARY_BRACKET_OPEN ) ;
345+
337346 const expression = this . generateExpression ( ) ;
347+
338348 this . getExpectedToken ( TOKEN_BOUNDARY_BRACKET_CLOSE ) ;
339349 return expression ;
340350 }
@@ -343,26 +353,28 @@ class Parser {
343353 const token = this . getExpectedToken ( [
344354 TOKEN_TYPE_VALUE , TOKEN_BOUNDARY_STRING_SINGLE , TOKEN_BOUNDARY_STRING_DOUBLE
345355 ] ) ;
356+
346357 if ( token . subType === TOKEN_VALUE_VARIABLE ) {
347358 return {
348359 type : PARSER_TYPE_VARIABLE ,
349360 name : token . value
350361 } ;
351362 }
352-
363+
353364 let value ;
365+
354366 if ( token . subType === TOKEN_BOUNDARY_STRING_SINGLE || token . subType === TOKEN_BOUNDARY_STRING_DOUBLE ) {
355367 value = this . getExpectedToken ( TOKEN_VALUE_STRING ) . value ;
356368 this . getExpectedToken ( token . subType ) ;
357369 }
358-
370+
359371 if ( token . subType === TOKEN_VALUE_FLOAT ) {
360372 value = parseFloat ( token . value ) ;
361373 }
362374 else if ( token . subType === TOKEN_VALUE_INTEGER ) {
363375 value = parseInt ( token . value , 10 ) ;
364376 }
365-
377+
366378 return {
367379 type : PARSER_TYPE_VALUE ,
368380 value
0 commit comments