Re: [PATCH for Dlang support 1/2] d: change the return value of yylex from TokenKind to YYParser.Symbol
Adela Vais <[email protected]>
| Newsgroups | gmane.comp.parsers.bison.patches |
|---|---|
| Message-ID | <CAPk8xGf1PzOVyASdnneSWdVeinY1uF0+FvivJ=5s9a_cgWgXPQ@mail.gmail.com> |
Hello H. S., În vin., 20 nov. 2020 la 20:31, H. S. Teoh <[email protected]> a scris: > Hi Adela, > > On Fri, Nov 20, 2020 at 04:40:54PM +0200, Adela Vais wrote: > [...] > > + case '+': return Calc.Symbol(TokenKind.PLUS, new > YYLocation(startPos, endPos)); > > + case '-': return Calc.Symbol(TokenKind.MINUS, new > YYLocation(startPos, endPos)); > > + case '*': return Calc.Symbol(TokenKind.STAR, new > YYLocation(startPos, endPos)); > > + case '/': return Calc.Symbol(TokenKind.SLASH, new > YYLocation(startPos, endPos)); > > + case '(': return Calc.Symbol(TokenKind.LPAR, new > YYLocation(startPos, endPos)); > > + case ')': return Calc.Symbol(TokenKind.RPAR, new > YYLocation(startPos, endPos)); > > Is YYLocation a struct? If so, you should not use `new`, because that > incurs a GC allocation per construction. > > If not, it probably should be made one, since as far as I can tell it's > only used for storing a start/end point for position, is not > polymorphic, and therefore does not need to be a class. > I took into account what we discussed, this is commit 1/2, the above change is in commit 2/2. Thank you again for your help! Should I make a squash with these 2 commits? I was thinking that they focus on different things and this is why I kept them separate. Adela > > [...] > > + return Calc.Symbol(TokenKind.EOL, new YYLocation(startPos, > endPos)); > [...] > > Ditto. > > > --T > >