Compare commits
No commits in common. "245798f33da5e0661cf008f24517ad46f4f922f1" and "64de897de580772e152ab665593913861519d713" have entirely different histories.
245798f33d
...
64de897de5
@ -63,7 +63,6 @@ func (err Error) Error () (formattedMessage string) {
|
|||||||
columnCountdown --
|
columnCountdown --
|
||||||
}
|
}
|
||||||
for err.width > 1 {
|
for err.width > 1 {
|
||||||
// TODO: for tabs, print out 8 of these instead.
|
|
||||||
formattedMessage += "-"
|
formattedMessage += "-"
|
||||||
}
|
}
|
||||||
formattedMessage += "-\n"
|
formattedMessage += "-\n"
|
||||||
|
@ -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 begin
|
// TODO: tokenize number
|
||||||
} else if lowercase || uppercase {
|
} else if lowercase || uppercase {
|
||||||
// TODO: tokenize alpha begin
|
// TODO: tokenize multi
|
||||||
} else {
|
} else {
|
||||||
err = lexer.tokenizeSymbolBeginning()
|
err = lexer.tokenizeSymbolBeginning()
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
@ -52,37 +52,13 @@ func (lexer *LexingOperation) tokenize () (err error) {
|
|||||||
|
|
||||||
func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
||||||
switch lexer.char {
|
switch lexer.char {
|
||||||
case '#':
|
|
||||||
// comment
|
|
||||||
for lexer.char != '\n' {
|
|
||||||
lexer.nextRune()
|
|
||||||
}
|
|
||||||
case '\t':
|
case '\t':
|
||||||
// indent level
|
|
||||||
previousToken := lexer.tokens[len(lexer.tokens) - 1]
|
|
||||||
|
|
||||||
if !previousToken.Is(TokenKindNewline) ||
|
|
||||||
!previousToken.Is(TokenKindNewline) {
|
|
||||||
|
|
||||||
file.NewError (
|
|
||||||
lexer.file.Location(), 1,
|
|
||||||
"tab not used as indent",
|
|
||||||
file.ErrorKindWarn)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
for lexer.char == '\t' {
|
for lexer.char == '\t' {
|
||||||
lexer.addToken (Token {
|
lexer.addToken (Token {
|
||||||
kind: TokenKindIndent,
|
kind: TokenKindIndent,
|
||||||
})
|
})
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
}
|
}
|
||||||
case '\n':
|
|
||||||
// line break
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindNewline,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '"':
|
case '"':
|
||||||
// TODO: tokenize string literal
|
// TODO: tokenize string literal
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
@ -119,56 +95,8 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
kind: TokenKindRBrace,
|
kind: TokenKindRBrace,
|
||||||
})
|
})
|
||||||
lexer.nextRune()
|
lexer.nextRune()
|
||||||
case '+':
|
// TODO: add more for things like math symbols, return
|
||||||
lexer.addToken (Token {
|
// direction operators, indentation, etc
|
||||||
kind: TokenKindPlus,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '-':
|
|
||||||
// TODO: tokenize dash begin
|
|
||||||
lexer.nextRune()
|
|
||||||
case '*':
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindAsterisk,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '/':
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindSlash,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '@':
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindAt,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '!':
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindExclamation,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '%':
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindPercent,
|
|
||||||
})
|
|
||||||
lexer.nextRune()
|
|
||||||
case '~':
|
|
||||||
lexer.addToken (Token {
|
|
||||||
kind: TokenKindTilde,
|
|
||||||
})
|
|
||||||
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()
|
|
||||||
default:
|
default:
|
||||||
err = file.NewError (
|
err = file.NewError (
|
||||||
lexer.file.Location(), 1,
|
lexer.file.Location(), 1,
|
||||||
|
@ -11,7 +11,6 @@ const (
|
|||||||
|
|
||||||
TokenKindSeparator
|
TokenKindSeparator
|
||||||
TokenKindPermission
|
TokenKindPermission
|
||||||
TokenKindReturnDirection
|
|
||||||
|
|
||||||
TokenKindInt
|
TokenKindInt
|
||||||
TokenKindFloat
|
TokenKindFloat
|
||||||
@ -28,25 +27,6 @@ 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
|
||||||
@ -62,11 +42,6 @@ func (token Token) Kind () (kind TokenKind) {
|
|||||||
return token.kind
|
return token.kind
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is returns whether or not the token is of kind kind.
|
|
||||||
func (token Token) Is (kind TokenKind) (match bool) {
|
|
||||||
return token.kind == kind
|
|
||||||
}
|
|
||||||
|
|
||||||
// Value returns the value of the token. Depending on what kind of token it is,
|
// Value returns the value of the token. Depending on what kind of token it is,
|
||||||
// this value may be nil.
|
// this value may be nil.
|
||||||
func (token Token) Value () (value any) {
|
func (token Token) Value () (value any) {
|
||||||
|
Reference in New Issue
Block a user