У меня есть задание, где я должен проанализировать код схемы, чтобы отобразить SVG схемы, используя flex и bison. Я хочу использовать C++ STL, чтобы облегчить себе жизнь, но не смог этого сделать. Вот мой код:
Пример.y
%{
void yyerror (char *s); /* C declarations used in actions */
#include <stdio.h>
#include <stdlib.h>
%}
.
.
..tokens and grammer....
.
.
int main (void)
{
/* init symbol table */
return yyparse ( );
}
void yyerror (char *s) {fprintf (stderr, "%s\n", s);}
scan.l
%{
#include "Sample.tab.h"
%}
%%
.
.
lexical rules
.
.
%%
int yywrap (void) {return 1;}
Я пробовал много подходов, таких как использование extern "C", включая yylex(), yyparse и т. д., но это не сработало. Как именно я могу заставить код C++ работать в файле yacc? Я также знаю, что есть подход, при котором мы можем создать третий файл main.cpp и код в нем. Как именно этот подход будет работать? Пожалуйста, скажите, какие изменения мне нужно внести в мой код, чтобы он заработал. Файл отлично работает с C, но не может использовать в нем cout, cin и т.д.
yacc
код C как код C++ - действительно плохая идея. Между языками есть различия — C++ — это не C. Любые ошибки, возникающие при компиляции кода C как кода C++, будут незаметными и их будет невозможно найти, а тем более исправить. 29.03.2018