Форум программистов, компьютерный форум, киберфорум
Наши страницы

Лексический и синтаксический анализаторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать в виде модуля набор подпрограмм http://www.cyberforum.ru/cpp-beginners/thread622905.html
Реализовать в виде модуля набор подпрограмм для работы с многочленами от одной переменной (1й степени t, 2й степени n). 1) сложение 2) вычитание 3) умножение 4) деление с остатком 5) операции...
C++ Адаптация ПО под 64-битную систему имею необходимость адаптировать прогу на С++ под 64 битную систему ( на 32 работает, но не на 64=() Подскажите плиз какие-нить источники, где можно почитать про адаптацию программ на С++ под 64 битку http://www.cyberforum.ru/cpp-beginners/thread622882.html
Из арабских чисел в римские C++
Функция для перевода из арабских чисел в римские. Как можно заменить устаревший sprintf? string _func_arab_to_roman(int arab){ string arab_str; string res; char arr; int d; ...
C++ програмный код
Помогите плиз разобраться.Написали прогу, немогу понять как она работает.Конкретно нужны красные участки, если можно поподробнее) 1) Add/Dell: //add/dell.h //интерфейс модуля add/del #ifndef...
C++ Получить количество символов во веденной строке http://www.cyberforum.ru/cpp-beginners/thread622796.html
Решил попробовать со строками поработать, сразу же возникло несколько вопросов: 1) В C++ тип string не встроен? Нужно подключать библиотеку? 2) В чем различие char от string? 3) Как...
C++ сравнение элементов массивов разной длинны Есть 2 массива разной длинны - mass1, mass2. Мне нужно перемножить элементы массивов так: mass1 * mass2, mass1 * mass2, mass1 * mass2, mass1 * mass2 и т.д. Т.е. mass2 сдвигается на 1 вперед каждый... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.07.2012, 15:16
serg3091, а что подробнее? Вы разрабатываете внутреннее представление вашего языка, какие узлы как должны представлять те или иные операторы. Затем в действии для правила грамматики (когда происходит свёртка) формируете конкретный узел дерева. В yystype, таким образом, можно хранить конкретный узел. Например, есть правило, генерирующее узел дерева для конструкции while. Действие для данного правила может выглядеть так:
C
1
2
3
4
5
6
7
8
9
10
while_stmt:
     WHILE '(' expr ')' stmt
     {
          // Генерируем узел типа WHILE_NODE_TYPE, поддеревьями которого
          // являются условие продолжения цикла и его тело
          // И generate_node, и WHILE_NODE_TYPE, ествественно, пользовательские
          // вещи, за них отвечает программист, в данном случае это просто абстрактные
          // функции/константы с говорящими именами
          $$ = generate_node(WHILE_NODE_TYPE, $1, $2);
     }
К моменту разбора всей инструкции цикла while expr и stmt уже будут разобраны и будут представлять корни соответствующих поддеревьев (предполагается, что каждое правило генерирует конкретный узел). Тогда результатом разбора данного правила (т.е. тем, что будет помещено на вершину стека) будет узел, объединяющий поддеревья для выражения условия продолжения цикла и тела цикла, под общей сущностью "инструкция while". Он, в свою очередь, сам является stmt и будет добавлен в правиле разбора stmt к общему списку выражений данного блока.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru