NewLang Project
Yet another programm language
|
#include <context.h>
Public Member Functions | |
Context (RunTime *rt) | |
virtual | ~Context () |
VariablePair * | FindLocalVar (const TermPtr &term) |
VariablePair * | FindLocalVar (const std::string_view name) |
VariablePair * | FindObject (const std::string_view int_name) |
std::string | Dump (size_t num=0) |
Static Public Member Functions | |
static LatterType | Execute (Module &module, TermPtr ast, Context *runner) |
static LatterType | EvalTerm (TermPtr term, Context *runner, bool rvalue=true) |
static LatterType | Eval (TermPtr ast, Context *runner) |
static std::unique_ptr< Sync > | CreateSync (const TermPtr &term) |
static std::string | StringFormat (std::string_view format, Obj &args) |
static std::string | StringPrintf (std::string_view format, Obj &args) |
static ObjPtr | Call (Context *runner, Obj &obj, TermPtr &term) |
static ObjPtr | Call (Context *runner, Obj &obj, Obj &args) |
Public Attributes | |
RunTime * | m_runtime |
LatterType | m_latter |
Protected Member Functions | |
void | PushScope (const TermID id, const std::string_view &name) |
void | PopScope () |
bool | CheckTargetScope (const std::string_view &name) |
std::string | MakeNamespace (int skip, bool is_global) |
ObjPtr | CreateNative_ (TermPtr &proto, const char *module, bool lazzy, const char *mangle_name) |
LatterType | EvalCreate_ (TermPtr &op) |
LatterType | EvalCreateAsValue_ (TermPtr &op) |
LatterType | EvalCreateAsFunc_ (TermPtr &op) |
LatterType | EvalCreateAsEllipsis_ (TermPtr &op) |
LatterType | EvalCreateAsFilling_ (TermPtr &op) |
void | EvalLeftVars_ (VariablePairList &vars, const TermPtrConst &op) |
ObjPtr | EvalIterator_ (TermPtr &term) |
ObjPtr | EvalInterrupt_ (TermPtr &term) |
ObjPtr | EvalOp_ (TermPtr &op) |
ObjPtr | EvalTake_ (TermPtr &op) |
LatterType | EvalWhile_ (TermPtr &op) |
LatterType | EvalDoWhile_ (TermPtr &op) |
LatterType | EvalTryBlock_ (TermPtr &block) |
ObjPtr | EvalEval_ (TermPtr &op) |
Static Protected Member Functions | |
static bool | HasReThrow (TermPtr &block, Context &stack, Obj &obj) |
static RunTime * | GetRT_ (Context *runner) |
static ObjPtr | CallNative_ (Context *runner, Obj &obj, Obj *args=nullptr) |
static ObjPtr | CreateArgs_ (TermPtr &term, Context *runner) |
static ObjPtr | CreateDict (TermPtr &term, Context *runner) |
static ObjPtr | CreateRange (TermPtr &term, Context *runner) |
static ObjPtr | CreateTensor (TermPtr &term, Context *runner) |
static ObjPtr | SetIndexValue (TermPtr &term, ObjPtr value, Context *runner) |
static ObjPtr | SetFieldValue (TermPtr &term, ObjPtr value, Context *runner) |
static ObjPtr | GetIndexValue (TermPtr &term, ObjPtr &value, Context *runner) |
static ObjPtr | GetFieldValue (TermPtr &term, ObjPtr &value, Context *runner) |
static ObjPtr | EvalOpMath_ (TermPtr &op, Context *runner) |
static ObjPtr | EvalOpLogical_ (TermPtr &op, Context *runner) |
static ObjPtr | EvalOpCompare_ (TermPtr &op, Context *runner) |
static ObjPtr | EvalOpBitwise_ (TermPtr &op, Context *runner) |
static ObjPtr | EvalRange_ (TermPtr &op, Context *runner) |
static ObjPtr | EvalFollow_ (TermPtr &op, Context *runner) |
Friends | |
class | CtxPush |
Context::Context | ( | RunTime * | rt | ) |
Definition at line 24 of file context.cpp.
|
static |
Definition at line 697 of file context.cpp.
References newlang::Eval.
Referenced by newlang::JIT::Run().
|
static |
Definition at line 1670 of file context.cpp.
References ASSERT, Call(), newlang::LatterType::Create(), CreateDict(), newlang::RunTime::CreateNative(), newlang::Obj::CreateNone(), CreateRange(), newlang::Obj::CreateRational(), newlang::Obj::CreateString(), CreateTensor(), newlang::Obj::CreateValue(), newlang::DICT, newlang::DOWHILE, newlang::ELLIPSIS, newlang::END, newlang::EVAL, EvalCreate_(), EvalDoWhile_(), EvalEval_(), EvalFollow_(), EvalInterrupt_(), EvalIterator_(), EvalOpBitwise_(), EvalOpCompare_(), EvalOpLogical_(), EvalOpMath_(), EvalTake_(), EvalWhile_(), FindObject(), newlang::FOLLOW, newlang::getEllipsysObj(), newlang::RunTime::GetNativeAddress(), GetRT_(), newlang::Variable::GetValueAsObject(), newlang::INT_MINUS, newlang::INT_PLUS, newlang::INT_REPEAT, newlang::INTEGER, newlang::Variable::is_undefined(), newlang::isDefaultType(), newlang::ITERATOR, LOG_RUNTIME, newlang::NAME, newlang::NATIVE, NL_PARSER, NL_TYPECHECK, newlang::NUMBER, newlang::OP_BITWISE, newlang::OP_COMPARE, newlang::OP_LOGICAL, newlang::OP_MATH, newlang::parseDouble(), newlang::parseInteger(), newlang::RANGE, newlang::RATIONAL, result, newlang::STRCHAR, newlang::STRWIDE, newlang::TAKE, newlang::Variable::Take(), newlang::TENSOR, newlang::toString(), newlang::typeFromLimit(), newlang::typeFromString(), newlang::utf8_decode(), newlang::VariablePair::var, and newlang::WHILE.
Referenced by Call(), CreateArgs_(), CreateRange(), Eval(), EvalCreateAsEllipsis_(), EvalInterrupt_(), EvalIterator_(), EvalOpCompare_(), EvalOpMath_(), GetIndexValue(), newlang::Parser::PragmaStaticAssert(), and SetIndexValue().
|
static |
Definition at line 702 of file context.cpp.
References newlang::BLOCK, newlang::VariablePair::Create(), newlang::Obj::CreateNone(), newlang::RunTime::Escape(), newlang::Eval, EvalTerm(), EvalTryBlock_(), LOG_RUNTIME, LOG_TEST, m_latter, result, and newlang::SEQUENCE.
Referenced by Call().
|
inline |
Definition at line 136 of file context.h.
References FindLocalVar(), newlang::isInternalName(), and LOG_RUNTIME.
Referenced by FindLocalVar(), and FindObject().
VariablePair * Context::FindLocalVar | ( | const std::string_view | name | ) |
Definition at line 1966 of file context.cpp.
VariablePair * Context::FindObject | ( | const std::string_view | int_name | ) |
Definition at line 1920 of file context.cpp.
References FindLocalVar(), newlang::GlobalObjects::FindObject(), newlang::getNonePair(), newlang::LatterType::GetVariablePair(), newlang::isGlobalScope(), newlang::isTypeName(), LOG_RUNTIME, m_latter, m_runtime, and result.
Referenced by EvalLeftVars_(), and EvalTerm().
|
static |
Definition at line 1595 of file context.cpp.
References newlang::Bool, newlang::Byte, newlang::Char, newlang::AstAnalysis::ConvertToVFormat_(), newlang::Double, newlang::DWord, newlang::DWord64, newlang::Float16, newlang::Float32, newlang::Float64, newlang::Obj::getType(), newlang::Obj::GetValueAsInteger(), newlang::Obj::GetValueAsNumber(), newlang::Obj::GetValueAsString(), newlang::Int16, newlang::Int32, newlang::Int64, newlang::Int8, newlang::Single, newlang::Obj::size(), and newlang::Word.
Referenced by Call().
|
static |
Definition at line 1634 of file context.cpp.
References ASSERT, newlang::Bool, newlang::Obj::CreateDict(), newlang::RunTime::CreateNative(), newlang::Obj::CreateNil(), newlang::Obj::CreateString(), newlang::Obj::CreateType(), newlang::Obj::CreateValue(), newlang::Double, newlang::Float16, newlang::Float32, newlang::Int32, newlang::Obj::m_var_type_current, newlang::Pointer, newlang::Obj::size(), and newlang::Obj::toType().
Referenced by Call().
Метод вызывается только из NewLnag кода
runner | |
obj | |
term |
Definition at line 860 of file context.cpp.
References ASSERT, Call(), newlang::Obj::CreateDict(), newlang::Obj::CreateType(), newlang::Obj::CreateValue(), newlang::Dictionary, newlang::ELLIPSIS, EvalTerm(), newlang::FILLING, getSummaryTensorType(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), newlang::isFloatingType(), newlang::isIntegralType(), LOG_RUNTIME, LOG_WARNING, newlang::RunTime::m_diag, newlang::Obj::m_dimensions, m_runtime, newlang::Rational, step(), newlang::toString(), and newlang::VariablePair::var.
Referenced by Call(), EvalTerm(), and newlang::Obj::op_call().
Метод может быть вызван как из NewLnag кода, так и из кода на C/C++ (в реализации Obj::operator())
runner | |
obj | |
term |
Definition at line 1067 of file context.cpp.
References ASSERT, newlang::Obj::begin(), CallNative_(), newlang::Obj::Clone(), newlang::VariablePair::Create(), newlang::Obj::CreateDict(), newlang::Term::CreateIntName(), newlang::Obj::CreateString(), newlang::Obj::CreateValue(), newlang::DICT, Eval(), newlang::Eval, newlang::FmtChar, newlang::FmtWide, newlang::Obj::getType(), newlang::Variable::GetValueAsObject(), newlang::Obj::GetValueAsString(), newlang::LatterType::GetVariablePair(), newlang::Obj::insert(), newlang::Obj::is_dictionary_type(), newlang::Obj::is_function_type(), newlang::Obj::is_native(), newlang::Obj::is_string_type(), newlang::Obj::is_type_name(), LOG_RUNTIME, newlang::Obj::m_prototype, newlang::Obj::m_sequence, newlang::Obj::m_var, newlang::NormalizeName(), newlang::Obj::shared(), newlang::Obj::size(), StringFormat(), StringPrintf(), newlang::Obj::toString(), and newlang::VariablePair::var.
std::string Context::Dump | ( | size_t | num = 0 | ) |
Definition at line 28 of file context.cpp.
References result.
|
inlineprotected |
Definition at line 172 of file context.h.
Referenced by newlang::CtxPush::CtxPush().
|
inlineprotected |
Definition at line 184 of file context.h.
References ASSERT.
Referenced by newlang::CtxPush::~CtxPush().
|
inlineprotected |
Definition at line 189 of file context.h.
References LOG_RUNTIME.
Referenced by EvalDoWhile_(), EvalTryBlock_(), and EvalWhile_().
Definition at line 730 of file context.cpp.
References ASSERT, newlang::BLOCK, newlang::BLOCK_MINUS, newlang::BLOCK_PLUS, newlang::BLOCK_TRY, newlang::Obj::getType(), newlang::isInterrupt(), newlang::Obj::m_value, MakeNamespace(), newlang::RetMinus, newlang::RetPlus, and newlang::SEQUENCE.
Referenced by EvalTryBlock_().
|
inlineprotected |
Definition at line 226 of file context.h.
References m_runtime.
Referenced by CallNative_(), and EvalTerm().
|
protected |
Definition at line 1913 of file context.cpp.
References newlang::RunTime::CreateNative(), m_runtime, and result.
Definition at line 1202 of file context.cpp.
References ASSERT, newlang::RunTime::BaseTypeFromString(), newlang::Bool, newlang::Byte, newlang::Char, newlang::Obj::CreateBaseType(), newlang::Obj::CreateNone(), newlang::Obj::CreateString(), newlang::Obj::CreateValue(), newlang::Double, newlang::DWord, newlang::DWord64, newlang::Float32, newlang::Float64, newlang::FmtChar, newlang::FmtWide, GetRT_(), newlang::Int16, newlang::Int32, newlang::Int64, newlang::Int8, newlang::isDefaultType(), LOG_RUNTIME, newlang::RunTime::m_ffi_call, newlang::RunTime::m_ffi_prep_cif, newlang::RunTime::m_ffi_prep_cif_var, newlang::RunTime::m_ffi_type_double, newlang::RunTime::m_ffi_type_float, newlang::RunTime::m_ffi_type_pointer, newlang::RunTime::m_ffi_type_sint16, newlang::RunTime::m_ffi_type_sint32, newlang::RunTime::m_ffi_type_sint64, newlang::RunTime::m_ffi_type_sint8, newlang::RunTime::m_ffi_type_uint8, newlang::RunTime::m_ffi_type_void, newlang::Obj::m_prototype, newlang::Obj::m_var, newlang::Obj::m_var_type_current, newlang::NativeFunc, NL_CHECK, newlang::None, newlang::Pointer, result, newlang::Single, newlang::Obj::size(), newlang::StrChar, newlang::StrWide, newlang::Obj::toString(), newlang::toString(), and newlang::Word.
Referenced by Call().
Definition at line 1518 of file context.cpp.
References ASSERT, newlang::Obj::CreateDict(), and EvalTerm().
Referenced by CreateDict(), and EvalIterator_().
Definition at line 1532 of file context.cpp.
References newlang::Class, CreateArgs_(), newlang::DICT, and result.
Referenced by CreateTensor(), and EvalTerm().
Definition at line 1543 of file context.cpp.
References ASSERT, newlang::Obj::CreateDict(), newlang::Obj::CreateValue(), EvalTerm(), newlang::GetBaseTypeFromString(), newlang::Range, and result.
Referenced by EvalTerm().
Definition at line 1563 of file context.cpp.
References ASSERT, CreateDict(), newlang::GetBaseTypeFromString(), getSummaryTensorType(), newlang::None, result, newlang::TENSOR, and newlang::TensorShapeFromDict().
Referenced by EvalTerm().
Definition at line 2626 of file context.cpp.
References newlang::ARGS, newlang::ARGUMENT, ASSERT, newlang::canCast(), newlang::DICT, EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), newlang::Int8, newlang::isStringChar(), newlang::isStringWide(), newlang::LOCAL, m_runtime, newlang::RunTime::m_wide_char_type, newlang::NAME, NL_PARSER, newlang::STATIC, newlang::STRCHAR, newlang::STRWIDE, newlang::TENSOR, newlang::toString(), newlang::TYPE, and newlang::VariablePair::var.
Referenced by EvalCreateAsValue_().
Definition at line 2725 of file context.cpp.
References NL_PARSER.
Referenced by EvalCreateAsValue_().
Definition at line 2682 of file context.cpp.
References newlang::ARGS, newlang::ARGUMENT, ASSERT, newlang::DICT, EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), newlang::isIndexingType(), newlang::LOCAL, newlang::NAME, NL_PARSER, newlang::STATIC, newlang::STRCHAR, newlang::STRWIDE, newlang::TENSOR, newlang::toString(), newlang::TYPE, and newlang::VariablePair::var.
Definition at line 2720 of file context.cpp.
References NL_PARSER.
|
protected |
Definition at line 2025 of file context.cpp.
References ASSERT, newlang::ELLIPSIS, EvalCreateAsEllipsis_(), EvalCreateAsFilling_(), EvalCreateAsFunc_(), EvalCreateAsValue_(), newlang::FILLING, and m_latter.
Referenced by EvalTerm().
|
protected |
Definition at line 2223 of file context.cpp.
References ASSERT, newlang::ELLIPSIS, newlang::Eval, EvalLeftVars_(), newlang::FIELD, newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), newlang::INDEX, m_runtime, NL_PARSER, SetFieldValue(), SetIndexValue(), newlang::typeFromString(), and newlang::VariablePair::var.
Referenced by EvalCreate_().
|
protected |
Definition at line 2112 of file context.cpp.
References ASSERT, and EvalLeftVars_().
Referenced by EvalCreate_().
|
protected |
Definition at line 2147 of file context.cpp.
References ASSERT, newlang::Obj::CreateNone(), newlang::ELLIPSIS, EvalLeftVars_(), EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), m_latter, NL_PARSER, and newlang::VariablePair::var.
Referenced by EvalCreate_().
|
protected |
|
protected |
Definition at line 2346 of file context.cpp.
References ASSERT, newlang::ASSIGN, newlang::LatterType::Create(), newlang::VariablePair::Create(), FindObject(), newlang::getNoneObj(), newlang::Variable::is_undefined(), newlang::isGlobalScope(), m_runtime, NL_PARSER, newlang::GlobalObjects::RegisterObject(), newlang::VariablePair::term, and newlang::VariablePair::var.
Referenced by EvalCreateAsEllipsis_(), EvalCreateAsFunc_(), and EvalCreateAsValue_().
Definition at line 3019 of file context.cpp.
References ASSERT, CreateArgs_(), newlang::Obj::CreateDict(), EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), newlang::isReservedName(), LOG_RUNTIME, m_latter, NL_PARSER, result, and newlang::VariablePair::var.
Referenced by EvalTerm().
Definition at line 3147 of file context.cpp.
References ASSERT, newlang::Obj::CreateNone(), newlang::Obj::CreateType(), EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), newlang::INT_MINUS, newlang::INT_PLUS, newlang::INT_REPEAT, NL_PARSER, result, newlang::RetMinus, newlang::RetPlus, newlang::RetRepeat, newlang::toString(), and newlang::VariablePair::var.
Referenced by EvalTerm().
Definition at line 2745 of file context.cpp.
References ASSERT, EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), NL_PARSER, newlang::OP_MATH, result, and newlang::VariablePair::var.
Referenced by EvalTerm().
Definition at line 2736 of file context.cpp.
References ASSERT, NL_PARSER, newlang::OP_LOGICAL, and newlang::OP_MATH.
Referenced by EvalTerm().
Definition at line 2778 of file context.cpp.
References ASSERT, newlang::Obj::CreateBool(), EvalTerm(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), NL_PARSER, newlang::OP_COMPARE, and newlang::VariablePair::var.
Referenced by EvalTerm().
Definition at line 3115 of file context.cpp.
References ASSERT, and NL_PARSER.
Referenced by EvalTerm().
Definition at line 1896 of file context.cpp.
Referenced by EvalTerm().
|
protected |
Definition at line 2809 of file context.cpp.
References ASSERT, CheckTargetScope(), newlang::VariablePair::Create(), newlang::ELLIPSIS, newlang::Eval, newlang::isInterrupt(), LOG_RUNTIME, m_latter, result, newlang::RetMinus, newlang::RetPlus, and newlang::toString().
Referenced by EvalTerm().
|
protected |
Definition at line 2870 of file context.cpp.
References ASSERT, CheckTargetScope(), newlang::VariablePair::Create(), newlang::Eval, newlang::isInterrupt(), LOG_RUNTIME, LOG_TEST, m_latter, result, newlang::RetMinus, newlang::RetPlus, and newlang::toString().
Referenced by EvalTerm().
Definition at line 2924 of file context.cpp.
References ASSERT, newlang::Obj::CreateNone(), newlang::ELLIPSIS, and newlang::Eval.
Referenced by EvalTerm().
|
protected |
Definition at line 759 of file context.cpp.
References ASSERT, newlang::BLOCK_MINUS, newlang::BLOCK_PLUS, newlang::BLOCK_TRY, CheckTargetScope(), newlang::VariablePair::Create(), newlang::Eval, newlang::getNoneVar(), newlang::Variable::GetValueAsObject(), newlang::LatterType::GetVariablePair(), HasReThrow(), newlang::Variable::is_object_type(), newlang::isInterrupt(), LOG_RUNTIME, m_latter, newlang::Obj::m_return_obj, newlang::RetMinus, newlang::RetPlus, newlang::toString(), and newlang::VariablePair::var.
Referenced by Eval().
Definition at line 2953 of file context.cpp.
References newlang::Obj::CreateString(), newlang::RunTime::m_eval_enable, m_runtime, NL_PARSER, and result.
Referenced by EvalTerm().
RunTime* newlang::Context::m_runtime |
Definition at line 115 of file context.h.
Referenced by Call(), CreateNative_(), EvalCreateAsValue_(), EvalEval_(), EvalLeftVars_(), FindObject(), GetRT_(), newlang::Obj::op_class_test(), and SetIndexValue().
LatterType newlang::Context::m_latter |
Definition at line 116 of file context.h.
Referenced by Eval(), EvalCreate_(), EvalCreateAsEllipsis_(), EvalDoWhile_(), EvalIterator_(), EvalTryBlock_(), EvalWhile_(), and FindObject().