0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 24
|
|
1 | |
Создать синтаксический анализатор25.04.2012, 11:42. Показов 2785. Ответов 9
Метки нет (Все метки)
C#. Нужно написать синтаксический анализатор, который проверяет правильность записанной функции. например: y=cos(x)+sin(3x) - правильно записанная функция, у = сo + si -какое-то равенство переменной у и суммы двух других переменных, что-то в этом духе.
Помогите,плиз!
0
|
25.04.2012, 11:42 | |
Ответы с готовыми решениями:
9
Мой синтаксический анализатор Синтаксический анализатор Синтаксический анализатор кода Синтаксический анализатор C++ ANTLR4 |
25.04.2012, 12:40 | 2 |
для начала, если у вас учивывается равенство - это уже запись не функции, а уравнения.
Тем более, если там другие переменные. А в чем проблема? Дробите запись, вначале по знаку =, потом по +\- (как наименьший приоритет), с учетом скобок, получается у вас дерево. каждый элемент потома проверяете на корректность.
1
|
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 24
|
||||||
25.04.2012, 17:06 [ТС] | 3 | |||||
Вот я считал и разбил по знакам. как дальше сверить?
0
|
25.04.2012, 17:14 | 4 |
нет, это слишком просто и неинтересно.
должен быть счетчик скобок. бегите по строке вручную. нашли "(" - повышаете счетчик скобок на 1. ")" - понижаете. дробите только когда счетчик равен нулю.
0
|
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 24
|
||||||
25.04.2012, 17:19 [ТС] | 5 | |||||
Ну вот еще на экран вывел:
0
|
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 24
|
|
25.04.2012, 17:22 [ТС] | 6 |
я не знаю как так сделать....
0
|
25.04.2012, 17:36 | 7 |
Я написал словами, код - уж извините, сами.
Впрочем, у меня завтра под рукой будет аналогичный код на Delphi, если хотите - поделюсь. Правда, там немного специфики по окончательно "чистому" одночлену, но разбор вам пойдет.
0
|
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 24
|
||||||
25.04.2012, 17:57 [ТС] | 8 | |||||
спс, давайте хоть на делфи. разберемся может быть.
Добавлено через 18 минут подскажи хотябы как сравнить(что написать на знаке "?")
0
|
26.04.2012, 07:14 | 10 |
Вот файл.
CubeOperations.rar некоторые комментарии. 1. Класс заточен на получение значения из трехмерного массива по координатам i,j,k. Все, что с этими координатами - вам не нужно. 2. Класс TSubOperations - вам пойдет просто List<SubOperations>, когда это писалось, в дельфи генериков не было. 3. Порядок работы таков: создаём TCubeOperation от стринга, он парсит его один раз. Потом каждый раз подаем ijk, он по уже готовому дереву выдаёт результат, функция GetCellValue: double. 4. Включены функции Min(a,b,c...) и Max (такое же) - наверно, это вам не нужно. 5. Возведение в степень - учитываются три способа записи: a^b, a**b и pow(a,b). Ну вот так вот. Комментариев в коде полно, выглядит, как будто хрестоматийный код из учебника писал я. удачи.
0
|
26.04.2012, 07:14 | |
26.04.2012, 07:14 | |
Помогаю со студенческими работами здесь
10
Нужно разработать синтаксический анализатор Написать синтаксический анализатор-калькулятор Синтаксический анализатор для понятия ДНФ TCP/IP Client-Server, упрощенный синтаксический анализатор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |