diff options
| author | Bobby <[email protected]> | 2023-11-17 19:45:44 +0000 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-11-17 19:45:44 +0000 |
| commit | 066ab9ccf3b1d161f91ba1f50599ca33b1708d62 (patch) | |
| tree | c2e6ad47a5d0479dcd8504b26606d85d7171b80e /parser/parser.go | |
| parent | 4d4840e1c286eb06c474b32435b5ae62b47e8192 (diff) | |
| download | mana-066ab9ccf3b1d161f91ba1f50599ca33b1708d62.tar.xz mana-066ab9ccf3b1d161f91ba1f50599ca33b1708d62.zip | |
added:parser tracing for verbose testing
Diffstat (limited to 'parser/parser.go')
| -rw-r--r-- | parser/parser.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/parser/parser.go b/parser/parser.go index 6645da1..a2ea590 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -139,6 +139,8 @@ func (p *Parser) parseIdentifier() ast.Expression { // parseIntegerLiteral parses an integer literal. func (p *Parser) parseIntegerLiteral() ast.Expression { + defer untrace(trace("parseIntegerLiteral")) + var lit *ast.IntegerLiteral = &ast.IntegerLiteral{Token: p.curToken} var value, err = strconv.ParseInt(p.curToken.Literal, 0, 64) @@ -195,6 +197,8 @@ func (p *Parser) parseReturnStatement() *ast.ReturnStatement { // parseExpressionStatement parses an expression statement. func (p *Parser) parseExpressionStatement() *ast.ExpressionStatement { + defer untrace(trace("parseExpressionStatement")) + var stmt *ast.ExpressionStatement = &ast.ExpressionStatement{Token: p.curToken} stmt.Expression = p.parseExpression(LOWEST) @@ -215,6 +219,8 @@ func (p *Parser) noPrefixParseFnError(t tokens.TokenType) { // parseExpression parses an expression. func (p *Parser) parseExpression(precedence int) ast.Expression { + defer untrace(trace("parseExpression")) + prefix := p.prefixParseFns[p.curToken.Type] if prefix == nil { @@ -242,6 +248,8 @@ func (p *Parser) parseExpression(precedence int) ast.Expression { // parsePrefixExpression parses a prefix expression. func (p *Parser) parsePrefixExpression() ast.Expression { + defer untrace(trace("parsePrefixExpression")) + var expression *ast.PrefixExpression = &ast.PrefixExpression{ Token: p.curToken, Operator: p.curToken.Literal, @@ -256,6 +264,8 @@ func (p *Parser) parsePrefixExpression() ast.Expression { // parseInfixExpression parses an infix expression. func (p *Parser) parseInfixExpression(left ast.Expression) ast.Expression { + defer untrace(trace("parseInfixExpression")) + expression := &ast.InfixExpression{ Token: p.curToken, Operator: p.curToken.Literal, |
