C# Класс Bike.Interpreter.Interpreter

Показать файл Открыть проект Примеры использования класса

Открытые методы

Метод Описание
AddHandler ( object target, string name, BikeFunction bikeFunc, Interpreter interpreter, bool isStatic ) : void
CallBikeFunction ( BikeFunction function, object self, System.Arguments arguments ) : object
CallBikeFunction ( BikeFunction function, object self, object argValues ) : object
CallDelegate ( Delegate currentTarget, object args ) : object
CallInstanceFunction ( object target, Type typeParams, string funcName, object args ) : object
CallInstanceFunction ( object target, string funcName, object args ) : object
CallStaticFunction ( Type type, Type typeParams, string funcName, object args ) : object
CallStaticFunction ( Type type, string funcName, object args ) : object
CreateInstance ( Type type, object args ) : object
GetInstanceIndexer ( object target, object args ) : object
GetInstanceProperty ( object target, string propName ) : object
GetStaticProperty ( Type type, string propName ) : object
HashCode ( object obj ) : int
Is ( object obj, Type type ) : bool
MarshallArgumentsToBike ( object clrObjects ) : object[]
MarshallArgumentsToClr ( object bikeObjects ) : object[]
MarshallToBike ( object dotNetObject ) : object
MarshallToClr ( object bikeObject ) : object
Modulus ( object lv, object rv ) : object
OpAdd ( object lv, object rv ) : object
OpAnd ( object lv, Func rvThunk ) : object
OpDivide ( object lv, object rv ) : object
OpDoubleMinus ( object value ) : object
OpDoublePlus ( object value ) : object
OpEqual ( object lv, object rv ) : BikeBoolean
OpGreaterThan ( object lv, object rv ) : object
OpGreaterThanOrEqual ( object lv, object rv ) : object
OpLessThan ( object lv, object rv ) : object
OpLessThanOrEqual ( object lv, object rv ) : object
OpMinus ( object value ) : object
OpMinus ( object lv, object rv ) : object
OpMultiply ( object lv, object rv ) : object
OpNot ( object value ) : BikeBoolean
OpNotEqual ( object lv, object rv ) : BikeBoolean
OpOr ( object lv, Func rvThunk ) : object
OpPlus ( object value ) : object
Run ( string coreCodePath, string filePath = null ) : void
SetInstanceIndexer ( object target, object args, object value ) : void
SetInstanceProperty ( object target, string propName, object value ) : void
SetStaticProperty ( Type type, string propName, object value ) : void
Stringify ( object obj, bool printError = false ) : string
TryInvokeMemberMissing ( BikeObject target, string name, bool &success ) : object
Walk ( AdditiveExpression node ) : object
Walk ( AndExpression node ) : object
Walk ( ArrayLiteral node ) : object
Walk ( BreakStatement node ) : object
Walk ( CallExpression node ) : object
Walk ( CaseClause node ) : object
Walk ( ConditionalExpression node ) : object
Walk ( EmptyStatement node ) : object
Walk ( EqualityExpression node ) : object
Walk ( ExecExpression node ) : object
Walk ( Expression node ) : object
Walk ( ExpressionStatement node ) : object
Walk ( ForInStatement node ) : object
Walk ( FunctionDeclaration node ) : object
Walk ( FunctionExpression node ) : object
Walk ( Identifier node ) : object
Walk ( IfStatement node ) : object
Walk ( IndexSuffix node ) : object
Walk ( LeftAssignmentExpression node ) : object
Walk ( LoadStatement node ) : object
Walk ( MemberExpression node ) : object
Walk ( MultiplicativeExpression node ) : object
Walk ( NextStatement node ) : object
Walk ( ObjectLiteral node ) : object
Walk ( OrExpression node ) : object
Walk ( PrimitiveLiteral node ) : object
Walk ( RelationalExpression node ) : object
Walk ( ReturnStatement node ) : object
Walk ( SelfExpression node ) : object
Walk ( SourceElements node ) : object
Walk ( SourceUnitTree node ) : object
Walk ( StatementBlock node ) : object
Walk ( SwitchStatement node ) : object
Walk ( ThrowStatement node ) : object
Walk ( TryStatement node ) : object
Walk ( TypeDescriptor node ) : object
Walk ( TypeDescriptorSuffix node ) : object
Walk ( UnaryExpression node ) : object
Walk ( VariableDeclaration node ) : object
Walk ( VariableStatement node ) : object
Walk ( WhileStatement node ) : object

Приватные методы

Метод Описание
AccessOneByOne ( object currentTarget, object previousTarget, List suffixes ) : object
AssignSwitch ( string @operator, object target, Node suffix, Func lvThunk, Func rvThunk, bool staticDotNetAssign = false ) : object
Call ( CallExpression node, IEnumerable suffixes ) : object
CaseMatch ( CaseClause caseClause, object o ) : bool
Execute ( string source, string filePath = null ) : object
GetArgumentValues ( System.Arguments arguments ) : object[]
GetFirstObjectFromMember ( ExprNode memberExp, List suffixes ) : object
InterceptArrayIndex ( object target, string funcName, object args, object &result ) : bool
InterceptObjectPassThrough ( object target, string funcName, object args, object &result ) : bool

This interception is to make sure arguments are passed as-is, instead of being converted to CLR equivalents.

InterceptStringIndexGetter ( object target, string funcName, object args, object &result ) : bool
Interpreter ( InterpretationContext context ) : System
IsInRange ( decimal number, Type targetNumberType ) : bool
IsNumber ( Type type ) : bool
IsNumber ( object dotNetObject ) : bool
LoadAndExecute ( string filePath ) : object
Member ( MemberExpression node, IEnumerable suffixes ) : object
PerformAssign ( object target, Node suffix, object value, bool staticDotNetAssign ) : object
PerformInvocation ( object target, string funcName, object args ) : object
TryConvert ( Type targetType, object owner, object &value ) : bool
TryGetInstanceField ( object target, string fieldName, bool &exist ) : object
TryGetInstanceProperty ( object target, string propName, bool &exist ) : object
TryGetStaticField ( Type type, string fieldName, bool &exist ) : object
TryGetStaticProperty ( Type type, string propName, bool &exist ) : object

Описание методов

AddHandler() публичный Метод

public AddHandler ( object target, string name, BikeFunction bikeFunc, Interpreter interpreter, bool isStatic ) : void
target object
name string
bikeFunc Bike.Interpreter.Builtin.BikeFunction
interpreter Interpreter
isStatic bool
Результат void

CallBikeFunction() публичный Метод

public CallBikeFunction ( BikeFunction function, object self, System.Arguments arguments ) : object
function Bike.Interpreter.Builtin.BikeFunction
self object
arguments System.Arguments
Результат object

CallBikeFunction() публичный Метод

public CallBikeFunction ( BikeFunction function, object self, object argValues ) : object
function Bike.Interpreter.Builtin.BikeFunction
self object
argValues object
Результат object

CallDelegate() публичный Метод

public CallDelegate ( Delegate currentTarget, object args ) : object
currentTarget System.Delegate
args object
Результат object

CallInstanceFunction() публичный Метод

public CallInstanceFunction ( object target, Type typeParams, string funcName, object args ) : object
target object
typeParams System.Type
funcName string
args object
Результат object

CallInstanceFunction() публичный Метод

public CallInstanceFunction ( object target, string funcName, object args ) : object
target object
funcName string
args object
Результат object

CallStaticFunction() публичный Метод

public CallStaticFunction ( Type type, Type typeParams, string funcName, object args ) : object
type System.Type
typeParams System.Type
funcName string
args object
Результат object

CallStaticFunction() публичный Метод

public CallStaticFunction ( Type type, string funcName, object args ) : object
type System.Type
funcName string
args object
Результат object

CreateInstance() публичный Метод

public CreateInstance ( Type type, object args ) : object
type System.Type
args object
Результат object

GetInstanceIndexer() публичный Метод

public GetInstanceIndexer ( object target, object args ) : object
target object
args object
Результат object

GetInstanceProperty() публичный Метод

public GetInstanceProperty ( object target, string propName ) : object
target object
propName string
Результат object

GetStaticProperty() публичный Метод

public GetStaticProperty ( Type type, string propName ) : object
type System.Type
propName string
Результат object

HashCode() публичный Метод

public HashCode ( object obj ) : int
obj object
Результат int

Is() публичный Метод

public Is ( object obj, Type type ) : bool
obj object
type System.Type
Результат bool

MarshallArgumentsToBike() публичный Метод

public MarshallArgumentsToBike ( object clrObjects ) : object[]
clrObjects object
Результат object[]

MarshallArgumentsToClr() публичный Метод

public MarshallArgumentsToClr ( object bikeObjects ) : object[]
bikeObjects object
Результат object[]

MarshallToBike() публичный Метод

public MarshallToBike ( object dotNetObject ) : object
dotNetObject object
Результат object

MarshallToClr() публичный Метод

public MarshallToClr ( object bikeObject ) : object
bikeObject object
Результат object

Modulus() публичный Метод

public Modulus ( object lv, object rv ) : object
lv object
rv object
Результат object

OpAdd() публичный Метод

public OpAdd ( object lv, object rv ) : object
lv object
rv object
Результат object

OpAnd() публичный Метод

public OpAnd ( object lv, Func rvThunk ) : object
lv object
rvThunk Func
Результат object

OpDivide() публичный Метод

public OpDivide ( object lv, object rv ) : object
lv object
rv object
Результат object

OpDoubleMinus() публичный Метод

public OpDoubleMinus ( object value ) : object
value object
Результат object

OpDoublePlus() публичный Метод

public OpDoublePlus ( object value ) : object
value object
Результат object

OpEqual() публичный Метод

public OpEqual ( object lv, object rv ) : BikeBoolean
lv object
rv object
Результат Bike.Interpreter.Builtin.BikeBoolean

OpGreaterThan() публичный Метод

public OpGreaterThan ( object lv, object rv ) : object
lv object
rv object
Результат object

OpGreaterThanOrEqual() публичный Метод

public OpGreaterThanOrEqual ( object lv, object rv ) : object
lv object
rv object
Результат object

OpLessThan() публичный Метод

public OpLessThan ( object lv, object rv ) : object
lv object
rv object
Результат object

OpLessThanOrEqual() публичный Метод

public OpLessThanOrEqual ( object lv, object rv ) : object
lv object
rv object
Результат object

OpMinus() публичный Метод

public OpMinus ( object value ) : object
value object
Результат object

OpMinus() публичный Метод

public OpMinus ( object lv, object rv ) : object
lv object
rv object
Результат object

OpMultiply() публичный Метод

public OpMultiply ( object lv, object rv ) : object
lv object
rv object
Результат object

OpNot() публичный Метод

public OpNot ( object value ) : BikeBoolean
value object
Результат Bike.Interpreter.Builtin.BikeBoolean

OpNotEqual() публичный Метод

public OpNotEqual ( object lv, object rv ) : BikeBoolean
lv object
rv object
Результат Bike.Interpreter.Builtin.BikeBoolean

OpOr() публичный Метод

public OpOr ( object lv, Func rvThunk ) : object
lv object
rvThunk Func
Результат object

OpPlus() публичный Метод

public OpPlus ( object value ) : object
value object
Результат object

Run() публичный Метод

public Run ( string coreCodePath, string filePath = null ) : void
coreCodePath string
filePath string
Результат void

SetInstanceIndexer() публичный Метод

public SetInstanceIndexer ( object target, object args, object value ) : void
target object
args object
value object
Результат void

SetInstanceProperty() публичный Метод

public SetInstanceProperty ( object target, string propName, object value ) : void
target object
propName string
value object
Результат void

SetStaticProperty() публичный Метод

public SetStaticProperty ( Type type, string propName, object value ) : void
type System.Type
propName string
value object
Результат void

Stringify() публичный Метод

public Stringify ( object obj, bool printError = false ) : string
obj object
printError bool
Результат string

TryInvokeMemberMissing() публичный Метод

public TryInvokeMemberMissing ( BikeObject target, string name, bool &success ) : object
target Bike.Interpreter.Builtin.BikeObject
name string
success bool
Результат object

Walk() публичный Метод

public Walk ( AdditiveExpression node ) : object
node AdditiveExpression
Результат object

Walk() публичный Метод

public Walk ( AndExpression node ) : object
node AndExpression
Результат object

Walk() публичный Метод

public Walk ( ArrayLiteral node ) : object
node ArrayLiteral
Результат object

Walk() публичный Метод

public Walk ( BreakStatement node ) : object
node BreakStatement
Результат object

Walk() публичный Метод

public Walk ( CallExpression node ) : object
node CallExpression
Результат object

Walk() публичный Метод

public Walk ( CaseClause node ) : object
node CaseClause
Результат object

Walk() публичный Метод

public Walk ( ConditionalExpression node ) : object
node ConditionalExpression
Результат object

Walk() публичный Метод

public Walk ( EmptyStatement node ) : object
node EmptyStatement
Результат object

Walk() публичный Метод

public Walk ( EqualityExpression node ) : object
node EqualityExpression
Результат object

Walk() публичный Метод

public Walk ( ExecExpression node ) : object
node ExecExpression
Результат object

Walk() публичный Метод

public Walk ( Expression node ) : object
node Expression
Результат object

Walk() публичный Метод

public Walk ( ExpressionStatement node ) : object
node ExpressionStatement
Результат object

Walk() публичный Метод

public Walk ( ForInStatement node ) : object
node ForInStatement
Результат object

Walk() публичный Метод

public Walk ( FunctionDeclaration node ) : object
node FunctionDeclaration
Результат object

Walk() публичный Метод

public Walk ( FunctionExpression node ) : object
node FunctionExpression
Результат object

Walk() публичный Метод

public Walk ( Identifier node ) : object
node Identifier
Результат object

Walk() публичный Метод

public Walk ( IfStatement node ) : object
node IfStatement
Результат object

Walk() публичный Метод

public Walk ( IndexSuffix node ) : object
node IndexSuffix
Результат object

Walk() публичный Метод

public Walk ( LeftAssignmentExpression node ) : object
node LeftAssignmentExpression
Результат object

Walk() публичный Метод

public Walk ( LoadStatement node ) : object
node LoadStatement
Результат object

Walk() публичный Метод

public Walk ( MemberExpression node ) : object
node MemberExpression
Результат object

Walk() публичный Метод

public Walk ( MultiplicativeExpression node ) : object
node MultiplicativeExpression
Результат object

Walk() публичный Метод

public Walk ( NextStatement node ) : object
node NextStatement
Результат object

Walk() публичный Метод

public Walk ( ObjectLiteral node ) : object
node ObjectLiteral
Результат object

Walk() публичный Метод

public Walk ( OrExpression node ) : object
node OrExpression
Результат object

Walk() публичный Метод

public Walk ( PrimitiveLiteral node ) : object
node PrimitiveLiteral
Результат object

Walk() публичный Метод

public Walk ( RelationalExpression node ) : object
node RelationalExpression
Результат object

Walk() публичный Метод

public Walk ( ReturnStatement node ) : object
node ReturnStatement
Результат object

Walk() публичный Метод

public Walk ( SelfExpression node ) : object
node SelfExpression
Результат object

Walk() публичный Метод

public Walk ( SourceElements node ) : object
node SourceElements
Результат object

Walk() публичный Метод

public Walk ( SourceUnitTree node ) : object
node SourceUnitTree
Результат object

Walk() публичный Метод

public Walk ( StatementBlock node ) : object
node StatementBlock
Результат object

Walk() публичный Метод

public Walk ( SwitchStatement node ) : object
node SwitchStatement
Результат object

Walk() публичный Метод

public Walk ( ThrowStatement node ) : object
node ThrowStatement
Результат object

Walk() публичный Метод

public Walk ( TryStatement node ) : object
node TryStatement
Результат object

Walk() публичный Метод

public Walk ( TypeDescriptor node ) : object
node TypeDescriptor
Результат object

Walk() публичный Метод

public Walk ( TypeDescriptorSuffix node ) : object
node TypeDescriptorSuffix
Результат object

Walk() публичный Метод

public Walk ( UnaryExpression node ) : object
node UnaryExpression
Результат object

Walk() публичный Метод

public Walk ( VariableDeclaration node ) : object
node VariableDeclaration
Результат object

Walk() публичный Метод

public Walk ( VariableStatement node ) : object
node VariableStatement
Результат object

Walk() публичный Метод

public Walk ( WhileStatement node ) : object
node WhileStatement
Результат object