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
(
BadExpression
left,
22
BadExpression
right,
23
BadSourcePosition
position) : base(left,
24
right,
25
position
26
) { }
27
28
29
protected
override
IEnumerable<BadObject>
InnerExecute
(
BadExecutionContext
context)
30
{
31
BadObject
left =
BadObject
.
Null
;
32
33
foreach
(
BadObject
o
in
Left
.
Execute
(context))
34
{
35
left = o;
36
}
37
38
if
(left is not
BadObjectReference
leftRef)
39
{
40
throw
new
BadRuntimeException
(
"Left side of null coalescing assignment must be a reference"
,
Position
);
41
}
42
43
left = left.Dereference(
Position
);
44
45
if
(left ==
BadObject
.
Null
)
46
{
47
BadObject
rVal =
BadObject
.
Null
;
48
49
foreach
(
BadObject
o
in
Right
.
Execute
(context))
50
{
51
yield
return
o;
52
53
rVal = o;
54
}
55
56
rVal = rVal.Dereference(
Position
);
57
leftRef.Set(rVal,
Position
);
58
59
yield
return
rVal;
60
}
61
else
62
{
63
yield
return
left;
64
}
65
}
66
67
68
protected
override
string
GetSymbol
()
69
{
70
return
"??="
;
71
}
72
}
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:29
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:68
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:46
BadScript2.Parser.Expressions.BadExpression.Execute
IEnumerable< BadObject > Execute(BadExecutionContext context)
Evaluates the Expression within the current Execution Context.
Definition
BadExpression.cs:259
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:11
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