prefix_expression.go 722 B

1234567891011121314151617181920212223242526272829303132333435
  1. package ast
  2. import (
  3. "bytes"
  4. "code.osinet.fr/fgm/waiig15/token"
  5. )
  6. // ExpressionStatement fulfills the Node and Statement interfaces.
  7. // It represents a prefixed expression like:
  8. // "-5;"
  9. type PrefixExpression struct {
  10. Token token.Token
  11. Operator string
  12. Right Expression
  13. }
  14. // String satisfies the Node and fmt.Stringer interfaces.
  15. func (pe *PrefixExpression) String() string {
  16. var out bytes.Buffer
  17. out.WriteString("(")
  18. out.WriteString(pe.Operator)
  19. out.WriteString(pe.Right.String())
  20. out.WriteString(")")
  21. return out.String()
  22. }
  23. func (pe *PrefixExpression) expressionNode() {}
  24. // TokenLiteral satisfies the Node interface.
  25. func (pe *PrefixExpression) TokenLiteral() string {
  26. return pe.Token.Literal
  27. }