Modules/Objects/private/core/ObjectsModule.cpp
Шурупов Илья Викторович d800c1b58e Objects: replace lalr parser with our Language LALR parser
- Add oscript grammar in the Unified Grammar format (Grammar.cpp)
- Rewrite Parser.cpp to parse with SimpleParser and walk the parse tree,
  dispatching on per-production action tags to build the Statement/Expression
  AST (replaces the lalr action-handler bindings)
- Drop generated oscript.cpp table and Bindings.cpp; Private.hpp now uses
  SimpleParser instead of lalr
- Objects links Language instead of LALR; depends on Strings module
- Language: record reduce-rule index per AST node; expose actionOf()/lexemeOf()
  on SimpleParser; GRegex token accepts escaped quotes (\") inside "..."

All Objects tests pass; Language tests pass.
2026-10-07 12:07:41 +03:00

57 lines
2.2 KiB
C++

#include "compiler/Functions.hpp"
#include "primitives/PrimitiveObjects.hpp"
#include "Strings.hpp"
using namespace tp;
using namespace obj;
static void defineTypes() {
objects_api::define(&DictObject::TypeData);
objects_api::define(&IntObject::TypeData);
objects_api::define(&LinkObject::TypeData);
objects_api::define(&ListObject::TypeData);
objects_api::define(&NullObject::TypeData);
objects_api::define(&StringObject::TypeData);
objects_api::define(&BoolObject::TypeData);
objects_api::define(&FloatObject::TypeData);
objects_api::define(&EnumObject::TypeData);
objects_api::define(&ClassObject::TypeData);
objects_api::define(&ColorObject::TypeData);
objects_api::define(&InterpreterObject::TypeData);
objects_api::define(&TypeObject::TypeData);
objects_api::define(&BytecodeObject::TypeData);
objects_api::define(&MethodObject::TypeData);
}
static void defineGroups() {
objects_api::addTypeToGroup(&DictObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&IntObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&LinkObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&ListObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&NullObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&StringObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&BoolObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&FloatObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&EnumObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&ClassObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&ColorObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&MethodObject::TypeData, { "Primitives" });
objects_api::addTypeToGroup(&InterpreterObject::TypeData, { "scripting" });
}
static bool init(const ModuleManifest*) {
objects_api::initialize();
defineTypes();
defineGroups();
return true;
}
static void deinit(const ModuleManifest*) { objects_api::finalize(); }
static ModuleManifest* sModuleDependencies[] = { &gModuleStrings, nullptr };
ModuleManifest obj::gModuleObjects = ModuleManifest("Objects", init, deinit, sModuleDependencies);