BadScript 2
Loading...
Searching...
No Matches
BadNullCoalescingAssignExpression.cs
Go to the documentation of this file.
1
using
BadScript2.Common
;
2
using
BadScript2.Parser.Expressions.Binary
;
3
using
BadScript2.Runtime
;
4
using
BadScript2.Runtime.Error
;
5
using
BadScript2.Runtime.Objects
;
6
7
namespace
BadScript2.Parser.Expressions.Access
;
8
13
public
class
BadNullCoalescingAssignExpression
:
BadBinaryExpression
14
{
21
public
BadNullCoalescingAssignExpression
(
22
BadExpression
left,
23
BadExpression
right,
24
BadSourcePosition
position) : base(
25
left,
26
right,
27
position
28
) { }
29
30
31
protected
override
IEnumerable<BadObject>
InnerExecute
(
BadExecutionContext
context)
32
{
33
BadObject
left =
BadObject
.
Null
;
34
35
foreach
(
BadObject
o
in
Left
.
Execute
(context))
36
{
37
left = o;
38
}
39
40
if
(left is not
BadObjectReference
leftRef)
41
{
42
throw
new
BadRuntimeException
(
"Left side of null coalescing assignment must be a reference"
,
Position
);
43
}
44
45
left = left.Dereference();
46
47
if
(left ==
BadObject
.
Null
)
48
{
49
BadObject
rVal =
BadObject
.
Null
;
50
51
foreach
(
BadObject
o
in
Right
.
Execute
(context))
52
{
53
yield
return
o;
54
55
rVal = o;
56
}
57
58
rVal = rVal.Dereference();
59
leftRef.Set(rVal);
60
61
yield
return
rVal;
62
}
63
else
64
{
65
yield
return
left;
66
}
67
}
68
69
70
protected
override
string
GetSymbol
()
71
{
72
return
"??="
;
73
}
74
}
BadScript2.Common.BadSourcePosition
Describes a specific position inside a source file.
Definition
BadSourcePosition.cs:9
BadScript2.Parser.Expressions.Access.BadNullCoalescingAssignExpression
Implements the Null Coalescing Assign Expression LEFT ??= RIGHT.
Definition
BadNullCoalescingAssignExpression.cs:14
BadScript2.Parser.Expressions.Access.BadNullCoalescingAssignExpression.InnerExecute
override IEnumerable< BadObject > InnerExecute(BadExecutionContext context)
Definition
BadNullCoalescingAssignExpression.cs:31
BadScript2.Parser.Expressions.Access.BadNullCoalescingAssignExpression.BadNullCoalescingAssignExpression
BadNullCoalescingAssignExpression(BadExpression left, BadExpression right, BadSourcePosition position)
Constructor of the Null Coalescing Assign Expression.
Definition
BadNullCoalescingAssignExpression.cs:21
BadScript2.Parser.Expressions.Access.BadNullCoalescingAssignExpression.GetSymbol
override string GetSymbol()
Definition
BadNullCoalescingAssignExpression.cs:70
BadScript2.Parser.Expressions.BadExpression
Base Implementation for all Expressions used inside the Script.
Definition
BadExpression.cs:23
BadScript2.Parser.Expressions.BadExpression.Position
BadSourcePosition Position
The source Position of the Expression.
Definition
BadExpression.cs:165
BadScript2.Parser.Expressions.BadExpression.Execute
IEnumerable< BadObject > Execute(BadExecutionContext context)
Evaluates the Expression within the current Execution Context.
Definition
BadExpression.cs:238
BadScript2.Parser.Expressions.Binary.BadBinaryExpression
Base Implementation of all Binary Expressions.
Definition
BadBinaryExpression.cs:10
BadScript2.Parser.Expressions.Binary.BadBinaryExpression.Right
BadExpression Right
Right side of the Expression.
Definition
BadBinaryExpression.cs:34
BadScript2.Parser.Expressions.Binary.BadBinaryExpression.Left
BadExpression Left
Left side of the Expression.
Definition
BadBinaryExpression.cs:29
BadScript2.Runtime.BadExecutionContext
The Execution Context. Every execution of a script needs a context the script is running in....
Definition
BadExecutionContext.cs:16
BadScript2.Runtime.Error.BadRuntimeException
Gets thrown by the runtime.
Definition
BadRuntimeException.cs:10
BadScript2.Runtime.Objects.BadObject
The Base Class for all BadScript Objects.
Definition
BadObject.cs:14
BadScript2.Runtime.Objects.BadObject.Null
static readonly BadObject Null
The Null Value for the BadScript Language.
Definition
BadObject.cs:28
BadScript2.Runtime.Objects.BadObjectReference
Implements the base functionality for a BadScript Reference.
Definition
BadObjectReference.cs:10
BadScript2.Common
Contains Shared Data Structures and Functionality.
Definition
BadParseException.cs:1
BadScript2.Parser.Expressions.Access
Contains the Access Expressions for the BadScript2 Language.
Definition
BadArrayAccessExpression.cs:11
BadScript2.Parser.Expressions.Binary
Contains the Binary Expressions for the BadScript2 Language.
Definition
BadAssignExpression.cs:10
BadScript2.Runtime.Error
Contains the Error Objects for the BadScript2 Language.
Definition
BadRuntimeError.cs:7
BadScript2.Runtime.Objects
Contains the Runtime Objects.
Definition
BadArray.cs:10
BadScript2.Runtime
Contains the Runtime Implementation.
Definition
BadExecutionContext.cs:8
src
BadScript2
Parser
Expressions
Access
BadNullCoalescingAssignExpression.cs
Generated by
1.9.8