package parsekit // A provides convenient access to a range of atoms that can be used to // build combinators or parsing rules. var A = struct { EndOfFile Matcher AnyRune Matcher Space Matcher Tab Matcher CarriageRet Matcher Newline Matcher Excl Matcher DoubleQuote Matcher Hash Matcher Dollar Matcher Percent Matcher Amp Matcher SingleQuote Matcher RoundOpen Matcher RoundClose Matcher Asterisk Matcher Plus Matcher Comma Matcher Minus Matcher Dot Matcher Slash Matcher Colon Matcher Semicolon Matcher AngleOpen Matcher Equal Matcher AngleClose Matcher Question Matcher At Matcher SquareOpen Matcher Backslash Matcher SquareClose Matcher Caret Matcher Underscore Matcher Backquote Matcher CurlyOpen Matcher Pipe Matcher CurlyClose Matcher Tilde Matcher Whitespace Matcher WhitespaceAndNewlines Matcher EndOfLine Matcher Digit Matcher ASCII Matcher ASCIILower Matcher ASCIIUpper Matcher HexDigit Matcher }{ EndOfFile: MatchEndOfFile(), AnyRune: MatchAnyRune(), Space: C.Rune(' '), Tab: C.Rune('\t'), CarriageRet: C.Rune('\r'), Newline: C.Rune('\n'), Excl: C.Rune('!'), DoubleQuote: C.Rune('"'), Hash: C.Rune('#'), Dollar: C.Rune('$'), Percent: C.Rune('%'), Amp: C.Rune('&'), SingleQuote: C.Rune('\''), RoundOpen: C.Rune('('), RoundClose: C.Rune(')'), Asterisk: C.Rune('*'), Plus: C.Rune('+'), Comma: C.Rune(','), Minus: C.Rune('-'), Dot: C.Rune('.'), Slash: C.Rune('/'), Colon: C.Rune(':'), Semicolon: C.Rune(';'), AngleOpen: C.Rune('<'), Equal: C.Rune('='), AngleClose: C.Rune('>'), Question: C.Rune('?'), At: C.Rune('@'), SquareOpen: C.Rune('['), Backslash: C.Rune('\\'), SquareClose: C.Rune(']'), Caret: C.Rune('^'), Underscore: C.Rune('_'), Backquote: C.Rune('`'), CurlyOpen: C.Rune('{'), Pipe: C.Rune('|'), CurlyClose: C.Rune('}'), Tilde: C.Rune('~'), Whitespace: C.OneOrMore(C.AnyOf(C.Rune(' '), C.Rune('\t'))), WhitespaceAndNewlines: C.OneOrMore(C.AnyOf(C.Rune(' '), C.Rune('\t'), C.Rune('\r'), C.Rune('\n'))), EndOfLine: C.AnyOf(C.String("\r\n"), C.Rune('\n'), MatchEndOfFile()), Digit: C.RuneRange('0', '9'), ASCII: C.RuneRange('\x00', '\x7F'), ASCIILower: C.RuneRange('a', 'z'), ASCIIUpper: C.RuneRange('A', 'Z'), HexDigit: C.AnyOf(C.RuneRange('0', '9'), C.RuneRange('a', 'f'), C.RuneRange('A', 'F')), } func MatchEndOfFile() Matcher { return func(m *MatchDialog) bool { fork := m.Fork() input, ok := fork.NextRune() return !ok && input == EOF } } func MatchAnyRune() Matcher { return func(m *MatchDialog) bool { _, ok := m.NextRune() return ok } }