Синтаксический анализатор - 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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы