paxCompiler for MS VC++. Loading compiled scripts.


#include "stdafx.h"
#include "paxcompilerlib.h"

DWORD h_show_message;

void show_message(char * s)
{
    printf(s);
}

void create_compiled_script()
{
    DWORD hc = PaxCompiler_Create();
    DWORD hl = PaxPascalLanguage_Create();
    DWORD hp = PaxProgram_Create();

    PaxCompiler_Reset(hc);
    PaxCompiler_RegisterLanguage(hc, hl);

    h_show_message = PaxCompiler_RegisterRoutineEx(hc, 0, "ShowMessage", PaxTypeVOID, ccCDECL);
    PaxCompiler_RegisterParameter(hc, h_show_message, PaxTypePCHAR, false);

    PaxCompiler_AddModule(hc, "1", "Pascal");
    PaxCompiler_AddCode(hc, "1", "begin");
    PaxCompiler_AddCode(hc, "1", "  ShowMessage('Hello');");
    PaxCompiler_AddCode(hc, "1", "end.");

    if (PaxCompiler_Compile(hc, hp))
    {
	PaxProgram_SaveToFile(hp, "1.bin");
	printf("Compiled script has been created!\n");
    }
    else
    {
        printf("there are errors:\n");
        for (int i = 0; i < PaxCompiler_GetErrorCount(hc); i++)
        {
		printf(PaxCompiler_GetErrorMessage(hc, i));
        }
    }

    PaxProgram_Destroy(hp);
    PaxPascalLanguage_Destroy(hl);
    PaxCompiler_Destroy(hc);
}

void load_compiled_script()
{
    DWORD hp = PaxProgram_Create();
    PaxProgram_LoadFromFile(hp, "1.bin");
    PaxProgram_SetAddress(hp, h_show_message, &show_message);
    PaxProgram_Run(hp);
    PaxProgram_Destroy(hp);
}

int main(int argc, char* argv[])
{
        HMODULE h_lib = LoadPaxCompilerLib();
        if (h_lib != 0)
        {
			create_compiled_script();
			printf("Load and run compiled script:\n");
			load_compiled_script();
        }
        FreePaxCompilerLib(h_lib);

        getchar();
        return 0;
}


Copyright © 2006-2017 Alexander Baranovsky. All rights reserved.