Моя функция C в Bison? - PullRequest
       2

Моя функция C в Bison?

2 голосов
/ 27 декабря 2011

У меня есть функция C, которую я хотел бы использовать в моем файле .y Bison.Как я могу это сделать?Где я могу разместить код для моей функции?

Спасибо

1 Ответ

5 голосов
/ 27 декабря 2011

В вашем .y файле вы можете сделать что-то вроде:

%{
#include "types.h"
#include "interface.h"
void doStuff(void);    
%}

Либо #include файл заголовка, либо его объявление прямо здесь.

Это означает, что если interface.h объявил функции add_colour и add_colourd, вы могли бы сделать что-то подобное позже:

Colour:
          ColourSpace { add_colour($1); }
        | STAR ColourSpace { add_colourd($2); }

звонит им по вашему сгенерированному коду.

Если вы хотите внедрить их в этот сгенерированный код, вы можете использовать %% в конце файла и сделать что-то вроде:

%%
void doStuff() {
  // Do some stuff!
}

Таким образом, вы можете написать "обычный старый C" внутри вашего .y файла.

...