package parser import ( "code.jmug.me/jmug/interpreter-in-go/pkg/token" ) const ( _ int = iota LOWEST EQUALS // == LESSGREATER // > or < SUM // + PRODUCT // * PREFIX // -X or !X CALL // myFunction(X) INDEX // array[index] ) var precedences = map[token.TokenType]int{ token.EQ: EQUALS, token.NOT_EQ: EQUALS, token.GT: LESSGREATER, token.LT: LESSGREATER, token.PLUS: SUM, token.MINUS: SUM, token.ASTERISK: PRODUCT, token.SLASH: PRODUCT, token.LPAREN: CALL, token.LBRACKET: INDEX, } func (p *Parser) peekPrecedence() int { if pr, ok := precedences[p.peekToken.Type]; ok { return pr } return LOWEST } func (p *Parser) curPrecedence() int { if pr, ok := precedences[p.curToken.Type]; ok { return pr } return LOWEST }