src/Parser.cc

changeset 114
6cbeb9f8350f
parent 112
def56932f938
child 115
9be16e1c1e44
equal deleted inserted replaced
113:4d4c43eca4d7 114:6cbeb9f8350f
314 314
315 DataType vartype = (TokenIs (TK_Int)) ? TYPE_Int : 315 DataType vartype = (TokenIs (TK_Int)) ? TYPE_Int :
316 (TokenIs (TK_Str)) ? TYPE_String : 316 (TokenIs (TK_Str)) ? TYPE_String :
317 TYPE_Bool; 317 TYPE_Bool;
318 318
319 mLexer->MustGetNext (TK_DollarSign);
319 mLexer->MustGetNext (TK_Symbol); 320 mLexer->MustGetNext (TK_Symbol);
320 String name = GetTokenString(); 321 String name = GetTokenString();
321 322
322 if (mLexer->Next (TK_BracketStart)) 323 if (mLexer->Next (TK_BracketStart))
323 { 324 {
1095 AssignmentOperator oper = ParseAssignmentOperator(); 1096 AssignmentOperator oper = ParseAssignmentOperator();
1096 1097
1097 if (mCurrentMode == PARSERMODE_TopLevel) 1098 if (mCurrentMode == PARSERMODE_TopLevel)
1098 Error ("can't alter variables at top level"); 1099 Error ("can't alter variables at top level");
1099 1100
1101 if (var->isarray)
1102 retbuf->MergeAndDestroy (arrayindex);
1103
1100 // Parse the right operand 1104 // Parse the right operand
1101 if (oper != ASSIGNOP_Increase && oper != ASSIGNOP_Decrease) 1105 if (oper != ASSIGNOP_Increase && oper != ASSIGNOP_Decrease)
1102 { 1106 {
1103 DataBuffer* expr = ParseExpression (var->type); 1107 DataBuffer* expr = ParseExpression (var->type);
1104 retbuf->MergeAndDestroy (expr); 1108 retbuf->MergeAndDestroy (expr);
1105 } 1109 }
1106
1107 if (var->isarray)
1108 retbuf->MergeAndDestroy (arrayindex);
1109 1110
1110 #if 0 1111 #if 0
1111 // <<= and >>= do not have data headers. Solution: expand them. 1112 // <<= and >>= do not have data headers. Solution: expand them.
1112 // a <<= b -> a = a << b 1113 // a <<= b -> a = a << b
1113 // a >>= b -> a = a >> b 1114 // a >>= b -> a = a >> b

mercurial