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
>
>

Reply via email to