[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.
- Re: how to get left hand side symbol in action, (continued)
- Re: how to get left hand side symbol in action, Hans Åberg, 2019/05/06
- Re: how to get left hand side symbol in action, Hans Åberg, 2019/05/06
- Re: how to get left hand side symbol in action,
Akim Demaille <=
- Re: how to get left hand side symbol in action, Hans Åberg, 2019/05/09
- Re: how to get left hand side symbol in action, Christian Schoenebeck, 2019/05/09
- Re: how to get left hand side symbol in action, r0ller, 2019/05/09
- Re: how to get left hand side symbol in action, Akim Demaille, 2019/05/10
- Re: how to get left hand side symbol in action, Hans Åberg, 2019/05/10
- Re: how to get left hand side symbol in action, Derek Clegg, 2019/05/10
- Re: how to get left hand side symbol in action, Christian Schoenebeck, 2019/05/10
- Re: how to get left hand side symbol in action, Akim Demaille, 2019/05/10
- Re: how to get left hand side symbol in action, Derek Clegg, 2019/05/10
- Re: how to get left hand side symbol in action, Christian Schoenebeck, 2019/05/11