Variable reference from $VAR to @VAR to avoid object conflict
This commit is contained in:
@@ -36,6 +36,7 @@ const (
|
||||
TokenCaret
|
||||
TokenAmpersand
|
||||
TokenConcat
|
||||
TokenVariableReference
|
||||
)
|
||||
|
||||
type Token struct {
|
||||
@@ -184,6 +185,8 @@ func (l *Lexer) NextToken() Token {
|
||||
return l.lexString()
|
||||
case '#':
|
||||
return l.lexHashIdentifier()
|
||||
case '@':
|
||||
return l.lexVariableReference()
|
||||
case '$':
|
||||
return l.lexObjectIdentifier()
|
||||
}
|
||||
@@ -311,3 +314,14 @@ func (l *Lexer) lexHashIdentifier() Token {
|
||||
}
|
||||
return l.emit(TokenIdentifier)
|
||||
}
|
||||
|
||||
func (l *Lexer) lexVariableReference() Token {
|
||||
for {
|
||||
r := l.next()
|
||||
if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' || r == '-' {
|
||||
continue
|
||||
}
|
||||
l.backup()
|
||||
return l.emit(TokenVariableReference)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ func (p *Parser) parseAtom() (Value, bool) {
|
||||
true
|
||||
case TokenIdentifier:
|
||||
return &ReferenceValue{Position: tok.Position, Value: tok.Value}, true
|
||||
case TokenObjectIdentifier:
|
||||
case TokenVariableReference:
|
||||
return &VariableReferenceValue{Position: tok.Position, Name: tok.Value}, true
|
||||
case TokenLBrace:
|
||||
arr := &ArrayValue{Position: tok.Position}
|
||||
|
||||
Reference in New Issue
Block a user