В yacc, как поместить определение в переменную? - PullRequest
0 голосов
/ 03 декабря 2009

В моем файле YACC у меня есть следующий код:

fun_declaration : type_specifier ID '(' params ')' 
                  {$2->type = "function";
                   $2->args = params; }

params : param_list | VOID ;

Ты видишь, что я пытаюсь сделать?

args - это строка. Я пытаюсь поместить параметры функции в эту строку. Как это сделать?

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

Вам нужно, чтобы 'params' возвращал нужную вам строку в $$, так же как ID возвращает указатель на некоторую структуру с полями 'type' и 'args'. Это означает, что вам понадобится объявление типа%, в котором будет сказано, какой элемент% union использовать.

Существует множество книг и онлайн-учебных пособий по использованию yacc следующим образом.

0 голосов
/ 03 декабря 2009

Просто обратитесь к $n, как если бы вы ссылались на любой компонент семантического значения в правиле. Как то так:

 $2->args = strdup($4);
...