|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.06.2012, 16:53 | #61 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
гуглить то пробовали? (результаты поиска на гугл) |
|
14.06.2012, 18:50 | #62 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
- определяем внешнюю конструкцию (например, оператор if/then/else), - выделяем из него блоки, назодящиеся между ключевыми словами (т.е. условие, код прямой ветки, код альтернативной ветки, - рекурсивно передаем выделенные фрагменты на следующий уровень для разбора. Цитата:
1. Привести строку к "каноническому" виду (преобразовать табуляцию и концы строк в пробелы, убрать пробелы в начале, конце и двойные пробелы...) 2. Разделить строку на зоны, часто из которых должна быть строго постоянной (if, then, exit...), а часто - переменной. 3. Проверить точное совпадение постоянных частей. 4. Проверить, что переменные части удовлетворяют синтсаксису языка. |
||
14.06.2012, 18:54 | #63 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Не знаю, что там имелось ввиду (я где-то на 4 вкладке запутался), но попробую вкратце объяснить. Рекурсивный спуск обычно используется для разбора выражений. То есть всего того, что находится между if и then в Вашем случае.
В таком случае рассмотрим выражение следющим образом: выражение=выражение операция выражение Примеры правильных выражений: х=10 - здесь два выражения х и 10 и операция = (х=10) and (x>у) - здесь два выражения х=10 и х>y и операция and Строя свою функцию вы также должны рассмотреть оба варианта - то есть если операция простая и не содержит других вложенных операций, то пытаться вычислить выражение, то есть получить true\false. Если сложное то сначала на каждое подвыражение натравить саму функцию. Например, если функция называется eval(x), где х это выражение, то пытаться для второго примера вычислять eval(x=10) and eval(x>y) А уже потом заставить eval вычислять `and. Немного коряво, но как-то так .
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 14.06.2012 в 18:58. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
синтаксический анализатор(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 |