New symbol '^' (caret). The scanner now returns an error token if can't recognise a symbol.
This commit is contained in:
parent
d1122da566
commit
a628bfac39
@ -86,13 +86,14 @@ func (self *scanner) Next() (tk *Token) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *scanner) fetchNextToken() (tk *Token) {
|
func (self *scanner) fetchNextToken() (tk *Token) {
|
||||||
|
var ch byte
|
||||||
if err := self.skipBlanks(); err != nil {
|
if err := self.skipBlanks(); err != nil {
|
||||||
return self.makeErrorToken(err)
|
return self.makeErrorToken(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
escape := false
|
escape := false
|
||||||
for {
|
for {
|
||||||
ch, _ := self.readChar()
|
ch, _ = self.readChar()
|
||||||
switch ch {
|
switch ch {
|
||||||
case '+':
|
case '+':
|
||||||
if next, _ := self.peek(); next == '+' {
|
if next, _ := self.peek(); next == '+' {
|
||||||
@ -143,6 +144,8 @@ func (self *scanner) fetchNextToken() (tk *Token) {
|
|||||||
}
|
}
|
||||||
case ',':
|
case ',':
|
||||||
tk = self.makeToken(SymComma, ch)
|
tk = self.makeToken(SymComma, ch)
|
||||||
|
case '^':
|
||||||
|
tk = self.makeToken(SymCaret, ch)
|
||||||
case ':':
|
case ':':
|
||||||
if next, _ := self.peek(); next == ':' {
|
if next, _ := self.peek(); next == ':' {
|
||||||
tk = self.moveOn(SymDoubleColon, ch, next)
|
tk = self.moveOn(SymDoubleColon, ch, next)
|
||||||
@ -271,6 +274,9 @@ func (self *scanner) fetchNextToken() (tk *Token) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if tk == nil {
|
||||||
|
tk = NewErrorToken(self.row, self.column, fmt.Errorf("unknown symbol '%c'", ch))
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user