![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
![]()
здравствуйте!
у меня такая задача: нужно составить синтаксический анализатор на си. вот условие: Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" - True, "F" - False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) | Not(<выражение>) <операнды> ::= <выражение> | <выражение>,<операнды> я вообще не понимаю, что мне надо сделать. подкиньте идейку хотя бы, что это, как это, и с чем его едят, и пните в правильном направлении, пожалуйста. буду благодарен |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,833
|
![]()
Так все ж написано, что надо сделать. Если не знаете, что такое синтаксический анализатор, то хоть в вики сходите. Какое слово в задании вам не понятно?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
![]()
например, непонятно, что это за вертикальные линии.
и если операнды могут содержать выражение, то всё выражение получается "бесконечным"? мне кажется, я задаю слишком тупые вопросы, но приведите, пожалуйста, хоть пример такого выражения |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,833
|
![]()
А что вертикальная линия делает в Си? А если чуть голову включить: "выражение это истина ЧТО_ТО_НЕПОНЯТНОЕ ложь"... Что же вместо ЧТО_ТО_НЕПОНЯТНОЕ вставить?..
https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form 5 + (4 - 1) тоже операнд содержит выражение. Оно бесконечное? |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
![]()
то есть выражение для анализа может выглядеть в пяти ипостасях?
T F And(x-y= 0) Or(x-y= 0) Not(х-у= 0) допустим так. я все правильно понимаю? |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,833
|
![]()
Не совсем. Вы вики прочитали? С T, F все просто, а дальше And(<операнды>) = And(выражение, выражение) и т.д. Формально, Not(Or(And(T, F), Or(Not(F), And(T, F)))) вполне себе выражение.
Последний раз редактировалось p51x; 01.10.2018 в 13:18. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
![]()
спасибо за помощь
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
![]() Код:
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,833
|
![]()
Так какая переменная дает ответ на задание? Где результат то?
А по коду куча вопросов... Например, вы отдаете в is_enum следующий за AND|OR|NOT символ - он же скобка и вы его просто пропускаете, т.е. выражение And))(())(* вполне пройдет. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
![]()
в случае с T и F ответ выводится сразу же через printf. в остальных случаях... действительно, какого-то четкого ответа нет. я понимаю, что к моему коду много вопросов, но это все, на что моих мозгов хватило. подкиньте, пожалуйста, идейку в правильном направлении. было бы прекрасно, если бы подкинули еще и правильную функцию. хотя бы одну из
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Синтаксический анализатор | Battori | JavaScript, Ajax | 3 | 15.03.2018 10:57 |
Синтаксический анализатор | Arturko | Помощь студентам | 62 | 14.06.2012 18:54 |
синтаксический анализатор(LL) | Legato | Общие вопросы Delphi | 2 | 25.12.2011 18:29 |
Синтаксический анализатор | Lisёноk | Помощь студентам | 2 | 12.12.2011 09:51 |
Синтаксический анализатор | Lifefine | Общие вопросы Delphi | 3 | 09.10.2010 19:42 |