help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to get left hand side symbol in action


From: Akim Demaille
Subject: Re: how to get left hand side symbol in action
Date: Thu, 9 May 2019 08:50:27 +0200


> Le 6 mai 2019 à 22:45, Hans Åberg <address@hidden> a écrit :
> 
>> 
>> On 6 May 2019, at 18:09, Akim Demaille <address@hidden> wrote:
>> 
>>> Le 6 mai 2019 à 14:50, Hans Åberg <address@hidden> a écrit :
>>> 
>>> 
>>>> On 6 May 2019, at 11:28, r0ller <address@hidden> wrote:
>>>> 
>>>> Hi All,
>>>> 
>>>> Is it possible in *any* way to get the left hand side symbol in an action 
>>>> of a rule? Say, I have:
>>>> 
>>>> A : B C
>>>> {<!-- -->
>>>>  std:cout<<"left hand side symbol is:"<<???
>>>> };
>>>> 
>>>> I tried to find it out myself and googled a lot but didn't find anything:(
>>> 
>>> In the C++ parser, one can write:
>>> std::cout << “LHS: " << yytname_[yylhs.type_get()] << std::endl;
>> 
>> But it's an internal detail, there is no guarantee it won't change.
> 
> Right, so it might be a feature request for the longer term.

I'm trying to see what would make sense.

> Perhaps a variation of $ and @ that gives access to the name,

I am very uncomfortable with this.  Symbol names are technical details,
most of the time they are irrelevant to the end user, just like the
the user of a piece of software does not care about the names of the
functions: that's a implementation detail.

In addition, tokens have several names: the identifier, and the
string name, like

%token <string> ID "identifier"

Not to mention that I also want to provide support for
internationalization.  So what name should that be? ID?
identifier? or identifiant in French?

Of course when you debug a grammar, the names of the symbols
are very important, and that's why the debug traces need the
symbol names.  Again, like when you debug a program: then
function names matter.

In the present case, I believe that the names that r0ller want
should really be part of *his* specification, they should
not come from internal details such as the symbol name.  So
I do think it is saner that the names are explicitly put in the
action.


> or the raw stack value in case there are more stuff to access.

Which only exists in lalr1.cc.  And I think r0ller is using
glr.cc.  Maybe once Valentin is done there will be symbols.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]