Usermode/libspiderscript - Fixing a multitude of bugs
[tpg/acess2.git] / Usermode / Libraries / libspiderscript.so_src / ast.c
index 78a54be..9532adb 100644 (file)
@@ -194,7 +194,6 @@ size_t AST_WriteNode(void *Buffer, size_t Offset, tAST_Node *Node)
        // Looping Construct (For loop node)
        case NODETYPE_LOOP:
                WRITE_8(Buffer, Offset, Node->For.bCheckAfter);
-//             printf("Node %p, Loop Tag %p\n", Node, Node->For.Tag);
                WRITE_STR(Buffer, Offset, Node->For.Tag);
                Offset += AST_WriteNode(Buffer, Offset, Node->For.Init);
                Offset += AST_WriteNode(Buffer, Offset, Node->For.Condition);
@@ -255,7 +254,7 @@ size_t AST_WriteNode(void *Buffer, size_t Offset, tAST_Node *Node)
        case NODETYPE_BWAND:    case NODETYPE_LOGICALAND:
        case NODETYPE_BWOR:     case NODETYPE_LOGICALOR:
        case NODETYPE_BWXOR:    case NODETYPE_LOGICALXOR:
-       case NODETYPE_EQUALS:
+       case NODETYPE_EQUALS:   case NODETYPE_NOTEQUALS:
        case NODETYPE_LESSTHAN: case NODETYPE_LESSTHANEQUAL:
        case NODETYPE_GREATERTHAN:      case NODETYPE_GREATERTHANEQUAL:
                Offset += AST_WriteNode(Buffer, Offset, Node->BinOp.Left);
@@ -395,7 +394,7 @@ void AST_FreeNode(tAST_Node *Node)
        case NODETYPE_BWAND:    case NODETYPE_LOGICALAND:
        case NODETYPE_BWOR:     case NODETYPE_LOGICALOR:
        case NODETYPE_BWXOR:    case NODETYPE_LOGICALXOR:
-       case NODETYPE_EQUALS:
+       case NODETYPE_EQUALS:   case NODETYPE_NOTEQUALS:
        case NODETYPE_LESSTHAN: case NODETYPE_LESSTHANEQUAL:
        case NODETYPE_GREATERTHAN:      case NODETYPE_GREATERTHANEQUAL:
                AST_FreeNode( Node->BinOp.Left );
@@ -507,7 +506,8 @@ tAST_Node *AST_NewAssign(tParser *Parser, int Operation, tAST_Node *Dest, tAST_N
 {
        tAST_Node       *ret = AST_int_AllocateNode(Parser, NODETYPE_ASSIGN, 0);
        
-       if( Dest->Type != NODETYPE_VARIABLE && Dest->Type != NODETYPE_ELEMENT ) {
+       if( Dest->Type != NODETYPE_VARIABLE && Dest->Type != NODETYPE_ELEMENT && Dest->Type != NODETYPE_INDEX )
+       {
                free(ret);
                SyntaxError(Parser, 1, "Assign target is not a variable or attribute (instead %i)",
                        Dest->Type);

UCC git Repository :: git.ucc.asn.au