monna/parser/parser.go

36 lines
687 B
Go

package parser
import (
"monkey/ast"
"monkey/lexer"
"monkey/token"
)
type Parser struct {
lexer *lexer.Lexer
current_token token.Token
peek_token token.Token
}
func New(l_lexer *lexer.Lexer) *Parser {
l_parser := &Parser{lexer: l_lexer}
// Read two tokens, one for curren_token and another for peek_token
l_parser.next_token()
l_parser.next_token()
return l_parser
}
// When this is first called, current_token and peek_token should point to the same
// token
func (l_parser *Parser) next_token() {
l_parser.current_token = l_parser.peek_token
l_parser.peek_token = l_parser.lexer.NextToken()
}
func (l_parser *Parser) ParseProgram() *ast.Program {
return nil
}