> On 13 May 2017, at 14:54, Prashant Shah <pshah.mum...@gmail.com> wrote:
> I am using bison with flex (I am quite new with parsers). > > I want to parse a grammar as given below: > > char a = 'A' > int i = 5555 > float f = 23.456 > > What is the best way to represent the grammar ? > > 1) declaration : datatype IDENTIFIER '=' CONSTANT; > > datatype : CHAR > | INT > | FLOAT > > > 2) declaration : CHAR IDENTIFIER '=' CHAR_CONST > | INT IDENTIFIER '=' INT_CONST > | FLOAT IDENTIFIER '=' FLOAT_CONST > > In the (1) option above where do I parse what type of "CONSTANT" it is ? > > The (2) option seems to be very verbose. You need both: When the parser sees 2), it puts the identifier name on a lookup table along with its type. When the lexer sees an identifier, it checks whether it is on the lookup table, and if it is, returns its reference on the table and the grammar variable for use in 1), otherwise just an identifier to be defined for use in 2). _______________________________________________ help-bison@gnu.org https://lists.gnu.org/mailman/listinfo/help-bison