Skip to content

Commit 22fb2aa

Browse files
Raymond LeiRaymond Lei
Raymond Lei
authored and
Raymond Lei
committed
changes
1 parent 20d9611 commit 22fb2aa

15 files changed

+419
-1
lines changed

AST.fs

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
module Normal.Ast
2+
3+
type Program = Declaration list
4+
5+
and Declaration =
6+
| StaticVariableDeclaration of VariableDeclaration
7+
| FunctionDeclaration of FunctionDeclaration
8+
9+
and TypeSpec =
10+
| Void
11+
| Bool
12+
| Int
13+
| Float
14+
override x.ToString() =
15+
match x with
16+
| Void -> "void"
17+
| Bool -> "bool"
18+
| Int -> "int"
19+
| Float -> "float"
20+
21+
and VariableDeclaration =
22+
| ScalarVariableDeclaration of TypeSpec * Identifier
23+
| ArrayVariableDeclaration of TypeSpec * Identifier
24+
25+
and FunctionDeclaration = TypeSpec * Identifier * Parameters * CompoundStatement
26+
27+
and Identifier = string
28+
29+
and Parameters = VariableDeclaration list
30+
31+
and IdentifierRef = { Identifier : string; }
32+
33+
and Statement =
34+
| ExpressionStatement of ExpressionStatement
35+
| CompoundStatement of CompoundStatement
36+
| IfStatement of IfStatement
37+
| WhileStatement of WhileStatement
38+
| ReturnStatement of Expression option
39+
| BreakStatement
40+
41+
and ExpressionStatement =
42+
| Expression of Expression
43+
| Nop
44+
45+
and CompoundStatement = LocalDeclarations * Statement list
46+
47+
and LocalDeclarations = VariableDeclaration list
48+
49+
and IfStatement = Expression * Statement * Statement option
50+
51+
and WhileStatement = Expression * Statement
52+
53+
and Expression =
54+
| ScalarAssignmentExpression of IdentifierRef * Expression
55+
| ArrayAssignmentExpression of IdentifierRef * Expression * Expression
56+
| BinaryExpression of Expression * BinaryOperator * Expression
57+
| UnaryExpression of UnaryOperator * Expression
58+
| IdentifierExpression of IdentifierRef
59+
| ArrayIdentifierExpression of IdentifierRef * Expression
60+
| FunctionCallExpression of Identifier * Arguments
61+
| ArraySizeExpression of IdentifierRef
62+
| LiteralExpression of Literal
63+
| ArrayAllocationExpression of TypeSpec * Expression
64+
65+
and BinaryOperator =
66+
| ConditionalOr
67+
| Equal
68+
| NotEqual
69+
| LessEqual
70+
| Less
71+
| GreaterEqual
72+
| Greater
73+
| ConditionalAnd
74+
| Add
75+
| Subtract
76+
| Multiply
77+
| Divide
78+
| Modulus
79+
override x.ToString() =
80+
match x with
81+
| ConditionalOr -> "||"
82+
| Equal -> "=="
83+
| NotEqual -> "!="
84+
| LessEqual -> "<="
85+
| Less -> "<"
86+
| GreaterEqual -> ">="
87+
| Greater -> ">"
88+
| ConditionalAnd -> "&&"
89+
| Add -> "+"
90+
| Subtract -> "-"
91+
| Multiply -> "*"
92+
| Divide -> "/"
93+
| Modulus -> "%"
94+
95+
and UnaryOperator =
96+
| LogicalNegate
97+
| Negate
98+
| Identity
99+
100+
and Arguments = Expression list
101+
102+
and Literal =
103+
| BoolLiteral of bool
104+
| IntLiteral of int
105+
| FloatLiteral of float
106+
override x.ToString() =
107+
match x with
108+
| BoolLiteral(b) -> b.ToString()
109+
| IntLiteral(i) -> i.ToString()
110+
| FloatLiteral(f) -> f.ToString()

CSharpAndFSharpConsoleApp.sln

+15-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ Project("{151D2E53-A2C4-4D7D-83FE-D05416EBD58E}") = "AzureResourceGroup1", "Azur
3232
EndProject
3333
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebAPI", "WebAPI\WebAPI.csproj", "{DD6FB3AC-C959-49B4-941A-83EC5F45220F}"
3434
EndProject
35-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DontRunMe", "DontRunMe\DontRunMe.csproj", "{379461E0-90D0-48B5-A593-39173923EFD1}"
35+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DontRunMe", "DontRunMe\DontRunMe.csproj", "{379461E0-90D0-48B5-A593-39173923EFD1}"
36+
EndProject
37+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonInterop", "PythonInterop\PythonInterop.csproj", "{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}"
3638
EndProject
3739
Global
3840
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -210,6 +212,18 @@ Global
210212
{379461E0-90D0-48B5-A593-39173923EFD1}.Release|x64.Build.0 = Release|Any CPU
211213
{379461E0-90D0-48B5-A593-39173923EFD1}.Release|x86.ActiveCfg = Release|Any CPU
212214
{379461E0-90D0-48B5-A593-39173923EFD1}.Release|x86.Build.0 = Release|Any CPU
215+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
216+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
217+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Debug|x64.ActiveCfg = Debug|Any CPU
218+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Debug|x64.Build.0 = Debug|Any CPU
219+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Debug|x86.ActiveCfg = Debug|Any CPU
220+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Debug|x86.Build.0 = Debug|Any CPU
221+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
222+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Release|Any CPU.Build.0 = Release|Any CPU
223+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Release|x64.ActiveCfg = Release|Any CPU
224+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Release|x64.Build.0 = Release|Any CPU
225+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Release|x86.ActiveCfg = Release|Any CPU
226+
{19317F37-18D8-4FE2-8866-D3B55FFAB3B7}.Release|x86.Build.0 = Release|Any CPU
213227
EndGlobalSection
214228
GlobalSection(SolutionProperties) = preSolution
215229
HideSolutionNode = FALSE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using Microsoft.AspNetCore.Components;
2+
using Microsoft.JSInterop;
3+
4+
namespace DM2BD.Europa.UIComponents.Code
5+
{
6+
public class ClientEventListenerComponent : ComponentBase
7+
{
8+
[Inject]
9+
private IJSRuntime JsRuntime { get; set; }
10+
[Inject]
11+
private IClientEventListenerState EventListenerState { get; set; }
12+
13+
private ClientEventListenerHelper _eventListenerHelper;
14+
15+
protected override void OnAfterRender(bool firstRender)
16+
{
17+
if (firstRender)
18+
{
19+
_eventListenerHelper = new ClientEventListenerHelper(EventListenerState);
20+
21+
_ = JsRuntime.InvokeVoidAsync("clientEventListener.browserResize",
22+
DotNetObjectReference.Create(_eventListenerHelper));
23+
}
24+
25+
base.OnAfterRender(firstRender);
26+
}
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using Microsoft.JSInterop;
2+
3+
namespace DM2BD.Europa.UIComponents.Code
4+
{
5+
public interface IClientDivEventListenrHelper
6+
{
7+
void OnDivResize(OnDivResizeDto dto);
8+
}
9+
public partial class ClientEventListenerHelper : IClientDivEventListenrHelper
10+
{
11+
private readonly IClientEventListenerState _eventListenerState;
12+
13+
public ClientEventListenerHelper(IClientEventListenerState eventListenerState)
14+
{
15+
_eventListenerState = eventListenerState;
16+
}
17+
18+
[JSInvokable("OnBrowserResize")]
19+
public void OnBrowserResize(OnBrowserResizeDto dto)
20+
{
21+
_eventListenerState.OnBrowserResizeEventInvoke(this, dto);
22+
}
23+
24+
[JSInvokable("OnDivResizeDto")]
25+
public void OnDivResize(OnDivResizeDto dto)
26+
{
27+
_eventListenerState.OnDivResizeEventInvoke(this, dto);
28+
}
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System;
2+
3+
namespace DM2BD.Europa.UIComponents.Code
4+
{
5+
public class ClientEventListenerState : IClientEventListenerState
6+
{
7+
public event EventHandler<OnKeyDownDto> OnKeyDownEventHandler;
8+
public event EventHandler<OnMouseMoveDto> OnMouseMoveEventHandler;
9+
public event EventHandler<OnBrowserResizeDto> OnBrowserResizeEventHandler;
10+
public event EventHandler<OnDivResizeDto> OnDivResizeEventHandler;
11+
public event EventHandler OnMouseUpEventHandler;
12+
public event EventHandler OnMouseDownEventHandler;
13+
14+
public void OnBrowserResizeEventInvoke(object sender, OnBrowserResizeDto dimensions)
15+
{
16+
EventHandler<OnBrowserResizeDto> handler = OnBrowserResizeEventHandler;
17+
18+
handler?.Invoke(sender, dimensions);
19+
}
20+
public void OnMouseMoveEventInvoke(object sender, OnMouseMoveDto key)
21+
{
22+
EventHandler<OnMouseMoveDto> handler = OnMouseMoveEventHandler;
23+
24+
handler?.Invoke(sender, key);
25+
}
26+
27+
public void OnKeyDownEventInvoke(object sender, OnKeyDownDto key)
28+
{
29+
EventHandler<OnKeyDownDto> handler = OnKeyDownEventHandler;
30+
31+
handler?.Invoke(sender, key);
32+
}
33+
public void OnDivResizeEventInvoke(object sender, OnDivResizeDto dimensions)
34+
{
35+
EventHandler<OnDivResizeDto> handler = OnDivResizeEventHandler;
36+
37+
handler?.Invoke(sender, dimensions);
38+
}
39+
40+
public void OnMouseUpEventInvoke(object sender, EventArgs e)
41+
{
42+
EventHandler handler = OnMouseUpEventHandler;
43+
44+
handler?.Invoke(sender, e);
45+
}
46+
47+
public void OnMouseDownEventInvoke(object sender, EventArgs e)
48+
{
49+
EventHandler handler = OnMouseDownEventHandler;
50+
51+
handler?.Invoke(sender, e);
52+
}
53+
}
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System;
2+
3+
namespace DM2BD.Europa.UIComponents.Code
4+
{
5+
public interface IClientDivEventListenerState
6+
{
7+
event EventHandler<OnDivResizeDto> OnDivResizeEventHandler;
8+
void OnDivResizeEventInvoke(object sender, OnDivResizeDto dimensions);
9+
}
10+
public interface IClientEventListenerState : IClientDivEventListenerState
11+
{
12+
event EventHandler<OnKeyDownDto> OnKeyDownEventHandler;
13+
event EventHandler<OnMouseMoveDto> OnMouseMoveEventHandler;
14+
event EventHandler<OnBrowserResizeDto> OnBrowserResizeEventHandler;
15+
event EventHandler OnMouseUpEventHandler;
16+
event EventHandler OnMouseDownEventHandler;
17+
18+
void OnKeyDownEventInvoke(object sender, OnKeyDownDto key);
19+
void OnMouseMoveEventInvoke(object sender, OnMouseMoveDto key);
20+
void OnBrowserResizeEventInvoke(object sender, OnBrowserResizeDto dimensions);
21+
void OnMouseUpEventInvoke(object sender, EventArgs e);
22+
void OnMouseDownEventInvoke(object sender, EventArgs e);
23+
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
namespace DM2BD.Europa.UIComponents.Code
2+
{
3+
public interface IOnEventDto
4+
{
5+
6+
}
7+
public class OnClientEventDto : IOnEventDto
8+
{
9+
}
10+
11+
public class OnDivResizeDto : OnClientEventDto
12+
{
13+
public double ClientX { get; set; }
14+
public double ClientY { get; set; }
15+
}
16+
17+
public class OnBrowserResizeDto : OnClientEventDto
18+
{
19+
public double ClientX { get; set; }
20+
public double ClientY { get; set; }
21+
}
22+
23+
public class OnKeyDownDto : OnClientEventDto
24+
{
25+
public string Key { get; set; }
26+
public bool CtrlWasPressed { get; set; }
27+
public bool ShiftWasPressed { get; set; }
28+
public bool AltWasPressed { get; set; }
29+
}
30+
31+
public class OnMouseMoveDto : OnClientEventDto
32+
{
33+
public double ClientY { get; set; }
34+
public double ClientX { get; set; }
35+
}
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
window.clientEventListener = {
2+
browserResize: (dotNetObjectReference) => {
3+
window.onresize = () => {
4+
let browserWidth = window.innerWidth;
5+
let browserHeight = window.innerHeight;
6+
let dto = {
7+
clientX: browserWidth,
8+
clientY: browserHeight
9+
}
10+
dotNetObjectReference.invokeMethodAsync('OnBrowserResize', dto);
11+
};
12+
},
13+
14+
getDimensionsById: (Id) => {
15+
let divElement = document.getElementById(Id);
16+
if (divElement) {
17+
let divHeight = divElement.clientHeight;
18+
let divWidth = divElement.clientWidth;
19+
let dto = {
20+
clientX: divWidth,
21+
clientY: divHeight
22+
}
23+
return JSON.stringify(dto);
24+
}
25+
return JSON.stringify({
26+
clientX: -1,
27+
clientY: -1
28+
});
29+
},
30+
31+
divIdResize: (dotNetObjectReference, divId) => {
32+
window.onresize = () => {
33+
let divElement = document.getElementById(divId);
34+
if (divElement) {
35+
let divHeight = divElement.clientHeight;
36+
let divWidth = divElement.clientWidth;
37+
let dto = {
38+
clientX: divWidth,
39+
clientY: divHeight
40+
}
41+
dotNetObjectReference.invokeMethodAsync('OnDivResize', dto);
42+
}
43+
};
44+
}
45+
}
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace DM2BD.Europa.UIComponents.Tabs
2+
{
3+
public interface ITab
4+
{
5+
}
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@if(TabControlParent.TabPage == this)
2+
{
3+
@ChildContent
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using DM2BD.Europa.UIComponents.Party;
2+
using Microsoft.AspNetCore.Components;
3+
4+
namespace DM2BD.Europa.UIComponents.Tabs
5+
{
6+
public partial class ToTargetReferralsTab : ComponentBase, ITab
7+
{
8+
[CascadingParameter]
9+
public ToTargetReferralsTabControl TabControlParent { get; set; }
10+
[Parameter]
11+
public RenderFragment ChildContent { get; set; }
12+
13+
protected override void OnInitialized()
14+
{
15+
base.OnInitialized();
16+
if (TabControlParent != null) TabControlParent.AddTabPage(this);
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)