Lexer can now tokenize
minus decrement return direction separator
This commit is contained in:
parent
d43a2540cf
commit
9c1baf8216
|
@ -59,6 +59,7 @@ func (err Error) Error () (formattedMessage string) {
|
||||||
// print an arrow with a tail spanning the width of the mistake
|
// print an arrow with a tail spanning the width of the mistake
|
||||||
columnCountdown := err.Location.column
|
columnCountdown := err.Location.column
|
||||||
for columnCountdown > 1 {
|
for columnCountdown > 1 {
|
||||||
|
// TODO: for tabs, print out a teb instead.
|
||||||
formattedMessage += " "
|
formattedMessage += " "
|
||||||
columnCountdown --
|
columnCountdown --
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,13 +126,10 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
||||||
})
|
})
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
case '+':
|
case '+':
|
||||||
lexer.addToken (Token {
|
// TODO: tokenize plus begin
|
||||||
kind: TokenKindPlus,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
case '-':
|
case '-':
|
||||||
// TODO: tokenize dash begin
|
lexer.tokenizeDashBeginning()
|
||||||
lexer.nextRune()
|
|
||||||
case '*':
|
case '*':
|
||||||
lexer.addToken (Token {
|
lexer.addToken (Token {
|
||||||
kind: TokenKindAsterisk,
|
kind: TokenKindAsterisk,
|
||||||
|
@ -187,6 +184,25 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (lexer *LexingOperation) tokenizeDashBeginning () (err error) {
|
||||||
|
token := Token { kind: TokenKindMinus }
|
||||||
|
lexer.nextRune()
|
||||||
|
|
||||||
|
if lexer.char == '-' {
|
||||||
|
token.kind = TokenKindDecrement
|
||||||
|
lexer.nextRune()
|
||||||
|
} else if lexer.char == '>' {
|
||||||
|
token.kind = TokenKindReturnDirection
|
||||||
|
lexer.nextRune()
|
||||||
|
}
|
||||||
|
|
||||||
|
if lexer.char == '-' {
|
||||||
|
token.kind = TokenKindSeparator
|
||||||
|
lexer.nextRune()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// addToken adds a new token to the lexer's token slice.
|
// addToken adds a new token to the lexer's token slice.
|
||||||
func (lexer *LexingOperation) addToken (token Token) {
|
func (lexer *LexingOperation) addToken (token Token) {
|
||||||
lexer.tokens = append(lexer.tokens, token)
|
lexer.tokens = append(lexer.tokens, token)
|
||||||
|
|
Reference in New Issue