email: art_copr@list.ru
Проблема в следующем: требуется написать программу проверки типов.
в книге Ахо,Сети,Ульмана "Компиляторы - Принципы,Технологии,инструменты" написана глава "Идентификация типов", но законченных примеров там нет (или скорее всего я плохо искал).
Написана программа проверки должна быть для bison грамматики.
Хотел написать по примеру 6.1:
Конструктор типа Кодирование
pointer 01
array 10
function_return 11
Конструктор типа Кодирование
boolean 0000
char 0001
integer 0010
real 0011
Результат:
Выражение типа Код
char 000000 0001
function_return(char) 000011 0001
pointer(function_return(char) 000111 0001
array(pointer(function_return(char) 100111 0001
Для примера что - то типа такого кода есть в tiny c compiler (tcc)
Вопрос: как реализовать это под bison:
%token ARRAY
%token POINTER
%token F_RETURN
%token REAL
%token CHAR
%token BOOLEAN
у кого какие предложения?
код пишется на с++ хотелось бы реализовать всю проверку ввиде класса
который является членом класса CParser (уже написан).
CParser
{
public:
....
const int Run () const{ return yyparse ();}
const int call_function (const char* lpszName,параметры вызова)
{
symrec* pSym = (*pSymTable)[lpszName];
/* здесь вызов проверки типов */
return VOID_TYPE;
}
....
protected: CSymTable* pSymTable;
указатель на класс проверки типов;
};
Ответ на:
комментарий
от kiv
Ответ на:
комментарий
от art_corp
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум LR(1) с помощью GNU Bison (2015)
- Форум bison & C++ (2006)
- Форум GNU Bison - преобразование в обратную польскую запись. (2015)
- Форум [C++/OpenMP] Распараллеливание поиска значения в векторе. (2011)
- Форум Свой класс Any (2014)
- Форум Flex&Bisone конфликты (2020)
- Форум YYSTYPE Bison&Flex (2021)
- Форум язычок вот написал (2020)
- Форум Драйвер чтения и записи (2013)
- Форум Проверка типов параметров makecontext (2013)