Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать в виде модуля набор подпрограмм http://www.cyberforum.ru/cpp-beginners/thread622905.html
Реализовать в виде модуля набор подпрограмм для работы с многочленами от одной переменной (1й степени t, 2й степени n). 1) сложение 2) вычитание 3) умножение 4) деление с остатком 5) операции отношения (равно, не равно) 6) возведение в натуральную степень k 7) вычисление производной от многочлена 8) вычисление значения в точке х0.
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; sprintf(arr, "%d", arab); arab_str = arr;
C++ програмный код
Помогите плиз разобраться.Написали прогу, немогу понять как она работает.Конкретно нужны красные участки, если можно поподробнее) 1) Add/Dell: //add/dell.h //интерфейс модуля add/del #ifndef add/dell_h #define add/dell_h #endif //add/dell.cpp //реализация модуля «add/del» int readmsg(char*s){
C++ Получить количество символов во веденной строке http://www.cyberforum.ru/cpp-beginners/thread622796.html
Решил попробовать со строками поработать, сразу же возникло несколько вопросов: 1) В C++ тип string не встроен? Нужно подключать библиотеку? 2) В чем различие char от string? 3) Как использовать функции: * strlen - получить кол-во символов в строке. Попытался получить кол-во символов в веденной строке, возникли проблемы: 1. Нельзя получить кол-во...
C++ сравнение элементов массивов разной длинны Есть 2 массива разной длинны - mass1, mass2. Мне нужно перемножить элементы массивов так: mass1 * mass2, mass1 * mass2, mass1 * mass2, mass1 * mass2 и т.д. Т.е. mass2 сдвигается на 1 вперед каждый раз когда элементы перемножаться. Написал код, но это бред како-то) int mass_full; int mass_sum; int mass_result; mass_sum=1; подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4958 / 3034 / 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 к общему списку выражений данного блока.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru