Add yyac code

This commit is contained in:
ineed bots 2023-09-11 17:18:53 -06:00
parent 6627aff577
commit 2c922da647
8 changed files with 2127 additions and 14 deletions

View File

@ -9,3 +9,4 @@
#include "cscr_tempmemory.hpp" #include "cscr_tempmemory.hpp"
#include "cscr_variable.hpp" #include "cscr_variable.hpp"
#include "cscr_vm.hpp" #include "cscr_vm.hpp"
#include "cscr_yacc.hpp"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
#pragma once
namespace codsrc
{
unsigned int LowerCase(unsigned int strVal);
int yyparse();
int StringValue(int len, const char* str);
int yylex();
int yy_get_next_buffer();
int yy_get_previous_state();
int yy_try_NUL_trans(int yy_current_state);
void yyrestart();
game::yy_buffer_state* yy_create_buffer();
void yy_flush_buffer(game::yy_buffer_state* result);
void ScriptParse(game::scriptInstance_t a1, game::sval_u* parseData);
FILE* yy_load_buffer_state();
void yy_fatal_error(const char* err);
void* yy_flex_realloc(void* ptr, unsigned int size);
void yy_init_buffer(game::yy_buffer_state* b, FILE* file);
}

View File

@ -1,7 +1,7 @@
#include <stdinc.hpp> #include <stdinc.hpp>
#include "loader/component_loader.hpp" #include "loader/component_loader.hpp"
#include "utils/hook.hpp" #include "utils/hook.hpp"
//#include "codsrc/clientscript/cscr_yacc.hpp" #include "codsrc/clientscript/cscr_yacc.hpp"
#ifndef DISABLE_RE_CSCR_YACC #ifndef DISABLE_RE_CSCR_YACC
namespace re_cscr_yacc namespace re_cscr_yacc
@ -38,7 +38,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return game::LowerCase(strVal, LowerCase_original); return game::LowerCase(strVal, LowerCase_original);
#else #else
return cscr_yacc::LowerCase(strVal); return codsrc::LowerCase(strVal);
#endif #endif
} }
@ -59,7 +59,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return yyparse_hook.invoke<int>(); return yyparse_hook.invoke<int>();
#else #else
return cscr_yacc::yyparse(); return codsrc::yyparse();
#endif #endif
} }
@ -68,7 +68,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return game::StringValue(len, str_, StringValue_original); return game::StringValue(len, str_, StringValue_original);
#else #else
return cscr_yacc::StringValue(len, str_); return codsrc::StringValue(len, str_);
#endif #endif
} }
@ -90,7 +90,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return yylex_hook.invoke<int>(); return yylex_hook.invoke<int>();
#else #else
return cscr_yacc::yylex(); return codsrc::yylex();
#endif #endif
} }
@ -99,7 +99,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return yy_get_next_buffer_hook.invoke<int>(); return yy_get_next_buffer_hook.invoke<int>();
#else #else
return cscr_yacc::yy_get_next_buffer(); return codsrc::yy_get_next_buffer();
#endif #endif
} }
@ -108,7 +108,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return yy_get_previous_state_hook.invoke<int>(); return yy_get_previous_state_hook.invoke<int>();
#else #else
return cscr_yacc::yy_get_previous_state(); return codsrc::yy_get_previous_state();
#endif #endif
} }
@ -117,7 +117,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return game::yy_try_NUL_trans(yy_current_state, yy_try_NUL_trans_original); return game::yy_try_NUL_trans(yy_current_state, yy_try_NUL_trans_original);
#else #else
return cscr_yacc::yy_try_NUL_trans(yy_current_state); return codsrc::yy_try_NUL_trans(yy_current_state);
#endif #endif
} }
@ -138,7 +138,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
yyrestart_hook.invoke<void>(); yyrestart_hook.invoke<void>();
#else #else
cscr_yacc::yyrestart(); codsrc::yyrestart();
#endif #endif
} }
@ -147,7 +147,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
return yy_create_buffer_hook.invoke<game::yy_buffer_state *>(); return yy_create_buffer_hook.invoke<game::yy_buffer_state *>();
#else #else
return cscr_yacc::yy_create_buffer(); return codsrc::yy_create_buffer();
#endif #endif
} }
@ -156,7 +156,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
game::yy_flush_buffer(result, yy_flush_buffer_original); game::yy_flush_buffer(result, yy_flush_buffer_original);
#else #else
cscr_yacc::yy_flush_buffer(result); codsrc::yy_flush_buffer(result);
#endif #endif
} }
@ -177,7 +177,7 @@ namespace re_cscr_yacc
#ifdef RE_CSCR_YACC_USE_WRAPPERS #ifdef RE_CSCR_YACC_USE_WRAPPERS
game::ScriptParse(a1, parseData, ScriptParse_original); game::ScriptParse(a1, parseData, ScriptParse_original);
#else #else
cscr_yacc::ScriptParse(a1, parseData); codsrc::ScriptParse(a1, parseData);
#endif #endif
} }

View File

@ -19,4 +19,9 @@ namespace game
void yy_flush_buffer(yy_buffer_state* result, void* call_addr = yy_flush_buffer()); void yy_flush_buffer(yy_buffer_state* result, void* call_addr = yy_flush_buffer());
inline void* ScriptParse() { return CALL_ADDR(0x0, 0x69D710); } inline void* ScriptParse() { return CALL_ADDR(0x0, 0x69D710); }
void ScriptParse(scriptInstance_t a1, sval_u* parseData, void* call_addr = ScriptParse()); void ScriptParse(scriptInstance_t a1, sval_u* parseData, void* call_addr = ScriptParse());
FILE* yy_load_buffer_state();
void yy_fatal_error(const char* err);
void* yy_flex_realloc(void* ptr, unsigned int size);
void yy_init_buffer(yy_buffer_state* b, FILE* file);
} }

View File

@ -1,5 +1,5 @@
#include <stdinc.hpp> #include <stdinc.hpp>
//#include "codsrc/clientscript/cscr_yacc.hpp" #include "codsrc/clientscript/cscr_yacc.hpp"
namespace game namespace game
{ {
@ -70,4 +70,24 @@ namespace game
add esp, 0x4; add esp, 0x4;
} }
} }
FILE* yy_load_buffer_state()
{
return codsrc::yy_load_buffer_state();
}
void yy_fatal_error(const char* err)
{
codsrc::yy_fatal_error(err);
}
void* yy_flex_realloc(void* ptr, unsigned int size)
{
return codsrc::yy_flex_realloc(ptr, size);
}
void yy_init_buffer(yy_buffer_state* b, FILE* file)
{
codsrc::yy_init_buffer(b, file);
}
} }

View File

@ -31,7 +31,7 @@
//#define RE_CSCR_STRINGLIST_USE_WRAPPERS //#define RE_CSCR_STRINGLIST_USE_WRAPPERS
//#define RE_CSCR_VARIABLE_USE_WRAPPERS //#define RE_CSCR_VARIABLE_USE_WRAPPERS
//#define RE_CSCR_VM_USE_WRAPPERS //#define RE_CSCR_VM_USE_WRAPPERS
#define RE_CSCR_YACC_USE_WRAPPERS //#define RE_CSCR_YACC_USE_WRAPPERS
//#define DISABLE_RE_CSCR_YACC //#define DISABLE_RE_CSCR_YACC
//#define DISABLE_RE_CSCR_COMPILER //#define DISABLE_RE_CSCR_COMPILER

View File

@ -28,6 +28,14 @@ namespace game
WEAK symbol<void(char* Destination, const char* Source, size_t Count)>I_strncpyz{ 0x0, 0x7AA9C0 }; WEAK symbol<void(char* Destination, const char* Source, size_t Count)>I_strncpyz{ 0x0, 0x7AA9C0 };
WEAK symbol<_iobuf* ()>__iob_func{ 0x0, 0x7AE0DE };
WEAK symbol<size_t(const void* Buffer, size_t ElementSize, size_t ElementCount, FILE* Stream)>_fwrite{ 0x0, 0x7ACBDA };
WEAK symbol<int(const char* const Buffer, const char* const Format, ...)>_sscanf{ 0x0, 0x7AB559 };
WEAK symbol<int(FILE* const Stream, const char* const Format, ...)>_fprintf{ 0x0, 0x7AE406 };
WEAK symbol<void(int Code)>_exit{ 0x0, 0x7AC431 };
WEAK symbol<void* (void* Block, size_t Size)>_realloc{ 0x0, 0x7AECAC };
WEAK symbol<void* (size_t Size)>Z_TryMalloc{ 0x0, 0x7AAD36 };
inline void* I_strncmp_ADDR() { return CALL_ADDR(0x0, 0x5F6A40); } inline void* I_strncmp_ADDR() { return CALL_ADDR(0x0, 0x5F6A40); }
int I_strncmp(const char* str1, const char* str2, int len, void* call_addr = I_strncmp_ADDR()); int I_strncmp(const char* str1, const char* str2, int len, void* call_addr = I_strncmp_ADDR());