clean up object module
This commit is contained in:
parent
4c66704830
commit
5d9e270aa9
68 changed files with 1223 additions and 1229 deletions
|
|
@ -1,7 +1,8 @@
|
|||
|
||||
#include "Private.hpp"
|
||||
|
||||
using namespace obj::BCgen;
|
||||
using namespace tp;
|
||||
using namespace obj;
|
||||
|
||||
typedef lalr::ParserNode<SymbolType> Node;
|
||||
|
||||
|
|
@ -189,7 +190,7 @@ static UserData tmp(const UserData* start, const Node*, size_t) {
|
|||
|
||||
#define BIND(name) parser.set_action_handler(#name, &(name))
|
||||
|
||||
void bind(LalrParser& parser) {
|
||||
void obj::bind(LalrParser& parser) {
|
||||
BIND(scope);
|
||||
|
||||
BIND(stm_list_append);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "Private.hpp"
|
||||
|
||||
using namespace tp;
|
||||
using namespace obj;
|
||||
|
||||
lalr::ErrorPolicy::~ErrorPolicy() = default;
|
||||
|
|
@ -37,10 +38,10 @@ Parser::Result Parser::parse(const std::string& stream) {
|
|||
|
||||
parser.parse(streamStd.begin(), streamStd.end());
|
||||
|
||||
BCgen::StatementScope* out = nullptr;
|
||||
StatementScope* out = nullptr;
|
||||
|
||||
if (parser.accepted() && parser.full()) {
|
||||
out = (BCgen::StatementScope*) parser.user_data().statement;
|
||||
out = (StatementScope*) parser.user_data().statement;
|
||||
}
|
||||
|
||||
return { out, !(parser.accepted() && parser.full()) };
|
||||
|
|
|
|||
|
|
@ -9,42 +9,44 @@
|
|||
|
||||
#include "Tree.hpp"
|
||||
|
||||
struct UserNode {
|
||||
obj::BCgen::Expression* expression = nullptr;
|
||||
obj::BCgen::Statement* statement = nullptr;
|
||||
tp::Buffer<std::string>* arguments = nullptr;
|
||||
|
||||
UserNode(obj::BCgen::Statement* stm) :
|
||||
statement(stm) {}
|
||||
|
||||
UserNode(obj::BCgen::Expression* expr) :
|
||||
expression(expr) {}
|
||||
|
||||
UserNode(tp::Buffer<std::string>* argList) :
|
||||
arguments(argList) {}
|
||||
|
||||
UserNode() = default;
|
||||
|
||||
obj::BCgen::Statement* releaseStm() {
|
||||
auto out = statement;
|
||||
statement = nullptr;
|
||||
return out;
|
||||
}
|
||||
|
||||
void destroy() {
|
||||
delete statement;
|
||||
delete arguments;
|
||||
delete expression;
|
||||
}
|
||||
};
|
||||
|
||||
typedef UserNode UserData;
|
||||
typedef char SymbolType;
|
||||
|
||||
typedef std::basic_string<SymbolType>::iterator IteratorType;
|
||||
|
||||
extern const lalr::ParserStateMachine* oscript_parser_state_machine;
|
||||
|
||||
typedef lalr::Parser<IteratorType, UserData> LalrParser;
|
||||
namespace tp::obj {
|
||||
struct UserNode {
|
||||
obj::Expression* expression = nullptr;
|
||||
obj::Statement* statement = nullptr;
|
||||
tp::Buffer<std::string>* arguments = nullptr;
|
||||
|
||||
void bind(LalrParser& parser);
|
||||
UserNode(obj::Statement* stm) :
|
||||
statement(stm) {}
|
||||
|
||||
UserNode(obj::Expression* expr) :
|
||||
expression(expr) {}
|
||||
|
||||
UserNode(tp::Buffer<std::string>* argList) :
|
||||
arguments(argList) {}
|
||||
|
||||
UserNode() = default;
|
||||
|
||||
obj::Statement* releaseStm() {
|
||||
auto out = statement;
|
||||
statement = nullptr;
|
||||
return out;
|
||||
}
|
||||
|
||||
void destroy() {
|
||||
delete statement;
|
||||
delete arguments;
|
||||
delete expression;
|
||||
}
|
||||
};
|
||||
|
||||
typedef UserNode UserData;
|
||||
typedef char SymbolType;
|
||||
|
||||
typedef std::basic_string<SymbolType>::iterator IteratorType;
|
||||
|
||||
typedef lalr::Parser<IteratorType, UserData> LalrParser;
|
||||
|
||||
void bind(LalrParser& parser);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue