예제 #1
0
파일: KurumiCS.cs 프로젝트: rozenmad/Kurumi
    public KurumiScript(KurumiStorage storage, KurumiValueList expression)
    {
        int storage_size = storage.size();

        this.storage    = storage;
        this.expression = expression;
        data            = new KurumiReference[storage_size];
        for (int i = 0; i < storage_size; i++)
        {
            data[i] = new KurumiReference(i);
        }
        init_library();
    }
예제 #2
0
파일: KurumiCS.cs 프로젝트: rozenmad/Kurumi
    parse(string string_data)
    {
        try {
            expression         = new KurumiValueList();
            goto_storage       = new KurumiGotoStarage();
            value_i            = 0;
            if_statement_count = 0;
            storage            = new KurumiStorage();
            IterableString s = new IterableString(string_data);
            list = s.tokenize();
            generate_code();

            return(new KurumiScript(storage, expression));
        } catch (Exception e) {
            Console.WriteLine("{0}", e.Message);
            return(null);
        }
    }
예제 #3
0
파일: KurumiCS.cs 프로젝트: rozenmad/Kurumi
    add(KurumiToken token, KurumiStorage storage)
    {
        switch (token.type)
        {
        case TokenType.String:
            add(new KurumiString(token.data));
            break;

        case TokenType.Number:
            add(new KurumiNumber(token.data));
            break;

        case TokenType.Identifier:
            add(new KurumiCommand(KurumiCommandType.REF));
            add(new KurumiNumber(storage.get_index_from_name(token.data)));
            break;

        case TokenType.Operator:
            add(new KurumiCommand(token.optype_to_command()));
            break;

        default: break;
        }
    }