ExpressionStatement -> 1+2*3 '\n'
(reader *TokenReader)
| 63 | |
| 64 | // ExpressionStatement -> 1+2*3 '\n' |
| 65 | func ExpressionStatement(reader *TokenReader) (*ASTNode, error) { |
| 66 | pos := reader.GetPos() |
| 67 | node, err := AdditiveLoop(reader) |
| 68 | if err != nil { |
| 69 | return nil, err |
| 70 | } |
| 71 | if node != nil { |
| 72 | tokenType := reader.Peek() |
| 73 | if tokenType != nil && tokenType.TokenType() == token.Enter { |
| 74 | reader.Read() |
| 75 | } else { |
| 76 | node = nil |
| 77 | reader.SetPos(pos) // reset pos |
| 78 | } |
| 79 | } |
| 80 | return node, nil |
| 81 | } |
| 82 | |
| 83 | // AssignmentStatement -> Identifier = Additive parse: a = 10*2, |
| 84 | func AssignmentStatement(reader *TokenReader) (*ASTNode, error) { |