func (l *Lexer) Last() (r rune, width int) {
	return l.last, l.width
}
Last return the last rune read from the input stream.
package lexer
import (
	"container/list"
	"fmt"
	"math"
	"strings"
	"unicode"
	"unicode/utf8"
)
const EOF rune = 0x04
func IsEOF(c rune, n int) bool {
	return n == 0
}
func IsInvalid(c rune, n int) bool {
	return c == utf8.RuneError && n == 1
}
type StateFn func(*Lexer) StateFn
type Lexer struct {
	input string      
	start int         
	pos   int         
	width int         
	last  rune        
	state StateFn     
	items *list.List  
}
func New(start StateFn, input string) *Lexer {
	if start == nil {
		panic("nil start state")
	}
	return &Lexer{
		state: start,
		input: input,
		items: list.New(),
	}
}
func (l *Lexer) Input() string {
	return l.input
}
func (l *Lexer) Start() int {
	return l.start
}
func (l *Lexer) Pos() int {
	return l.pos
}
func (l *Lexer) Current() string {
	return l.input[l.start:l.pos]
}