|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.06.2012, 23:32 | #21 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
05.06.2012, 23:46 | #22 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Я плохо знаю программирование, а вы говорите загадками, не хотите на пальцах объяснить, простите...
Пока сделал вот так, не всё конечно учтено, но хоть что-то... Код:
Последний раз редактировалось Arturko; 06.06.2012 в 01:12. |
06.06.2012, 07:55 | #23 | |||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Вроде, специально стараюсь писать по-русски, не используя вставок на ЯП. Чего ж Вам еще надо? В моем посте №10 я писал: Цитата:
Цитата:
И покажите, пожалуйста, где именно я говорю загадками. И еще по поводу удаления пробелов: там, где есть скобки или другие разделители, допускается как наличие, так и отсутствие пробелов, поэтому желательно такие пробелы тоже удалить (включая исходную строку). Последний раз редактировалось s-andriano; 06.06.2012 в 08:03. |
|||
06.06.2012, 12:29 | #24 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Нормализуйте строку - замените все "нехорошие" символы (например символ табуляции) на пробел. Затем сделайте так, чтобы в строке не встречалось более двух пробелов подряд (естественно нужно учитывать выражения в кавычках - строковые константы).
Далее все последовательности символов разделенных между собой заталкайте в динамический массив. Так Вы получите лексемы. Затем в большинстве случаев (но не всегда) анализ первой лексемы дает уже понять что же перед нами за оператор (в нашем случае это будет if). Ставите какой-нибудь селектор (например, используете case) и вперед - рассматриваете работу каждого оператора в отдельности. Ну вкратце как-то так.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 06.06.2012 в 12:31. |
06.06.2012, 12:51 | #25 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
могу поделиться своим в качестве примера, но вечером, сейчас на работе
Единственное, что ограничивает полет мысли программиста-компилятор
|
06.06.2012, 18:33 | #26 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Спасибо за ответы. Сейчас тоже убегаю, но мысль понял, вечером скину что получится.
Utkin ваш вариант выглядит наиболее правильным. Sparky любые исходники могут помочь, спасибо. |
06.06.2012, 20:43 | #27 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Я прав, что в моём случае лексемы будут такие?:
Код:
|
06.06.2012, 21:18 | #28 | |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Я введённую строку пытаюсь разбить на лексемы, т.е хочу что бы перед и после скобки, точки, точки с запятой,знака равно, апострофа, поставились пробелы. Если я преобразую так строку потом все слова я смогу занести в массив. Я делаю так:
Цитата:
Потерялись некоторые символы, не понимаю почему. Объясните пожалуйста. |
|
06.06.2012, 21:21 | #29 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,301
|
Потому что таким образом вы не вставляете символы, а "затираете" существующие.
Имхо, нужно "идти" по строке и командой copy "выдирать" куски.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
06.06.2012, 21:31 | #30 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 35
|
Вспомнил про процедуру insert, всё ок, сейчас дальше буду думать
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
синтаксический анализатор(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 |