Hi Cristian, Adela, could you have a look at this please?
> Le 17 nov. 2021 à 19:32, cristiansimon <cristiansi...@protonmail.com> a écrit > : > > Hello, > > When generating a parser for the following file with location support using > GNU Bison 3.8.2: > > %language "D" > %define api.parser.class {Parser} > %locations > > %union { > AST tast; > Declaration[] tdecls; > Declaration tdecl; > Statement[] tstmts; > Statement tstmt; > Type ttype; > string str; > char chr; > long lng; > double dbl; > } > > %token SEMICOLON ";" > PERIOD "." > OPENPAREN "(" > CLOSEPAREN ")" > OPENBRACE "{" > CLOSEBRACE "}" > OPENBRACKET "[" > CLOSEBRACKET "]" > PLUS "+" > MINUS "-" > ASTERISK "*" > SLASH "/" > > %token RETURN "return" > VOID "void" > INT "int" > FLOAT "float" > CHAR "char" > STRING "string" > > %token <str> IDENTIFIER STRINGVALUE > %token <chr> CHARACTER > %token <lng> INTEGER > %token <dbl> FLOATVALUE > > %% > ast : /* Empty*/ > | declarations > ; > > declarations : declaration > | declaration declarations > ; > > declaration : type IDENTIFIER "(" ")" "{" statements "}" > ; > > statements : statement > | statement statements > ; > > statement : "return" ";" > ; > > type : "void" > ; > %% > > struct AST {} > class Declaration {} > class Statement {} > final class Function : Declaration {} > final class Return : Statement {} > enum Type {} > > Compiling the generated code yields the following error, which does not > happen when not enabling locations: > > cdc.p/parser.d(764): Error: function `parser.Parser.YYStack.push(int state, > YYSemanticType value, ref YYLocation loc)` is not callable using argument > types `(int, immutable(YYSemanticType), YYLocation)` > cdc.p/parser.d(764): cannot pass argument `yy_semantic_null` of type > `immutable(YYSemanticType)` to parameter `YYSemanticType value` > cdc.p/parser.d(765): Error: function `parser.Parser.YYStack.push(int state, > YYSemanticType value, ref YYLocation loc)` is not callable using argument > types `(int, immutable(YYSemanticType), YYLocation)` > cdc.p/parser.d(765): cannot pass argument `yy_semantic_null` of type > `immutable(YYSemanticType)` to parameter `YYSemanticType value` > > using ldc2. > > Removing the user-defined classes from the union seems to fix it, but this > cannot be done in the original code as they serve a purpose there. > > What is there at fault here? What could be a fix for this issue? Thanks in > advance. >