<div dir="ltr">CC Ulya Trofimovich (skvadrik), who removed the remaining reduce/reduce conflicts from the parser last year, and can maybe also help out here.<div><br></div><div>Ulya: see email from Jan below.</div><div><div><br></div><div><br><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 20, 2016 at 8:25 PM, Richard Eisenberg <span dir="ltr"><<a href="mailto:eir@cis.upenn.edu" target="_blank">eir@cis.upenn.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">From your email, you understand everything I do about this. :)<br>
<br>
I think the challenge really is just understanding and eliminating these conflicts. See the commentary at the top of Parser.y to see how to get an analysis of the conflicts.<br>
<br>
While you're in the area, you may want to look at #11267. It's not quite related, but it's also about parsing types.<br>
<span><font color="#888888"><br>
Richard<br>
</font></span><div><div><br>
On Jan 20, 2016, at 1:42 PM, Jan Stolarek <<a href="mailto:jan.stolarek@p.lodz.pl" target="_blank">jan.stolarek@p.lodz.pl</a>> wrote:<br>
<br>
> Richard, I still don't fully understand special treatment of 'role' and 'family' in the parser I<br>
> asked about recently on Skype. Say I have:<br>
><br>
> foo :: role -> role<br>
> foo role = role<br>
><br>
> This results in parse error of type signature, regardless of enabling or<br>
> disabling -XRoleAnnotations. Using `role` as a variable name (not type variable) is fine though.<br>
> This is a consequence of explicitly listing 'role' lexeme in the varid production in the parser,<br>
> but not in tyvarid production. But if I add 'role' to tyvarid production (or, even better, push<br>
> it to special_id production used both by varid and tyvarid) everything works perfectly, I can use<br>
> `role` both as variable and type variable name. Role annotations also work. The only downside is<br>
> a small increase in number of shift/reduce conflicts. If I treat 'family' in the same way (ie.<br>
> add it to tyvarid production) the increase in shift/reduce conflicts really becomes significant:<br>
> from 37 to 129. Is this the only reason we don't do it? As you can guess this question is related<br>
> to open kinds work: I need to add 'kind' lexeme to special_id to make sure it is accepted as a<br>
> variable and type variable name.<br>
><br>
> Janek<br>
><br>
> ---<br>
> Politechnika Łódzka<br>
> Lodz University of Technology<br>
><br>
> Treść tej wiadomości zawiera informacje przeznaczone tylko dla adresata.<br>
> Jeżeli nie jesteście Państwo jej adresatem, bądź otrzymaliście ją przez pomyłkę<br>
> prosimy o powiadomienie o tym nadawcy oraz trwałe jej usunięcie.<br>
><br>
> This email contains information intended solely for the use of the individual to whom it is addressed.<br>
> If you are not the intended recipient or if you have received this message in error,<br>
> please notify the sender and delete it from your system.<br>
<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</div></div></blockquote></div><br></div></div></div></div>