Действительно ли возможно иметь два или больше синтаксических анализатора Lex/Yacc в том же приложении

Вам не хватает только параметра типа [T2] в withNewValue:

class DataPoint[T1] (val timeStampMs: Long, val value: T1) {
    def withNewValue[T2](value: T2): DataPoint[T2] = new DataPoint[T2](this.timeStampMs, value)
    def withKey(key: String): KeyedDataPoint[T1] = new KeyedDataPoint(key, this.timeStampMs, this.value)
}

Компилируется просто отлично.

7
задан lesmana 6 May 2013 в 11:28
поделиться

4 ответа

Я думаю, что вы можете сделать это, используя опцию - name-prefix для Bison, и параметр - префикс для Flex.

В обоих случаях они позволяют заменить префикс по умолчанию « yy », используемый в функциях, сгенерированных на префикс по вашему выбору. .

9
ответ дан 6 December 2019 в 19:42
поделиться

Да, это возможно.

У yacc должен быть флаг -p, где вы можете указать другой префикс вместо значения по умолчанию «yy».

Файл, сгенерированный только lex conatins один символ используется снаружи: yylex. Вы можете скомпилировать, например, с -Dyylex = mySecondLex.

2
ответ дан 6 December 2019 в 19:42
поделиться

Не прямой ответ,

1
ответ дан 6 December 2019 в 19:42
поделиться

Стандартные lex и yacc не могут этого сделать. Flex и Bison делают, как и некоторые другие реализации. Поскольку вы сказали (в комментарии), что не используете flex и bison, какие версии lex и yacc вы используете ?

1
ответ дан 6 December 2019 в 19:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: