NewLang Project
Yet another programm language
Loading...
Searching...
No Matches
newlang::Context Class Reference

#include <context.h>

Inheritance diagram for newlang::Context:

Public Member Functions

 Context (RunTime *rt)
 
virtual ~Context ()
 
VariablePairFindLocalVar (const TermPtr &term)
 
VariablePairFindLocalVar (const std::string_view name)
 
VariablePairFindObject (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< SyncCreateSync (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

RunTimem_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 RunTimeGetRT_ (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
 

Detailed Description

Definition at line 111 of file context.h.

Constructor & Destructor Documentation

◆ Context()

Context::Context ( RunTime * rt)

Definition at line 24 of file context.cpp.

◆ ~Context()

virtual newlang::Context::~Context ( )
inlinevirtual

Definition at line 127 of file context.h.

Member Function Documentation

◆ Execute()

LatterType Context::Execute ( Module & module,
TermPtr ast,
Context * runner )
static

Definition at line 697 of file context.cpp.

References newlang::Eval.

Referenced by newlang::JIT::Run().

◆ EvalTerm()

LatterType Context::EvalTerm ( TermPtr term,
Context * runner,
bool rvalue = true )
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().

◆ Eval()

◆ CreateSync()

static std::unique_ptr< Sync > newlang::Context::CreateSync ( const TermPtr & term)
static

◆ FindLocalVar() [1/2]

VariablePair * newlang::Context::FindLocalVar ( const TermPtr & term)
inline

Definition at line 136 of file context.h.

References FindLocalVar(), newlang::isInternalName(), and LOG_RUNTIME.

Referenced by FindLocalVar(), and FindObject().

◆ FindLocalVar() [2/2]

VariablePair * Context::FindLocalVar ( const std::string_view name)

Definition at line 1966 of file context.cpp.

◆ FindObject()

◆ StringFormat()

◆ StringPrintf()

◆ Call() [1/2]

◆ Call() [2/2]

◆ Dump()

std::string Context::Dump ( size_t num = 0)

Definition at line 28 of file context.cpp.

References result.

◆ PushScope()

void newlang::Context::PushScope ( const TermID id,
const std::string_view & name )
inlineprotected

Definition at line 172 of file context.h.

Referenced by newlang::CtxPush::CtxPush().

◆ PopScope()

void newlang::Context::PopScope ( )
inlineprotected

Definition at line 184 of file context.h.

References ASSERT.

Referenced by newlang::CtxPush::~CtxPush().

◆ CheckTargetScope()

bool newlang::Context::CheckTargetScope ( const std::string_view & name)
inlineprotected

Definition at line 189 of file context.h.

References LOG_RUNTIME.

Referenced by EvalDoWhile_(), EvalTryBlock_(), and EvalWhile_().

◆ HasReThrow()

◆ MakeNamespace()

std::string newlang::Context::MakeNamespace ( int skip,
bool is_global )
inlineprotected

Definition at line 202 of file context.h.

References result.

Referenced by HasReThrow().

◆ GetRT_()

static RunTime * newlang::Context::GetRT_ ( Context * runner)
inlinestaticprotected

Definition at line 226 of file context.h.

References m_runtime.

Referenced by CallNative_(), and EvalTerm().

◆ CreateNative_()

ObjPtr Context::CreateNative_ ( TermPtr & proto,
const char * module,
bool lazzy,
const char * mangle_name )
protected

Definition at line 1913 of file context.cpp.

References newlang::RunTime::CreateNative(), m_runtime, and result.

◆ CallNative_()

◆ CreateArgs_()

ObjPtr Context::CreateArgs_ ( TermPtr & term,
Context * runner )
staticprotected

Definition at line 1518 of file context.cpp.

References ASSERT, newlang::Obj::CreateDict(), and EvalTerm().

Referenced by CreateDict(), and EvalIterator_().

◆ CreateDict()

ObjPtr Context::CreateDict ( TermPtr & term,
Context * runner )
staticprotected

Definition at line 1532 of file context.cpp.

References newlang::Class, CreateArgs_(), newlang::DICT, and result.

Referenced by CreateTensor(), and EvalTerm().

◆ CreateRange()

ObjPtr Context::CreateRange ( TermPtr & term,
Context * runner )
staticprotected

◆ CreateTensor()

ObjPtr Context::CreateTensor ( TermPtr & term,
Context * runner )
staticprotected

◆ SetIndexValue()

◆ SetFieldValue()

ObjPtr Context::SetFieldValue ( TermPtr & term,
ObjPtr value,
Context * runner )
staticprotected

Definition at line 2725 of file context.cpp.

References NL_PARSER.

Referenced by EvalCreateAsValue_().

◆ GetIndexValue()

◆ GetFieldValue()

ObjPtr Context::GetFieldValue ( TermPtr & term,
ObjPtr & value,
Context * runner )
staticprotected

Definition at line 2720 of file context.cpp.

References NL_PARSER.

◆ EvalCreate_()

LatterType Context::EvalCreate_ ( TermPtr & op)
protected

◆ EvalCreateAsValue_()

◆ EvalCreateAsFunc_()

LatterType Context::EvalCreateAsFunc_ ( TermPtr & op)
protected

Definition at line 2112 of file context.cpp.

References ASSERT, and EvalLeftVars_().

Referenced by EvalCreate_().

◆ EvalCreateAsEllipsis_()

◆ EvalCreateAsFilling_()

LatterType Context::EvalCreateAsFilling_ ( TermPtr & op)
protected

Definition at line 2217 of file context.cpp.

References NL_PARSER.

Referenced by EvalCreate_().

◆ EvalLeftVars_()

◆ EvalIterator_()

◆ EvalInterrupt_()

◆ EvalOp_()

ObjPtr newlang::Context::EvalOp_ ( TermPtr & op)
protected

◆ EvalOpMath_()

ObjPtr Context::EvalOpMath_ ( TermPtr & op,
Context * runner )
staticprotected

◆ EvalOpLogical_()

ObjPtr Context::EvalOpLogical_ ( TermPtr & op,
Context * runner )
staticprotected

Definition at line 2736 of file context.cpp.

References ASSERT, NL_PARSER, newlang::OP_LOGICAL, and newlang::OP_MATH.

Referenced by EvalTerm().

◆ EvalOpCompare_()

◆ EvalOpBitwise_()

ObjPtr Context::EvalOpBitwise_ ( TermPtr & op,
Context * runner )
staticprotected

Definition at line 3115 of file context.cpp.

References ASSERT, and NL_PARSER.

Referenced by EvalTerm().

◆ EvalRange_()

static ObjPtr newlang::Context::EvalRange_ ( TermPtr & op,
Context * runner )
staticprotected

◆ EvalTake_()

ObjPtr Context::EvalTake_ ( TermPtr & op)
protected

Definition at line 1896 of file context.cpp.

Referenced by EvalTerm().

◆ EvalWhile_()

◆ EvalDoWhile_()

◆ EvalFollow_()

ObjPtr Context::EvalFollow_ ( TermPtr & op,
Context * runner )
staticprotected

Definition at line 2924 of file context.cpp.

References ASSERT, newlang::Obj::CreateNone(), newlang::ELLIPSIS, and newlang::Eval.

Referenced by EvalTerm().

◆ EvalTryBlock_()

◆ EvalEval_()

ObjPtr Context::EvalEval_ ( TermPtr & op)
protected

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().

Friends And Related Symbol Documentation

◆ CtxPush

friend class CtxPush
friend

Definition at line 112 of file context.h.

Member Data Documentation

◆ m_runtime

◆ m_latter

LatterType newlang::Context::m_latter

The documentation for this class was generated from the following files: