[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fwd: User defined YYLTYPE with YYLTYPE_IS_TRIVIAL defined as 1
From: |
Gabriel Czernikier |
Subject: |
Fwd: User defined YYLTYPE with YYLTYPE_IS_TRIVIAL defined as 1 |
Date: |
Fri, 31 Mar 2017 16:50:04 -0300 |
You'd also consider on using the macro that updates yylloc as the parser
goes ahead, it's # define YYLLOC_DEFAULT(Cur, Rhs, N)
If you didn't did that in advance by means of updating yylloc in yylex or
in the semantic actions...
---------- Forwarded message ----------
From: Gabriel Czernikier <address@hidden>
Date: Fri, Mar 31, 2017 at 4:30 PM
Subject: Re: User defined YYLTYPE with YYLTYPE_IS_TRIVIAL defined as 1
To: address@hidden
Cc: address@hidden
The following could be placed anywhere in your declarations section (before
the first occurrence of "%%"):
%initial-action
{
@$.member_1 = 1;
@$.member_2 = 1;
...
@$.member_6 = 1;
};
The YYLTYPE_IS_TRIVIAL is probably better not to be arround.
Regards,
Gabriel
------------------------------
*From*: Debashis De
*Subject*: User defined YYLTYPE with YYLTYPE_IS_TRIVIAL defined as 1
*Date*: Fri, 31 Mar 2017 11:03:52 +0530
------------------------------
Hi,
I have (re)defined YYLTYPE and added two more members after the usual
first line/col and last line/col. So, I have 6 unsigned fields in YYLTYPE.
I have also defined YYLTYPE_IS_TRIVIAL as 1.
Now, Bison 3.0.4 generates the following code:
/* Location data for the lookahead symbol. */
YYLTYPE yylloc
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
= { 1, 1, 1, 1 }
# endif
;
As you can see, it only initializes the default 4 members and not the
two new one I added. For this, g++ 4.7.2 produces compiler warning:
"missing initializer for member ...".
Does anyone know how can I initialize yylloc myself and include the
initialization for all the members?
Thanks and regards,
Debashis
--
*Things are to be used, people are to be loved. Do not do it the other way
round.*