aboutsummaryrefslogtreecommitdiff
path: root/parser/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser/parser.go')
-rw-r--r--parser/parser.go8
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