Синтаксический анализатор - C#
Формулировка задачи:
Здравствуйте !
Прошу Вашей помощи в составлении , точнее советах по составлению Синтаксического анализатора дифференциальных уравнений.
(уравнения однородные второго порядка вида y'' (плюc-минус) a*y (плюс-минус)b=0)
Предложите пожалуйста идеи, как это можно "сконструировать" .
Теорию то я понимаю, как это работает , но вся проблема в переводе этих мыслей на язык C# .
Должно быть текстовое поле и по кнопке , анализатор должен проверять написанное в этом текстовом поле , естесственно с выдачей соответствующих ошибок , если таковые будут иметься.
пробовал что-то подобное сделать для квадратного уравнения , к чему впринципе и сводится дифференциальное , но опять же результатов не добился.
Жду.
Решение задачи: «Синтаксический анализатор»
textual
Листинг программы
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplicationTest
{
internal class Program
{
private static void Main()
{
// Исходная строка.
string str = @"y'' + 1,01 *y'-5= 0";
// Убираем пробелы.
str = str.Replace(" ", string.Empty);
// Проверяем на совпадение с шаблоном и ищем значения коэффициентов.
var regex = new Regex(@"\A(?<arg>\w+)\'\'(?<num1>[-+]\d+(,\d+)*)\*\k<arg>\'(?<num2>[-+]\d+(,\d+)*)=0\Z");
Match matche = regex.Match(str);
if (matche.Success)
{
// Получаем коэффициенты и выводим результат.
double a = double.Parse(matche.Groups["num1"].Value);
double b = double.Parse(matche.Groups["num2"].Value);
Console.WriteLine("Выражение подходит, коэффициенты: a={0}, b={1}", a, b);
}
else
{
Console.WriteLine("Ошибка в записи выражения.");
}
Console.ReadKey();
}
}
}