@@ -204,22 +204,24 @@ export class Parser {
204204          instructions . length  >  i  +  1  && 
205205          getTokenValue ( instructions [ i  +  1 ] . tokens [ 0 ] )  ===  'elif' 
206206        )  { 
207- 
208207          const  elifInstruction  =  instructions [ ++ i ] ; 
209208
210209          const  endOfElif  =  findTokenValueIndex ( elifInstruction . tokens ,  v  =>  v  ===  ':' ) ; 
211210
212211          const  conditionTokens  =  elifInstruction . tokens . slice ( 1 ,  endDefOfDef ) ; 
213212
214-           const  elifConditionNode  =  findIndexes ( conditionTokens ,  OperationTypes . Logical ,  logicOpIndexes ) 
213+           const  elifConditionNode  =  findIndexes ( 
214+             conditionTokens , 
215+             OperationTypes . Logical , 
216+             logicOpIndexes 
217+           ) 
215218            ? this . groupLogicalOperations ( logicOpIndexes ,  conditionTokens ) 
216219            : this . createExpressionNode ( conditionTokens ) ; 
217-    
218-           const  elifBody  =  getBody ( elifInstruction . tokens ,  endOfElif + 1 ) ; 
220+ 
221+           const  elifBody  =  getBody ( elifInstruction . tokens ,  endOfElif   +   1 ) ; 
219222          elifNodes . push ( 
220223            new  ElifNode ( elifConditionNode ,  elifBody ,  getTokenLoc ( elifInstruction . tokens [ 0 ] ) ) 
221224          ) ; 
222-           
223225        } 
224226
225227        // else 
@@ -690,6 +692,9 @@ export class Parser {
690692      const  keyValueTokens  =  splitTokens ( tokens . splice ( 1 ,  tokens . length  -  2 ) ,  ',' ) ; 
691693      const  props  =  [ ]  as  ObjectPropertyInfo [ ] ; 
692694      for  ( let  i  =  0 ;  i  <  keyValueTokens . length ;  i ++ )  { 
695+         if  ( ! keyValueTokens [ i ] . length )  { 
696+           continue ; 
697+         } 
693698        const  keyValue  =  splitTokens ( keyValueTokens [ i ] ,  ':' ) ; 
694699        if  ( keyValue . length  ===  1 )  { 
695700          const  pInfo  =  { 
@@ -731,9 +736,9 @@ export class Parser {
731736
732737    // create Array Node 
733738    if  ( getTokenValue ( tokens [ 0 ] )  ===  '['  &&  getTokenValue ( tokens [ tokens . length  -  1 ] )  ===  ']' )  { 
734-       const  items  =  splitTokens ( tokens . splice ( 1 ,  tokens . length  -  2 ) ,  ',' ) . map ( tkns   => 
735-         this . createExpressionNode ( tkns ) 
736-       ) ; 
739+       const  items  =  splitTokens ( tokens . splice ( 1 ,  tokens . length  -  2 ) ,  ',' ) 
740+         . filter ( tkns   =>   tkns ?. length ) 
741+          . map ( tkns   =>   this . createExpressionNode ( tkns ) ) ; 
737742
738743      return  new  CreateArrayNode ( items ,  getTokenLoc ( tokens [ 0 ] ) ) ; 
739744    } 
0 commit comments