parser_prefix.go 497 B

123456789101112131415161718192021
  1. package parser
  2. import (
  3. "code.osinet.fr/fgm/waiig15/ast"
  4. )
  5. func (p *Parser) parsePrefixExpression() ast.Expression {
  6. defer untrace(trace("parsePrefixExpression"))
  7. expression := &ast.PrefixExpression{
  8. Token: p.curToken,
  9. Operator: p.curToken.Literal,
  10. }
  11. // Consume the operator token to progress to the prefixed expression.
  12. p.nextToken()
  13. // The precedence is now that of the prefix operator instead of the lowest.
  14. expression.Right = p.parseExpression(PREFIX)
  15. return expression
  16. }