YACC Не получает значения от узлов-преемников - PullRequest
1 голос
/ 24 мая 2019

Я делаю школьный проект и у меня возникли некоторые проблемы.

У меня есть этот Yacc грамматик

FILE        : '{' GEOMETRY '}'
            ;

GEOMETRY    : key_type ':' value_point ',' key_coordinates ':' PONTO
            ;


PONTO       : VETOR_MIN2 { printf("%s", $<str>1); }
            ;

VETOR_MIN2  : '['  numero ',' numero ']'
            ;

Когда я делаю этот printf в нетерминале PONTO, я получаю только это: [

но я должен получить что-то вроде этого: [20, 10] Чего здесь не хватает? Пожалуйста помоги. Спасибо за ваше время.

1 Ответ

0 голосов
/ 24 мая 2019

Семантическое значение правила - это значение, которое находится в $$ после выполнения действий этого правила. Если в правиле нет никаких действий (как в случае VECTOR_MIN2), действием по умолчанию является $$ = $1; (если нет $1 или типы не совпадают, в этом случае действия по умолчанию не существует ).

Если вы хотите, чтобы VECTOR_MIN2 производил другое значение, вам нужно добавить действие и присвоить другое значение $$.

...