Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2012, 15:26   #41
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Правильной должно считать всё что синтаксически правильно, т.е. Edit1.text ведь может содержать любые слова, значит что бы мы не ввели между апострофами - правильно. В условии if тоже могу быть и цифры и буквы, любые идентификаторы, а вот если между ними не будет знака сравнения, это уже синтаксически неверно, потому что if предполагает знак сравнения, и если скобки не будет, это тоже неверно, или ключевого слова and.
Arturko вне форума Ответить с цитированием
Старый 13.06.2012, 16:01   #42
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а вот если между ними не будет знака сравнения, это уже синтаксически неверно, потому что if предполагает знак сравнения, и если скобки не будет, это тоже неверно, или ключевого слова and.
у.. это только Ваши наивные мечты.

рекомендую ознакомится с конструкцией (правильной, разумеется):
Код:
var bb : boolean;
begin
   bb := boolean( ord(Edit1.Text[1]));
   if bb then ShowMessage('Please enter data');
end;
переменная bb добавлена исключительно для наглядности...
разумеется, можно записать и без этой переменной.
вот так:
Код:
begin
   if boolean( ord(Edit1.Text[1])) then ShowMessage('Please enter data');
end;
объясните, почему данное выражение не должно пройти Ваш отбор?!

или такое выражение (опять таки корректное) почему не должно пройти ваш отбор?
Код:
   if Edit1.Text>Edit2.Text then ShowMessage('Please enter data');
мне кажется, что Вы решаете какую-то ДРУГУЮ задачу, не ту, что Вам дана в исходном задании! (про выбранные спобобы решения я уже молчу вообще...)
Вот, например, у Вас не приняли Ваше решение. А с какой мотировкой? Чем объяснили?..


p.s. данная тема уж очень мутная. я долго сдерживался от того, чтобы в неё ввязаться... до сих пор не уверен, что сделал правильно, написав сюда свой пост...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.06.2012, 16:20   #43
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Объяснили очень просто, ввели другие идентификаторы, ошибки быть не должно, а там выдаёт что нужен какой-то конкретный идентификатор.
Вы меня ещё больше запутали, ну пусть в ифе необязателен знак сравнения, как же всё это реализовать?
Arturko вне форума Ответить с цитированием
Старый 13.06.2012, 16:47   #44
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вы меня ещё больше запутали, ну пусть в ифе необязателен знак сравнения, как же всё это реализовать?
я Вас запутал?! Это, имхо, Вы на протяжении 5-ти страниц данной темы путаетесь сами и путаете всех, кто пытается Вам помочь.

Ещё раз повторю - отталкиваться Вам нужно от ВАШЕЙ МЕТОДИЧКИ ("методичка" - это методическое пособие к лабораторной/курсовой работе, если что)...
Там должен быть рассмотрен пример решения ПОДОБНОЙ задачи.
Вот от него и надо плясать.
Если методички нет - то идите к преподавателю (с диктофоном в кармане).
спрашивайте, КАК решать вашу задачу, ЧТО должен анализировать ваш анализатор. записывайте всё, что он Вам скажет. расшировывайте запись. И анализируйте то, что он Вам сказал.


без этого задачу решить вряд ли получится (ну, разве что, случайно угадать и написать то, что от вас ждут)..
кстати,
Цитата:
Объяснили очень просто, ввели другие идентификаторы, ошибки быть не должно,
почему ошибки быть не должно? Если написать
Код:
if (form1.Parent = 'xxxx') and (formX.AstalaVistaBaby = 'yyyy') then
этот код тоже не должно вызвать ошибку?!
Просто я не вижу критериев, по которым, в вашем случае, можно отличить корректный код от некорректного! и, кстати, это тоже поовод для разговора с преподавателем - что считать корректными идентификаторами...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.06.2012, 17:10   #45
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я в посте #24 объяснил общий ход мыслей по которому можно достичь реализации одного из вариантов лексического анализатора. И вы даже немного следовали ему, а потом стали почему-то сравнивать массивы лексем. Вам нужно не сравнение, а анализ на основании первых двух-трех лексем. Это даст Вам повод убедиться что перед Вами строго определенная конструкция, имеющая определенные правила поведения и описания. Для простоты исследуйте сначала первую лексему - если она однозначно интерпретируется как один из правильных операторов (if, for и т.д.) - повторяюсь обрабатывайте его индивидуально через селектор. Когда первая лексема не дает однозначной идентификации - исследуйте вторую и третью на предмет знака := чтобы убедиться что перед Вами либо операция присваивания (тоже между прочим со своими законами), либо неопознаное выражение. Опять же при условии, что речь идет о паскалеподобном синтаксисе...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.06.2012, 17:48   #46
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Например я проверил что первая лексема if, вторая - скобка, а вот третья может быть любым придуманным идентификатором, или цифрой, или как в моём случае Edit1.Text='', как мне все эти правила оговорить? Четвёртую лексему (знак сравнения) я проверю с помощью case of, в котором должен перечислить >, <, =< <>, >=, <=. Верный ход мыслей?
Arturko вне форума Ответить с цитированием
Старый 13.06.2012, 17:53   #47
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Забыл сказать, преподаватель говорил, что нужно использовать процедуры рекурсивного спуска.
Arturko вне форума Ответить с цитированием
Старый 13.06.2012, 18:03   #48
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Например я проверил что первая лексема if, вторая - скобка, а вот третья может быть любым придуманным идентификатором, или цифрой, или как в моём случае Edit1.Text='', как мне все эти правила оговорить? Четвёртую лексему (знак сравнения) я проверю с помощью case of, в котором должен перечислить >, <, =< <>, >=, <=. Верный ход мыслей?
Ну если есть if, значит по идее должен быть и then, верно?
Вот все что между if и then по идее должно быть условием. Думайте в этом направлении. Что такое условие? Это всего лишь некоторое логическое выражение, истинность которого и проверяет if. Что такое логическое выражение? Спускайтесь в размышлениях дальше...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.06.2012, 18:50   #49
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Arturko Посмотреть сообщение
...если увидели if, после него должно следовать условие, условие должно быть заключено в скобки, в условии должно быть 2 идентификатора и между ними знак сравнения...
Неправильно уже на этом этапе:
после if должно быть логическое выражение или переменная. Никаких двух идентификаторов и знаков между ними.
s-andriano вне форума Ответить с цитированием
Старый 13.06.2012, 19:20   #50
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Arturko, я вижу существенное противоречие между уровнем Вашей квалификации и сложностью задачи в общем виде, как Вы ее формулируете.
Причина может быть одной из двух:
1. Программирование для Вас - профилирующий предмет, и Вы по нему категорически не успеваете.
2. От Вас требуется не общее, а частное решение. Которое существенно проще общего.

Но, если принять за основу 2 вариант, то остаются совершенно неясными ограничения этой частной задачи.
Поэтому могу только присоединиться к точке зрения Serge_Bliznykov: Вам нужно тщательно изучить методичку и/или подробно переговорить с преподавателем.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
синтаксический анализатор(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