1// This file is part of SmallBASIC
2//
3// The regular expressions routines is based on match.c by J. Kercheval:
4//
5// This program is distributed under the terms of the GPL v2.0 or later
6// Download the GNU Public License (GPL) from www.gnu.org
7//
8// Copyright(C) 2000 Nicholas Christopoulos
9
10/**
11 * @file match.h
12 @author J. Kercheval
13 @date Sat, 01/05/1991 22:21:49
14
15 J. Kercheval Wed, 02/20/1991 22:29:01 Released to Public Domain
16 J. Kercheval Fri, 02/22/1991 15:29:01 fix '\' bugs (two :( of them)
17 J. Kercheval Sun, 03/10/1991 19:31:29 add error return to RegMatche()
18 J. Kercheval Sun, 03/10/1991 20:11:11 add IsValidRegPattern code
19 J. Kercheval Sun, 03/10/1991 20:37:11 beef up main()
20 J. Kercheval Tue, 03/12/1991 22:25:10 Released as V1.1 to Public Domain
21
22 The file match.c coexists in the same directory with the string class.
23 */
24
25#if !defined(_JKMATCH_H)
26#define _JKMATCH_H
27
28#include "common/sys.h"
29
30/* return codes */
31#define reg_match_literal_failure -1 // reg_match failure on literal
32// (not found)
33#define reg_match_bad_pattern -2 // bad pattern
34#define reg_match_range_failure -3 // reg_match failure on [..]
35// construct
36#define reg_match_abort -4 // premature end of
37// text string
38#define reg_match_premature_end -5 // premature end of pattern
39// string
40#define reg_match_valid 0 // valid reg_match
41/**
42 * @ingroup str
43 *
44 * The regular expressions routines, by J. Kercheval
45 *
46 @code
47 In the pattern string:
48 `*' RegMatches any sequence of characters (zero or more)
49 `?' RegMatches any character
50 [SET] RegMatches any character in the specified set,
51 [!SET] or [^SET] RegMatches any character not in the specified set.
52
53 A set is composed of characters or ranges; a range looks like
54 character hyphen character (as in 0-9 or A-Z). [0-9a-zA-Z_] is the
55 minimal set of characters allowed in the [..] pattern construct.
56 Other characters are allowed (ie. 8 bit characters) if your system
57 will support them.
58
59 To suppress the special syntactic significance of any of `[]*?!^-\',
60 and RegMatch the character exactly, precede it with a `\'.
61 @endcode
62 *
63 * @param p is the pattern
64 * @param t is the text
65 * @return 0 on success
66 */
67int reg_match(const char *p, char *t);
68
69#endif
70