func lexStatus(l *lex.Lexer) lex.StateFn { l.AcceptRun(indent) l.Ignore() if l.Accept(statuss) { l.Emit(tokStatus) } return nil }
func lexMeta(l *lex.Lexer) lex.StateFn { l.AcceptRun(indent) l.Ignore() if l.Accept(";") { l.Emit(tokMeta) l.AcceptRun(indent) l.Ignore() return lexText } return lexNewline }
func lexAmount(l *lex.Lexer) lex.StateFn { l.AcceptRun(indent) l.Ignore() if l.Accept("$") { l.Emit(tokUnit) } l.AcceptRun(digit + ",") l.Accept(".") l.AcceptRun(digit) if l.Pos > l.Start { l.Emit(tokAmount) } return lexCommod }
func lexDate(l *lex.Lexer) lex.StateFn { fail := false if l.AcceptRun(digit) == 0 { fail = true } else if !l.Accept("/") { fail = true } else if l.AcceptRun(digit) == 0 { fail = true } else if !l.Accept("/") { fail = true } else if l.AcceptRun(digit) == 0 { fail = true } if fail { l.AcceptRunNot(whitespace + meta) l.Errorf("invalid date on line %v", l.LineNumber()) l.Ignore() } else { l.Emit(tokDate) } return nil }