BadScript 2
Loading...
Searching...
No Matches
BadInequalityExpression.cs
Go to the documentation of this file.
4
6
11{
18 public BadInequalityExpression(BadExpression left, BadExpression right, BadSourcePosition position) : base(left,
19 right,
20 position
21 ) { }
22
29 public static BadObject NotEqual(BadObject left, BadObject right)
30 {
31 return left.Equals(right) ? BadObject.False : BadObject.True;
32 }
33
42 public static IEnumerable<BadObject> NotEqualWithOverride(BadExecutionContext? caller,
43 BadObject left,
44 BadObject right,
45 BadSourcePosition position)
46 {
48 {
49 foreach (BadObject o in ExecuteOperatorOverride(left,
50 right,
51 caller!,
53 position
54 ))
55 {
56 yield return o;
57 }
58 }
60 {
61 foreach (BadObject o in ExecuteOperatorOverride(right,
62 left,
63 caller!,
65 position
66 ))
67 {
68 yield return o;
69 }
70 }
71 else
72
73 {
74 yield return NotEqual(left, right);
75 }
76 }
77
79 protected override IEnumerable<BadObject> InnerExecute(BadExecutionContext context)
80 {
82
83 foreach (BadObject o in Left.Execute(context))
84 {
85 left = o;
86
87 yield return o;
88 }
89
90 left = left.Dereference(Position);
91 BadObject right = BadObject.Null;
92
93 foreach (BadObject o in Right.Execute(context))
94 {
95 right = o;
96
97 yield return o;
98 }
99
100 right = right.Dereference(Position);
101
102 foreach (BadObject? o in NotEqualWithOverride(context, left, right, Position))
103 {
104 yield return o;
105 }
106 }
107
109 protected override string GetSymbol()
110 {
111 return "!=";
112 }
113}
Describes a specific position inside a source file.
Contains Static Data for the BadScript Language.
Base Implementation for all Expressions used inside the Script.
static IEnumerable< BadObject > ExecuteOperatorOverride(BadObject left, BadObject right, BadExecutionContext context, string name, BadSourcePosition position)
Helper function that executes an operator override function if implemented.
BadSourcePosition Position
The source Position of the Expression.
IEnumerable< BadObject > Execute(BadExecutionContext context)
Evaluates the Expression within the current Execution Context.
Base Implementation of all Binary Expressions.
BadExpression Right
Right side of the Expression.
override IEnumerable< BadObject > InnerExecute(BadExecutionContext context)
static BadObject NotEqual(BadObject left, BadObject right)
Returns True if the two Objects are not equal.
static IEnumerable< BadObject > NotEqualWithOverride(BadExecutionContext? caller, BadObject left, BadObject right, BadSourcePosition position)
Executes the expression.
BadInequalityExpression(BadExpression left, BadExpression right, BadSourcePosition position)
Constructor for the Inequality Expression.
The Execution Context. Every execution of a script needs a context the script is running in....
BadScope Scope
The Root Scope of the Context.
The Base Class for all BadScript Objects.
Definition BadObject.cs:14
static readonly BadObject True
The True Value for the BadScript Language.
Definition BadObject.cs:33
virtual bool HasProperty(string propName, BadScope? caller=null)
Returns true if the object contains a given property or there exists an extension for the current Ins...
Definition BadObject.cs:130
static readonly BadObject Null
The Null Value for the BadScript Language.
Definition BadObject.cs:28
Contains Shared Data Structures and Functionality.
Contains the Comparison Expressions for the BadScript2 Language.
Contains the Runtime Objects.
Definition BadArray.cs:10
Contains the Runtime Implementation.