Синтаксический анализатор - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д