|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.10.2018, 11:09 | #1 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
синтаксический анализатор на си
здравствуйте!
у меня такая задача: нужно составить синтаксический анализатор на си. вот условие: Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом ("T" - True, "F" - False): <выражение> ::= T | F | And(<операнды>) | Or(<операнды>) | Not(<выражение>) <операнды> ::= <выражение> | <выражение>,<операнды> я вообще не понимаю, что мне надо сделать. подкиньте идейку хотя бы, что это, как это, и с чем его едят, и пните в правильном направлении, пожалуйста. буду благодарен |
01.10.2018, 11:15 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Так все ж написано, что надо сделать. Если не знаете, что такое синтаксический анализатор, то хоть в вики сходите. Какое слово в задании вам не понятно?
|
01.10.2018, 12:34 | #3 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
например, непонятно, что это за вертикальные линии.
и если операнды могут содержать выражение, то всё выражение получается "бесконечным"? мне кажется, я задаю слишком тупые вопросы, но приведите, пожалуйста, хоть пример такого выражения |
01.10.2018, 12:44 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
А что вертикальная линия делает в Си? А если чуть голову включить: "выражение это истина ЧТО_ТО_НЕПОНЯТНОЕ ложь"... Что же вместо ЧТО_ТО_НЕПОНЯТНОЕ вставить?..
https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form 5 + (4 - 1) тоже операнд содержит выражение. Оно бесконечное? |
01.10.2018, 13:01 | #5 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
то есть выражение для анализа может выглядеть в пяти ипостасях?
T F And(x-y= 0) Or(x-y= 0) Not(х-у= 0) допустим так. я все правильно понимаю? |
01.10.2018, 13:07 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Не совсем. Вы вики прочитали? С T, F все просто, а дальше And(<операнды>) = And(выражение, выражение) и т.д. Формально, Not(Or(And(T, F), Or(Not(F), And(T, F)))) вполне себе выражение.
Последний раз редактировалось p51x; 01.10.2018 в 13:18. |
01.10.2018, 13:15 | #7 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
спасибо за помощь
|
22.10.2018, 12:32 | #8 |
Пользователь
Регистрация: 30.09.2018
Сообщений: 30
|
Код:
|
22.10.2018, 12:51 | #9 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Так какая переменная дает ответ на задание? Где результат то?
А по коду куча вопросов... Например, вы отдаете в is_enum следующий за AND|OR|NOT символ - он же скобка и вы его просто пропускаете, т.е. выражение And))(())(* вполне пройдет. |
22.10.2018, 13:06 | #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 |