2015-06-04 2 views
1

Я пытаюсь дублировать синтаксис C, где я могу объединить переменное число строк в одну строку, такую ​​как поддержка printf. Вот пример:Конкатенация маркеров YACC

log("here is line 1, " 
    "and here is line 2"); 

Я в настоящее время имею следующий, который поддерживает отдельные аргументы:

| LOG LPAREN STRING COMMA STRING RPAREN { 
    func($$, LOG, STR_ST, STR_ST, $3, $5); } 

Я хотел бы иметь возможность Concat несколько маркеров STRING в одну строку, которая затем может быть передана FUNC. Это возможно?

ответ

2

Да, вам просто нужно использовать обычное производство разделенных списков для ваших параметров.

LOG '(' PARAMS ')' {...} ; 

PARAMS : STRING 
     | PARAMS ';' STRING 
     ; 

 Смежные вопросы

  • Нет связанных вопросов^_^