Вам не хватает только параметра типа [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)
}
Я думаю, что вы можете сделать это, используя опцию - name-prefix
для Bison, и параметр - префикс
для Flex.
В обоих случаях они позволяют заменить префикс по умолчанию « yy
», используемый в функциях, сгенерированных на префикс по вашему выбору. .
Да, это возможно.
У yacc должен быть флаг -p, где вы можете указать другой префикс вместо значения по умолчанию «yy».
Файл, сгенерированный только lex conatins один символ используется снаружи: yylex. Вы можете скомпилировать, например, с -Dyylex = mySecondLex.
Стандартные lex и yacc не могут этого сделать. Flex и Bison делают, как и некоторые другие реализации. Поскольку вы сказали (в комментарии), что не используете flex и bison, какие версии lex и yacc вы используете ?