Added a ton more token kinds
This commit is contained in:
parent
64de897de5
commit
a0ce033c27
@ -36,9 +36,9 @@ func (lexer *LexingOperation) tokenize () (err error) {
|
|||||||
number := lexer.char >= '0' && lexer.char <= '9'
|
number := lexer.char >= '0' && lexer.char <= '9'
|
||||||
|
|
||||||
if number {
|
if number {
|
||||||
// TODO: tokenize number
|
// TODO: tokenize number begin
|
||||||
} else if lowercase || uppercase {
|
} else if lowercase || uppercase {
|
||||||
// TODO: tokenize multi
|
// TODO: tokenize alpha begin
|
||||||
} else {
|
} else {
|
||||||
err = lexer.tokenizeSymbolBeginning()
|
err = lexer.tokenizeSymbolBeginning()
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
@ -51,6 +51,7 @@ func (lexer *LexingOperation) tokenize () (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
||||||
|
// TODO: ignore comments
|
||||||
switch lexer.char {
|
switch lexer.char {
|
||||||
case '\t':
|
case '\t':
|
||||||
for lexer.char == '\t' {
|
for lexer.char == '\t' {
|
||||||
@ -59,6 +60,7 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
})
|
})
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
}
|
}
|
||||||
|
// TODO: newline
|
||||||
case '"':
|
case '"':
|
||||||
// TODO: tokenize string literal
|
// TODO: tokenize string literal
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
@ -95,6 +97,43 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
kind: TokenKindRBrace,
|
kind: TokenKindRBrace,
|
||||||
})
|
})
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
|
case '+':
|
||||||
|
// TODO: tokenize plus
|
||||||
|
lexer.nextRune()
|
||||||
|
case '-':
|
||||||
|
// TODO: tokenize dash begin
|
||||||
|
lexer.nextRune()
|
||||||
|
case '*':
|
||||||
|
// TODO: tokenize asterisk
|
||||||
|
lexer.nextRune()
|
||||||
|
case '/':
|
||||||
|
// TODO: tokenize slash
|
||||||
|
lexer.nextRune()
|
||||||
|
case '@':
|
||||||
|
// TODO: tokenize @
|
||||||
|
lexer.nextRune()
|
||||||
|
case '!':
|
||||||
|
// TODO: tokenize exclamation mark
|
||||||
|
lexer.nextRune()
|
||||||
|
case '%':
|
||||||
|
// TODO: tokenize percent
|
||||||
|
lexer.nextRune()
|
||||||
|
case '~':
|
||||||
|
// TODO: tokenize tilde
|
||||||
|
lexer.nextRune()
|
||||||
|
case '<':
|
||||||
|
// TODO: tokenize less than begin
|
||||||
|
lexer.nextRune()
|
||||||
|
case '>':
|
||||||
|
// TODO: tokenize greater than begin
|
||||||
|
lexer.nextRune()
|
||||||
|
case '|':
|
||||||
|
// TODO: tokenize bar begin
|
||||||
|
lexer.nextRune()
|
||||||
|
case '&':
|
||||||
|
// TODO: tokenize and begin
|
||||||
|
lexer.nextRune()
|
||||||
|
|
||||||
// TODO: add more for things like math symbols, return
|
// TODO: add more for things like math symbols, return
|
||||||
// direction operators, indentation, etc
|
// direction operators, indentation, etc
|
||||||
default:
|
default:
|
||||||
|
@ -11,6 +11,7 @@ const (
|
|||||||
|
|
||||||
TokenKindSeparator
|
TokenKindSeparator
|
||||||
TokenKindPermission
|
TokenKindPermission
|
||||||
|
TokenKindReturnDirection
|
||||||
|
|
||||||
TokenKindInt
|
TokenKindInt
|
||||||
TokenKindFloat
|
TokenKindFloat
|
||||||
@ -27,6 +28,25 @@ const (
|
|||||||
TokenKindRBracket
|
TokenKindRBracket
|
||||||
TokenKindLBrace
|
TokenKindLBrace
|
||||||
TokenKindRBrace
|
TokenKindRBrace
|
||||||
|
|
||||||
|
TokenKindPlus
|
||||||
|
TokenKindMinus
|
||||||
|
TokenKindAsterisk
|
||||||
|
TokenKindSlash
|
||||||
|
|
||||||
|
TokenKindAt
|
||||||
|
TokenKindExclamation
|
||||||
|
TokenKindPercent
|
||||||
|
TokenKindTilde
|
||||||
|
|
||||||
|
TokenKindLessThan
|
||||||
|
TokenKindLShift
|
||||||
|
TokenKindGreaterThan
|
||||||
|
TokenKindRShift
|
||||||
|
TokenKindBinaryOr
|
||||||
|
TokenKindLogicalOr
|
||||||
|
TokenKindBinaryAnd
|
||||||
|
TokenKindLogicalAnd
|
||||||
)
|
)
|
||||||
|
|
||||||
// Token represents a single token. It holds its location in the file, as well
|
// Token represents a single token. It holds its location in the file, as well
|
||||||
|
Reference in New Issue
Block a user