diff options
Diffstat (limited to 'parser/parser.go')
| -rw-r--r-- | parser/parser.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/parser/parser.go b/parser/parser.go index 3fe3d9f..6ca88b3 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -71,6 +71,7 @@ func New(l *lexer.Lexer) *Parser { p.registerPrefix(tokens.IF, p.parseIfExpression) p.registerPrefix(tokens.FUNCTION, p.parseFunctionLiteral) p.registerPrefix(tokens.LPAREN, p.parseGroupedExpression) + p.registerPrefix(tokens.STRING, p.parseStringLiteral) // Initialize the infix parse functions. p.infixParseFns = make(map[tokens.TokenType]infixParseFn) @@ -436,6 +437,13 @@ func (p *Parser) parseCallArguments() []ast.Expression { return args } +func (p *Parser) parseStringLiteral() ast.Expression { + return &ast.StringLiteral{ + Token: p.curToken, + Value: p.curToken.Literal, + } +} + // curTokenIs returns true if the current token is of the given type. func (p *Parser) curTokenIs(t tokens.TokenType) bool { return p.curToken.Type == t |
