NewLang Project
Yet another programm language
|
#include <map>
#include <set>
#include <iosfwd>
#include <memory>
#include <mutex>
#include <shared_mutex>
#include <thread>
#include <future>
#include <vector>
#include <deque>
#include <iterator>
#include <iomanip>
#include <variant>
#include <algorithm>
#include <stdexcept>
#include <type_traits>
#include <string_view>
#include <cmath>
#include <random>
#include <typeindex>
#include <locale>
#include <codecvt>
#include <functional>
#include <regex>
#include <filesystem>
#include <utility>
#include <cstdlib>
#include <ctime>
#include <complex>
#include <source_location>
#include <stacktrace>
#include <sstream>
#include <iostream>
#include <fstream>
#include <fcntl.h>
#include <stdarg.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <linux/limits.h>
#include <wait.h>
#include <dlfcn.h>
#include <sys/param.h>
#include <sys/utsname.h>
#include <unistd.h>
#include "logger.h"
#include "rational.h"
#include "build_options.data"
#include "variable.h"
Go to the source code of this file.
Classes | |
struct | newlang::VariablePair |
class | newlang::GlobalObjects |
class | newlang::InternalName |
Namespaces | |
namespace | newlang |
namespace | newlang::runtime |
Macros | |
#define | LOG_LEVEL_ERROR_MESSAGE LOG_LEVEL_INFO |
#define | NL_PARSER(term, format, ...) |
#define | NL_MESSAGE(level, term, format, ...) |
#define | NL_CHECK(cond, format, ...) |
#define | NL_TYPECHECK(term, from, to) |
#define | NL_TYPES(_) |
#define | DEFINE_ENUM(name, value) name = static_cast<uint8_t>(value), |
#define | MAKE_TYPE_NAME(type_name) type_name |
#define | DEFINE_CASE(name, _) |
Typedefs | |
typedef std::vector< std::string > | newlang::StringArray |
typedef std::shared_ptr< Module > | newlang::ModulePtr |
typedef std::shared_ptr< runtime::Buildin > | newlang::BuildinPtr |
typedef std::vector< TermPtr > | newlang::BlockType |
typedef std::vector< ObjPtr > | newlang::ArrayObjType |
typedef std::shared_ptr< RunTime > | newlang::RuntimePtr |
typedef std::shared_ptr< Diag > | newlang::DiagPtr |
typedef std::shared_ptr< Macro > | newlang::MacroPtr |
typedef std::shared_ptr< Parser > | newlang::ParserPtr |
typedef std::shared_ptr< Context > | newlang::RunnerPtr |
typedef ObjPtr | newlang::FunctionType(Context *ctx, Obj &in) |
typedef ObjPtr(* | newlang::EvalFunction) (Context *ctx, const TermPtr &term, Obj *args, bool eval_block) |
typedef std::shared_ptr< std::string > | newlang::SourceType |
typedef std::vector< std::string > | newlang::PostLexerType |
Enumerations | |
enum class | newlang::ObjType : uint8_t { newlang::DEFINE_ENUM , newlang::None = static_cast<uint8_t>(0) , newlang::Bool = static_cast<uint8_t>(1) , newlang::Int8 = static_cast<uint8_t>(2) , newlang::Char = static_cast<uint8_t>(3) , newlang::Byte = static_cast<uint8_t>(4) , newlang::Int16 = static_cast<uint8_t>(5) , newlang::Word = static_cast<uint8_t>(6) , newlang::Int32 = static_cast<uint8_t>(7) , newlang::DWord = static_cast<uint8_t>(8) , newlang::Int64 = static_cast<uint8_t>(9) , newlang::DWord64 = static_cast<uint8_t>(10) , newlang::Integer = static_cast<uint8_t>(15) , newlang::Float16 = static_cast<uint8_t>(16) , newlang::Float32 = static_cast<uint8_t>(17) , newlang::Single = static_cast<uint8_t>(18) , newlang::Float64 = static_cast<uint8_t>(19) , newlang::Double = static_cast<uint8_t>(20) , newlang::Number = static_cast<uint8_t>(24) , newlang::Complex16 = static_cast<uint8_t>(25) , newlang::Complex32 = static_cast<uint8_t>(26) , newlang::Complex64 = static_cast<uint8_t>(27) , newlang::Complex = static_cast<uint8_t>(31) , newlang::Tensor = static_cast<uint8_t>(32) , newlang::Rational = static_cast<uint8_t>(33) , newlang::Arithmetic = static_cast<uint8_t>(47) , newlang::StrChar = static_cast<uint8_t>(48) , newlang::StrWide = static_cast<uint8_t>(49) , newlang::FmtChar = static_cast<uint8_t>(50) , newlang::FmtWide = static_cast<uint8_t>(51) , newlang::ViewChar = static_cast<uint8_t>(52) , newlang::ViewWide = static_cast<uint8_t>(53) , newlang::StdChar = static_cast<uint8_t>(54) , newlang::StdWide = static_cast<uint8_t>(55) , newlang::PtrChar = static_cast<uint8_t>(56) , newlang::PtrWide = static_cast<uint8_t>(57) , newlang::String = static_cast<uint8_t>(59) , newlang::Iterator = static_cast<uint8_t>(62) , newlang::IteratorEnd = static_cast<uint8_t>(63) , newlang::Pointer = static_cast<uint8_t>(64) , newlang::NativeFunc = static_cast<uint8_t>(65) , newlang::Function = static_cast<uint8_t>(70) , newlang::PureFunc = static_cast<uint8_t>(71) , newlang::Thread = static_cast<uint8_t>(80) , newlang::Base = static_cast<uint8_t>(84) , newlang::Sys = static_cast<uint8_t>(85) , newlang::TorchTensor = static_cast<uint8_t>(86) , newlang::Range = static_cast<uint8_t>(104) , newlang::Dictionary = static_cast<uint8_t>(105) , newlang::Interface = static_cast<uint8_t>(106) , newlang::Class = static_cast<uint8_t>(107) , newlang::Ellipsis = static_cast<uint8_t>(108) , newlang::EVAL_FUNCTION = static_cast<uint8_t>(110) , newlang::BLOCK = static_cast<uint8_t>(111) , newlang::BLOCK_TRY = static_cast<uint8_t>(112) , newlang::BLOCK_PLUS = static_cast<uint8_t>(113) , newlang::BLOCK_MINUS = static_cast<uint8_t>(114) , newlang::Macro = static_cast<uint8_t>(115) , newlang::Reference = static_cast<uint8_t>(117) , newlang::Virtual = static_cast<uint8_t>(118) , newlang::Eval = static_cast<uint8_t>(119) , newlang::Other = static_cast<uint8_t>(120) , newlang::Plain = static_cast<uint8_t>(121) , newlang::Object = static_cast<uint8_t>(122) , newlang::Any = static_cast<uint8_t>(123) , newlang::Type = static_cast<uint8_t>(200) , newlang::Struct = static_cast<uint8_t>(202) , newlang::Union = static_cast<uint8_t>(203) , newlang::Enum = static_cast<uint8_t>(204) , newlang::RetPlus = static_cast<uint8_t>(210) , newlang::RetMinus = static_cast<uint8_t>(211) , newlang::RetRepeat = static_cast<uint8_t>(212) , newlang::IntParser = static_cast<uint8_t>(213) , newlang::IntError = static_cast<uint8_t>(214) , newlang::Context = static_cast<uint8_t>(227) , newlang::Module = static_cast<uint8_t>(228) , newlang::Undefined = static_cast<uint8_t>(229) , newlang::Error = static_cast<uint8_t>(230) , newlang::Break = static_cast<uint8_t>(231) , newlang::Continue = static_cast<uint8_t>(232) , newlang::ErrorParser = static_cast<uint8_t>(241) , newlang::ErrorRunTime = static_cast<uint8_t>(242) , newlang::ErrorSignal = static_cast<uint8_t>(243) } |
Functions | |
std::string & | newlang::rtrim (std::string &s, const char *t=ws) |
std::string & | newlang::ltrim (std::string &s, const char *t=ws) |
std::string & | newlang::trim (std::string &s, const char *t=ws) |
template<typename T > | |
T | newlang::repeat (T str, const std::size_t n) |
template<class T > | |
T | newlang::BaseFileName (T const &path, T const &delims="/\\") |
template<class T > | |
T | newlang::RemoveFileExtension (T const &filename) |
void | newlang::NewLangSignalHandler (int signal) |
void | newlang::ParserException (const char *msg, std::string &buffer, int row, int col) |
const char * | newlang::toString (ObjType type) |
const char * | newlang::toCXXType (ObjType type, bool int_bool) |
ObjType | newlang::GetBaseTypeFromString (const std::string_view type_arg, bool *has_error=nullptr) |
const char * | newlang::toCXXRef (const std::string_view ref) |
bool | newlang::isGenericType (ObjType t) |
bool | newlang::isNativeType (ObjType t) |
bool | newlang::isObjectType (ObjType t) |
bool | newlang::isDefaultType (const TermPtr &term) |
const TermPtr | newlang::getDefaultType (const std::string_view text) |
const TermPtr | newlang::getDefaultType (ObjType type) |
const TermPtr | newlang::getNoneTerm () |
const TermPtr | newlang::getEllipsysTerm () |
const TermPtr | newlang::getRequiredTerm () |
const ObjPtr | newlang::getNoneObj () |
const Variable & | newlang::getNoneVar () |
const ObjPtr | newlang::getEllipsysObj () |
const VariablePtr | newlang::getEllipsysVar () |
const VariablePair & | newlang::getNonePair () |
bool | newlang::isBaseType (ObjType t) |
bool | newlang::isFunction (ObjType t) |
bool | newlang::isNative (ObjType t) |
bool | newlang::isEval (ObjType t) |
bool | newlang::isSimpleType (ObjType t) |
bool | newlang::isIntegralType (ObjType t, bool includeBool) |
bool | newlang::isFloatingType (ObjType t) |
bool | newlang::isComplexType (ObjType t) |
bool | newlang::isTensor (ObjType t) |
bool | newlang::isBooleanType (ObjType t) |
bool | newlang::isArithmeticType (ObjType t) |
bool | newlang::isStringChar (ObjType t) |
bool | newlang::isStringWide (ObjType t) |
bool | newlang::isString (ObjType t) |
bool | newlang::isInterrupt (ObjType t) |
bool | newlang::isPlainDataType (ObjType t) |
bool | newlang::isDictionary (ObjType t) |
bool | newlang::isClass (ObjType t) |
bool | newlang::isEllipsis (ObjType t) |
bool | newlang::isRange (ObjType t) |
bool | newlang::isTypeName (ObjType t) |
bool | newlang::isModule (ObjType t) |
bool | newlang::isIndexingType (ObjType curr, ObjType fix) |
bool | newlang::isLocalType (ObjType) |
ObjType | newlang::typeFromLimit (int64_t value, ObjType type_default=ObjType::Int64) |
ObjType | newlang::typeFromLimit (double value, ObjType type_default=ObjType::Float64) |
ObjType | newlang::typeFromString (TermPtr &term, RunTime *rt, bool *has_error) |
bool | newlang::canCastLimit (const ObjType from, const ObjType to) |
bool | newlang::canCast (const ObjType from, const ObjType to) |
bool | newlang::canCast (const std::string from, const std::string to) |
bool | newlang::canCast (const TermPtr &from, const ObjType to) |
bool | newlang::canCast (const TermPtr &from, const TermPtr &to) |
int64_t | newlang::parseInteger (const char *str) |
double | newlang::parseDouble (const char *str) |
std::complex< double > | newlang::parseComplex (const char *) |
bool | newlang::isReservedName (const std::string_view name) |
bool | newlang::isInternalName (const std::string_view name) |
bool | newlang::isMangledName (const std::string_view name) |
bool | newlang::isModuleName (const std::string_view name) |
bool | newlang::isStaticName (const std::string_view name) |
bool | newlang::isFieldName (const std::string_view name) |
bool | newlang::isTrivialName (const std::string_view name) |
bool | newlang::isLocalName (const std::string_view name) |
bool | newlang::isGlobalScope (const std::string_view name) |
bool | newlang::isModuleScope (const std::string_view name) |
bool | newlang::isTypeName (const std::string_view name) |
bool | newlang::isFullName (const std::string_view name) |
bool | newlang::isMacroName (const std::string_view name) |
bool | newlang::isNativeName (const std::string_view name) |
bool | newlang::isLocalAnyName (const std::string_view name) |
bool | newlang::isSystemName (const std::string_view name) |
bool | newlang::isPrivateName (const std::string_view name) |
bool | newlang::isHidenName (const std::string_view name) |
bool | newlang::isVariableName (const std::string_view name) |
bool | newlang::isConstName (const std::string_view name) |
std::string | newlang::NormalizeName (const std::string_view name) |
std::string | newlang::MakeName (std::string name) |
std::string | newlang::ExtractModuleName (const std::string_view name) |
bool | newlang::CheckCharModuleName (const std::string_view name) |
std::string | newlang::ExtractName (std::string name) |
bool | newlang::isContainsType (ObjType generic, ObjType type) |
Variables | |
static constexpr const char * | newlang::ws = " \t\n\r\f\v" |
#define LOG_LEVEL_ERROR_MESSAGE LOG_LEVEL_INFO |
#define NL_PARSER | ( | term, | |
format, | |||
... ) |
Definition at line 310 of file types.h.
Referenced by newlang::Diag::Apply(), newlang::AstAnalysis::CheckArgs_(), newlang::Macro::CheckMacro(), newlang::Parser::CheckModuleTerm(), newlang::RunTime::CreateNative(), newlang::Diag::Emit(), newlang::Context::EvalCreateAsEllipsis_(), newlang::Context::EvalCreateAsFilling_(), newlang::Context::EvalCreateAsValue_(), newlang::Context::EvalEval_(), newlang::Context::EvalInterrupt_(), newlang::Context::EvalIterator_(), newlang::Context::EvalLeftVars_(), newlang::Context::EvalOpBitwise_(), newlang::Context::EvalOpCompare_(), newlang::Context::EvalOpLogical_(), newlang::Macro::EvalOpMacros(), newlang::Context::EvalOpMath_(), newlang::Context::EvalTerm(), newlang::Macro::ExpandMacros(), newlang::Parser::ExpandPredefMacro(), newlang::Macro::ExtractArgs(), newlang::Context::GetFieldValue(), newlang::Context::GetIndexValue(), newlang::Parser::GetNextToken(), newlang::JIT::MakeFunctionPrototype(), newlang::Macro::MakeMacroId(), newlang::RunTime::OpLoadModule(), newlang::Parser::ParseTerm(), newlang::Diag::Pop(), newlang::Parser::PragmaEval(), newlang::Parser::PragmaStaticAssert(), newlang::ProcessMacro(), newlang::Term::SetArgs(), newlang::Context::SetFieldValue(), newlang::Context::SetIndexValue(), newlang::Term::SetType(), and newlang::Parser::SkipBrackets().
#define NL_MESSAGE | ( | level, | |
term, | |||
format, | |||
... ) |
Definition at line 318 of file types.h.
Referenced by newlang::NameLookupStack::AddName(), newlang::AstAnalysis::CalcSummaryType(), newlang::AstAnalysis::CheckAssignRef(), newlang::AstAnalysis::CheckCall(), newlang::AstAnalysis::CheckCallArg(), newlang::AstAnalysis::CheckDims(), newlang::AstAnalysis::CheckField_(), newlang::AstAnalysis::CheckFollow_(), newlang::AstAnalysis::CheckIndex_(), newlang::AstAnalysis::CheckMatching_(), newlang::AstAnalysis::CheckNative_(), newlang::AstAnalysis::CheckOpType(), newlang::AstAnalysis::CheckReference(), newlang::AstAnalysis::CheckStrFormat(), newlang::AstAnalysis::CheckStrPrintf(), newlang::AstAnalysis::CheckWith_(), newlang::AstAnalysis::CkeckRange_(), newlang::AstAnalysis::CreateOp_(), newlang::Diag::Emit(), newlang::NameLookupStack::LookupBlock_(), newlang::AstAnalysis::LookupName(), newlang::AstAnalysis::RecursiveAnalyzer(), newlang::GlobalObjects::RegisterObject(), and newlang::NameLookupStack::SetLookupNamespace().
#define NL_CHECK | ( | cond, | |
format, | |||
... ) |
Definition at line 326 of file types.h.
Referenced by newlang::Context::CallNative_(), newlang::Obj::CloneDataTo(), newlang::Obj::ClonePropTo(), newlang::RunTime::CreateNative(), newlang::RunTime::CreateNative(), newlang::Obj::CreateValue(), and toSlice().
#define NL_TYPECHECK | ( | term, | |
from, | |||
to ) |
Definition at line 333 of file types.h.
Referenced by newlang::Context::EvalTerm().
#define NL_TYPES | ( | _ | ) |
Definition at line 359 of file types.h.
Referenced by newlang::GetBaseTypeFromString(), and newlang::toString().
#define DEFINE_ENUM | ( | name, | |
value ) name = static_cast<uint8_t>(value), |
#define DEFINE_CASE | ( | name, | |
_ ) |