![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#41 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
![]()
Правильной должно считать всё что синтаксически правильно, т.е. Edit1.text ведь может содержать любые слова, значит что бы мы не ввели между апострофами - правильно. В условии if тоже могу быть и цифры и буквы, любые идентификаторы, а вот если между ними не будет знака сравнения, это уже синтаксически неверно, потому что if предполагает знак сравнения, и если скобки не будет, это тоже неверно, или ключевого слова and.
|
![]() |
![]() |
![]() |
#42 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
рекомендую ознакомится с конструкцией (правильной, разумеется): Код:
разумеется, можно записать и без этой переменной. вот так: Код:
или такое выражение (опять таки корректное) почему не должно пройти ваш отбор? Код:
Вот, например, у Вас не приняли Ваше решение. А с какой мотировкой? Чем объяснили?.. p.s. данная тема уж очень мутная. я долго сдерживался от того, чтобы в неё ввязаться... до сих пор не уверен, что сделал правильно, написав сюда свой пост... |
|
![]() |
![]() |
![]() |
#43 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
![]()
Объяснили очень просто, ввели другие идентификаторы, ошибки быть не должно, а там выдаёт что нужен какой-то конкретный идентификатор.
Вы меня ещё больше запутали, ну пусть в ифе необязателен знак сравнения, как же всё это реализовать? |
![]() |
![]() |
![]() |
#44 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Ещё раз повторю - отталкиваться Вам нужно от ВАШЕЙ МЕТОДИЧКИ ("методичка" - это методическое пособие к лабораторной/курсовой работе, если что)... Там должен быть рассмотрен пример решения ПОДОБНОЙ задачи. Вот от него и надо плясать. Если методички нет - то идите к преподавателю (с диктофоном в кармане). спрашивайте, КАК решать вашу задачу, ЧТО должен анализировать ваш анализатор. записывайте всё, что он Вам скажет. расшировывайте запись. И анализируйте то, что он Вам сказал. без этого задачу решить вряд ли получится (ну, разве что, случайно угадать и написать то, что от вас ждут).. кстати, Цитата:
Код:
Просто я не вижу критериев, по которым, в вашем случае, можно отличить корректный код от некорректного! и, кстати, это тоже поовод для разговора с преподавателем - что считать корректными идентификаторами... |
||
![]() |
![]() |
![]() |
#45 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Я в посте #24 объяснил общий ход мыслей по которому можно достичь реализации одного из вариантов лексического анализатора. И вы даже немного следовали ему, а потом стали почему-то сравнивать массивы лексем. Вам нужно не сравнение, а анализ на основании первых двух-трех лексем. Это даст Вам повод убедиться что перед Вами строго определенная конструкция, имеющая определенные правила поведения и описания. Для простоты исследуйте сначала первую лексему - если она однозначно интерпретируется как один из правильных операторов (if, for и т.д.) - повторяюсь обрабатывайте его индивидуально через селектор. Когда первая лексема не дает однозначной идентификации - исследуйте вторую и третью на предмет знака := чтобы убедиться что перед Вами либо операция присваивания (тоже между прочим со своими законами), либо неопознаное выражение. Опять же при условии, что речь идет о паскалеподобном синтаксисе...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#46 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
![]()
Например я проверил что первая лексема if, вторая - скобка, а вот третья может быть любым придуманным идентификатором, или цифрой, или как в моём случае Edit1.Text='', как мне все эти правила оговорить? Четвёртую лексему (знак сравнения) я проверю с помощью case of, в котором должен перечислить >, <, =< <>, >=, <=. Верный ход мыслей?
|
![]() |
![]() |
![]() |
#47 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
![]()
Забыл сказать, преподаватель говорил, что нужно использовать процедуры рекурсивного спуска.
|
![]() |
![]() |
![]() |
#48 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Вот все что между if и then по идее должно быть условием. Думайте в этом направлении. Что такое условие? Это всего лишь некоторое логическое выражение, истинность которого и проверяет if. Что такое логическое выражение? Спускайтесь в размышлениях дальше...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#49 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
после if должно быть логическое выражение или переменная. Никаких двух идентификаторов и знаков между ними. |
|
![]() |
![]() |
![]() |
#50 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Arturko, я вижу существенное противоречие между уровнем Вашей квалификации и сложностью задачи в общем виде, как Вы ее формулируете.
Причина может быть одной из двух: 1. Программирование для Вас - профилирующий предмет, и Вы по нему категорически не успеваете. 2. От Вас требуется не общее, а частное решение. Которое существенно проще общего. Но, если принять за основу 2 вариант, то остаются совершенно неясными ограничения этой частной задачи. Поэтому могу только присоединиться к точке зрения Serge_Bliznykov: Вам нужно тщательно изучить методичку и/или подробно переговорить с преподавателем. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
синтаксический анализатор(LL) | Legato | Общие вопросы Delphi | 2 | 25.12.2011 18:29 |
Синтаксический анализатор | Lisёноk | Помощь студентам | 2 | 12.12.2011 09:51 |
Синтаксический анализатор | Jeka57 | Помощь студентам | 1 | 05.06.2011 22:47 |
Синтаксический анализатор | Ita | Фриланс | 0 | 29.03.2011 01:37 |
Синтаксический анализатор | Douglas | Помощь студентам | 0 | 28.12.2010 18:01 |