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

Конструирование транслятора для модельного языка. Литература по LEX/YACC - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ функцыя структур http://www.cyberforum.ru/cpp-beginners/thread515615.html
В програмі використати функції користувача У масиві що складаеться з 20 цілих елементів обчислити 1 номер мінімального елементу массиву 2 суму елементів масиву розташованого між першім і другим відемними елементами 3 перетворити масив так щоб спочатку розташовувалися всі елементи модуль яких не перевищую 5 а потім всі інші Официальным языком форума является русский язык.
C++ Чтение нескольких строк Подскажите пожалуйста как сделать следующее: дан файл в котором 2 строки. Первую из этих строк записать в str1, вторую в str2. Строки разделены enter-ом, то есть одна под другой. http://www.cyberforum.ru/cpp-beginners/thread515603.html
C++ Можно ли представить структуру как элемент массива, т е массив состоящий из однотипных структур
Можно ли представить структуру как элемент массива, т е массив состоящий из однотипных структур
C++ Ugadai chislo programma
Computer zagadivaet chislo, i vi doljni dogadat chislo. Esli dogadali +50 ballov else -10 ballov. Pervonachalnoe ball 100. i eshe kogda igrok ne hochet igrat nado zakonchit programmu, kak eto zdelat pomogite. #include "stdio.h" #include "conio.h" #include "stdlib.h" #include "time.h" #define N 3 #define DEBUG //
C++ Дана матрица размера M × N 2 задача http://www.cyberforum.ru/cpp-beginners/thread515580.html
Дана матрица размера M × N. После последнего столбца, содержащего только отрицательные элементы, вставить столбец из нулей. Если требуемых столбцов нет, то вывести матрицу без изменений.
C++ Дана матрица размера M × N Дана матрица размера M × N. Найти максимальный среди элементов тех столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если упорядоченные столбцы в матрице отсутствуют, то вывести 0. подробнее

Показать сообщение отдельно
aw_rabbit
 Аватар для aw_rabbit
147 / 104 / 6
Регистрация: 08.02.2012
Сообщений: 202
14.03.2012, 11:22     Конструирование транслятора для модельного языка. Литература по LEX/YACC
Чистая грамматика
Expr->ident := NumExpr ;
NumExpr-> Term {+|- NumExpr}
Term->Multiplier {*|/ Term}
Multiplier->ident|number| ( NumExpr)

Все что в <> атрибуты. Транслируются в параметры функции
Все что в (. .) семантические правила. При трансляции просто вставляются в код.

Отладка такого кода делится на 2 этапа:
1. Отладка самой грамматики. Тогда генератор ругается непонятными словами типа факторизация или левая рекурсия.
2. Отладка кода, который мы нагенерировали. Генератор не проверяет то что вы там написали в скобках, а честно их вставляет в код. Дальше дело за компилятором. Иногда чтобы понять что не так нужно залесть прямо в код.

Пример функции для первого правила:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void Parser::expr() {
        std::wstring str;
        std::wstring s,s1,s2,s3,s4; 
        Expect(1);
        s1=t->val;
        Expect(3);
        NumExpr(s2);
        Expect(4);
        str+=s1; str+=s2; str+=L":=\n";
        while (la->kind == 1) {
            Get();
            s3=t->val; s4=L"";
            Expect(3);
            NumExpr(s4);
            Expect(4);
            s+=s3;  s+=s4; s+=L":=\n"; 
        }
        str+=s;
        std::wofstream outfile ("out.txt", std::ios_base::out);
        outfile << str << std::endl;          
        outfile.close();
            
}
 
Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru