|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.06.2012, 15:26 | #41 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Правильной должно считать всё что синтаксически правильно, т.е. Edit1.text ведь может содержать любые слова, значит что бы мы не ввели между апострофами - правильно. В условии if тоже могу быть и цифры и буквы, любые идентификаторы, а вот если между ними не будет знака сравнения, это уже синтаксически неверно, потому что if предполагает знак сравнения, и если скобки не будет, это тоже неверно, или ключевого слова and.
|
13.06.2012, 16:01 | #42 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
рекомендую ознакомится с конструкцией (правильной, разумеется): Код:
разумеется, можно записать и без этой переменной. вот так: Код:
или такое выражение (опять таки корректное) почему не должно пройти ваш отбор? Код:
Вот, например, у Вас не приняли Ваше решение. А с какой мотировкой? Чем объяснили?.. p.s. данная тема уж очень мутная. я долго сдерживался от того, чтобы в неё ввязаться... до сих пор не уверен, что сделал правильно, написав сюда свой пост... |
|
13.06.2012, 16:20 | #43 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Объяснили очень просто, ввели другие идентификаторы, ошибки быть не должно, а там выдаёт что нужен какой-то конкретный идентификатор.
Вы меня ещё больше запутали, ну пусть в ифе необязателен знак сравнения, как же всё это реализовать? |
13.06.2012, 16:47 | #44 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Ещё раз повторю - отталкиваться Вам нужно от ВАШЕЙ МЕТОДИЧКИ ("методичка" - это методическое пособие к лабораторной/курсовой работе, если что)... Там должен быть рассмотрен пример решения ПОДОБНОЙ задачи. Вот от него и надо плясать. Если методички нет - то идите к преподавателю (с диктофоном в кармане). спрашивайте, КАК решать вашу задачу, ЧТО должен анализировать ваш анализатор. записывайте всё, что он Вам скажет. расшировывайте запись. И анализируйте то, что он Вам сказал. без этого задачу решить вряд ли получится (ну, разве что, случайно угадать и написать то, что от вас ждут).. кстати, Цитата:
Код:
Просто я не вижу критериев, по которым, в вашем случае, можно отличить корректный код от некорректного! и, кстати, это тоже поовод для разговора с преподавателем - что считать корректными идентификаторами... |
||
13.06.2012, 17:10 | #45 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Я в посте #24 объяснил общий ход мыслей по которому можно достичь реализации одного из вариантов лексического анализатора. И вы даже немного следовали ему, а потом стали почему-то сравнивать массивы лексем. Вам нужно не сравнение, а анализ на основании первых двух-трех лексем. Это даст Вам повод убедиться что перед Вами строго определенная конструкция, имеющая определенные правила поведения и описания. Для простоты исследуйте сначала первую лексему - если она однозначно интерпретируется как один из правильных операторов (if, for и т.д.) - повторяюсь обрабатывайте его индивидуально через селектор. Когда первая лексема не дает однозначной идентификации - исследуйте вторую и третью на предмет знака := чтобы убедиться что перед Вами либо операция присваивания (тоже между прочим со своими законами), либо неопознаное выражение. Опять же при условии, что речь идет о паскалеподобном синтаксисе...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
13.06.2012, 17:48 | #46 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Например я проверил что первая лексема if, вторая - скобка, а вот третья может быть любым придуманным идентификатором, или цифрой, или как в моём случае Edit1.Text='', как мне все эти правила оговорить? Четвёртую лексему (знак сравнения) я проверю с помощью case of, в котором должен перечислить >, <, =< <>, >=, <=. Верный ход мыслей?
|
13.06.2012, 17:53 | #47 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Забыл сказать, преподаватель говорил, что нужно использовать процедуры рекурсивного спуска.
|
13.06.2012, 18:03 | #48 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Вот все что между if и then по идее должно быть условием. Думайте в этом направлении. Что такое условие? Это всего лишь некоторое логическое выражение, истинность которого и проверяет if. Что такое логическое выражение? Спускайтесь в размышлениях дальше...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
13.06.2012, 18:50 | #49 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
после if должно быть логическое выражение или переменная. Никаких двух идентификаторов и знаков между ними. |
|
13.06.2012, 19:20 | #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 |