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 |