|
|
@@ -88,6 +88,8 @@ func (p *Parser) parseIdentifier() ast.Expression {
|
|
|
return &ast.Identifier{Token: p.curToken, Value: p.curToken.Literal}
|
|
|
}
|
|
|
func (p *Parser) parseIntegerLiteral() ast.Expression {
|
|
|
+ defer untrace(trace("parseIntegerLiteral"))
|
|
|
+
|
|
|
lit := &ast.IntegerLiteral{Token: p.curToken}
|
|
|
|
|
|
value, err := strconv.ParseInt(p.curToken.Literal, 0, 64)
|
|
|
@@ -101,6 +103,7 @@ func (p *Parser) parseIntegerLiteral() ast.Expression {
|
|
|
return lit
|
|
|
}
|
|
|
func (p *Parser) parseInfixExpression(left ast.Expression) ast.Expression {
|
|
|
+ defer untrace(trace("parseInfixExpression"))
|
|
|
exp := &ast.InfixExpression{
|
|
|
Token: p.curToken,
|
|
|
Left: left,
|
|
|
@@ -114,6 +117,7 @@ func (p *Parser) parseInfixExpression(left ast.Expression) ast.Expression {
|
|
|
return exp
|
|
|
}
|
|
|
func (p *Parser) parsePrefixExpression() ast.Expression {
|
|
|
+ defer untrace(trace("parsePrefixExpression"))
|
|
|
exp := &ast.PrefixExpression{
|
|
|
Token: p.curToken,
|
|
|
Operator: p.curToken.Literal,
|
|
|
@@ -208,6 +212,8 @@ func (p *Parser) parseReturnStatement() *ast.ReturnStatement {
|
|
|
}
|
|
|
|
|
|
func (p *Parser) parseExpressionStatement() *ast.ExpressionStatement {
|
|
|
+ defer untrace(trace("parseExpressionStatement"))
|
|
|
+
|
|
|
stmt := &ast.ExpressionStatement{Token: p.curToken}
|
|
|
|
|
|
stmt.Expression = p.parseExpression(LOWEST)
|
|
|
@@ -220,6 +226,7 @@ func (p *Parser) parseExpressionStatement() *ast.ExpressionStatement {
|
|
|
}
|
|
|
|
|
|
func (p *Parser) parseExpression(precedence int) ast.Expression {
|
|
|
+ defer untrace(trace("parseExpression"))
|
|
|
prefix := p.prefixParseFns[p.curToken.Type]
|
|
|
if prefix == nil {
|
|
|
p.noPrefixParseFnError(p.curToken.Type)
|