Hi Csongor, I believe the reason for this failure is that a -> @m b gets parsed as a -> @(m b). Why is that? Because a ‘btype’ includes type-level application.
If you replace the ‘btype’ after PREFIX_AT with an ‘atype’, this particular issue should go away. At least that’s my hypothesis, I haven’t tested it. - Vlad > On 29 Aug 2020, at 01:32, Csongor Kiss <kiss.csongor.k...@gmail.com> wrote: > > Hello devs, > > I am trying to modify GHC's parser to allow the following syntax in types: > > a -> @m b > > but my naive attempt was unsuccessful: > > type :: { LHsType GhcPs } > : btype { $1 } > | btype '->' PREFIX_AT btype ctype ... > > For example when I try to parse the following code (and turn on the lexer > debug log): > > test :: a -> @m b > test = undefined > > I get the following > > token: ITvarid "test" > token: ITdcolon NormalSyntax > token: ITvarid "a" > token: ITrarrow NormalSyntax > token: ITtypeApp > token: ITvarid "m" > token: ITvarid "b" > token: ITsemi > > Parse.hs:2:1: error: > parse error (possibly incorrect indentation or mismatched brackets) > | > 2 | test = undefined > > > I don't have much experience with hacking on the parser so I'm likely missing > something obvious. > Could someone please point at what I might be doing wrong? > > Thanks in advance. > > Cheers, > Csongor > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs