summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luapeg/lpeg.h
blob: 13d7acefd39078148c0c6009b32f8f797b48b2d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
** $Id: lpeg.h,v 1.1 2009/12/23 16:15:36 roberto Exp $
** LPeg - PEG pattern matching for Lua
** Copyright 2009, Lua.org & PUC-Rio  (see 'lpeg.html' for license)
** written by Roberto Ierusalimschy
*/

#ifndef lpeg_h
#define lpeg_h

#include "lua.h"


#define KEYNEWPATT	"lpeg.newpf"


/*
** type of extension functions that define new "patterns" for LPEG
** It should return the new current position or NULL if match fails
*/
typedef const char *(*PattFunc) (const char *s,  /* current position */
                                 const char *e,  /* string end */
                                 const char *o,  /* string start */
                                 const void *ud);  /* user data */

/*
** function to create new patterns based on 'PattFunc' functions.
** This function is available at *registry[KEYNEWPATT]. (Notice
** the extra indirection; the userdata at the registry points to
** a variable that points to the function. In ANSI C a void* cannot
** point to a function.)
*/
typedef void (*Newpf) (lua_State *L,
                       PattFunc f,  /* pattern */
                       const void *ud,  /* (user) data to be passed to 'f' */
                       size_t l);  /* size of data to be passed to 'f' */

#endif