func lexAsm8(x *lex8.Lexer) *lex8.Token { r := x.Rune() if x.IsWhite(r) { panic("incorrect token start") } switch r { case '\n': x.Next() return x.MakeToken(Endl) case '{': x.Next() return x.MakeToken(Lbrace) case '}': x.Next() return x.MakeToken(Rbrace) case '/': x.Next() return lex8.LexComment(x) case '"': return lex8.LexString(x, String, '"') } if isOperandChar(r) { return lexOperand(x) } x.Errorf("illegal char %q", r) x.Next() return x.MakeToken(lex8.Illegal) }
func lexG8(x *lex8.Lexer) *lex8.Token { r := x.Rune() if x.IsWhite(r) { panic("incorrect token start") } switch r { case '\n': x.Next() return x.MakeToken(Endl) case '"': return lex8.LexString(x, String, '"') case '\'': return lex8.LexString(x, Char, '\'') } if lex8.IsDigit(r) { return lexNumber(x) } else if isLetter(r) { return lexIdent(x) } // always make progress at this point x.Next() t := lexOperator(x, r) if t != nil { return t } x.Errorf("illegal char %q", r) return x.MakeToken(lex8.Illegal) }