В предыдущем посте, я высказался о том, что хочу эдакий generalized callback, который мог бы указывать на любую функцию. Возникает вопрос, а зачем это мне? Попробую для начала сделать некоторое введение, которое, надеюсь, немного прольет свет на эту проблему. Давайте рассмотрим простенький калькулятор, поддерживающий 26 переменных (a-z), операции +, -, *, / и скобки, имлементированный при помощи парочки Flex/Bison и с целевым языком С++. Как я уже когда-то писал , для начала необходимо сделать небольшой workaround для того, чтобы состыковать парсер, сгенерированный бизоном, и лексер, сгенерированный флексом. Для этого используется класс наследник от yyFlexLexer. файл lexer.h #ifndef _LEXER_DERIVED_CLASS_H_ #define _LEXER_DERIVED_CLASS_H_ #ifndef __FLEX_LEXER_H #undef yyFlexLexer #include <FlexLexer.h> #endif #include <iostream> #include <parser.h> namespace calc{ class Lexer:public yyFlexLexer { int yylex(); Parser::semantic_type* yylval; Parser::location_type*...
adventures in the software development lands, since 2006