Skip to content

Instantly share code, notes, and snippets.

@kooooohe
Created September 26, 2019 04:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kooooohe/4ae9c18205aaa33128d65df9c5cf306c to your computer and use it in GitHub Desktop.
Save kooooohe/4ae9c18205aaa33128d65df9c5cf306c to your computer and use it in GitHub Desktop.
[Blog][TopDownOperatorPrecedence(再帰下降構文解析)におけるExpression(式)の解析処理を追う]parseExpression.go
func (p *Parser) parseExpression(precedence int) ast.Expression {
prefix := p.prefixParseFns[p.curToken.Type]
if prefix == nil {
p.noPrefixParseFnError(p.curToken.Type)
return nil
}
leftExp := prefix()
for !p.peekTokenIs(token.SEMICOLON) && precedence < p.peekPrecedence() {
infix := p.infixParseFns[p.peekToken.Type]
if infix == nil {
return leftExp
}
p.nextToken()
leftExp = infix(leftExp)
}
return leftExp
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment