Лексический анализатор для арифметических выражений - C#
Формулировка задачи:
Всем привет. Помогите плиз сделать лексический анализатор на C#
Задание: Исходный язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, целых и действительных чисел (в обычной и логарифмической форме), знака присваивания (=), знаков операций +, -, *, / и круглых скобок.
Автомат написал...проблема с кодом,как реализовать.
Решение задачи: «Лексический анализатор для арифметических выражений»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using evp.test.parser;
using System.IO;
namespace TestSimpleParser
{
class Program
{
public static Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
static void Main(string[] args)
{
String text = @"x = 1; var = 23 + (2*(32 - 12)) * x; x = x + var; y = -54 + 0.32 * 31.4e-4 / 4.13e+10;";
Parser parser = new Parser(new Scanner(GenerateStreamFromString(text)));
parser.Parse();
if (parser.errors.count != 0)
{
Console.WriteLine("Can't parse.");
}
else
{
Console.WriteLine("Parsing ok.");
Console.WriteLine(parser.AstRoot.ToString());
}
}
}
}