Skip to content

Commit ac83b85

Browse files
committed
Added notation converter page
1 parent dc15e38 commit ac83b85

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

BooleanExpressionParser.Web/Client/Pages/Evaluator.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
@if (result is not null)
1717
{
18-
<h2>@result</h2>
18+
<h3>@result</h3>
1919
}
2020

2121
@code {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@page "/notation-converter"
2+
@using BooleanExpressionParser.Formatters;
3+
@using BooleanExpressionParser.Web.Client.Components
4+
5+
<PageTitle>Notation Converter</PageTitle>
6+
7+
<h1>Notation Converter</h1>
8+
<p>Converts a boolean expression into postfix (reverse Polish) notation.</p>
9+
10+
<ExpressionInput ButtonLabel="Convert" ButtonClicked="ConvertExpression" ExpressionChanged="ExpressionChanged" />
11+
12+
@if (postfix is not null)
13+
{
14+
<h3>@postfix</h3>
15+
}
16+
17+
@code {
18+
private string? postfix;
19+
private BasicFormatter formatter = new();
20+
21+
private void ExpressionChanged(string _)
22+
{
23+
postfix = null;
24+
}
25+
26+
private void ConvertExpression(string? expression)
27+
{
28+
if (string.IsNullOrWhiteSpace(expression)) return;
29+
var wrapper = new ExpressionWrapper(expression);
30+
31+
var tokeniser = new Tokeniser(wrapper.Expression);
32+
var infixTokens = tokeniser.Tokenise();
33+
34+
var parser = new Parser();
35+
var postfixTokens = parser.InfixToPostfix(infixTokens);
36+
37+
postfix = formatter.FormatTokens(postfixTokens);
38+
}
39+
40+
}

0 commit comments

Comments
 (0)