]> git.saurik.com Git - apple/libc.git/blobdiff - regex/TRE/lib/tre-parse.h
Libc-825.24.tar.gz
[apple/libc.git] / regex / TRE / lib / tre-parse.h
diff --git a/regex/TRE/lib/tre-parse.h b/regex/TRE/lib/tre-parse.h
new file mode 100644 (file)
index 0000000..431f407
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+  tre-parse.c - Regexp parser definitions
+
+  This software is released under a BSD-style license.
+  See the file LICENSE for details and copyright.
+
+*/
+
+#ifndef TRE_PARSE_H
+#define TRE_PARSE_H 1
+
+#ifdef __LIBC__
+#include <xlocale_private.h>
+#else /* !__LIBC__ */
+#include <xlocale.h>
+#endif /* !__LIBC__ */
+
+/* Parse context. */
+typedef struct {
+  /* Memory allocator. The AST is allocated using this. */
+  tre_mem_t mem;
+  /* Stack used for keeping track of regexp syntax. */
+  tre_stack_t *stack;
+  /* The parse result. */
+  tre_ast_node_t *result;
+  /* The regexp to parse and its length. */
+  const tre_char_t *re;
+  /* The first character of the entire regexp. */
+  const tre_char_t *re_start;
+  /* The first character after the end of the regexp. */
+  const tre_char_t *re_end;
+  /* The current locale */
+  locale_t loc;
+  int len;
+  /* Current submatch ID. */
+  int submatch_id;
+  /* Current invisible submatch ID. */
+  int submatch_id_invisible;
+  /* Current position (number of literal). */
+  int position;
+  /* The highest back reference or -1 if none seen so far. */
+  int max_backref;
+  /* Number of tags that need reordering. */
+  int num_reorder_tags;
+  /* This flag is set if the regexp uses approximate matching. */
+  int have_approx;
+  /* Compilation flags. */
+  int cflags;
+  /* If this flag is set the top-level submatch is not captured. */
+  int nofirstsub;
+  /* The currently set approximate matching parameters. */
+  int params[TRE_PARAM_LAST];
+} tre_parse_ctx_t;
+
+/* Parses a wide character regexp pattern into a syntax tree.  This parser
+   handles both syntaxes (BRE and ERE), including the TRE extensions. */
+__private_extern__ reg_errcode_t
+tre_parse(tre_parse_ctx_t *ctx);
+
+#endif /* TRE_PARSE_H */
+
+/* EOF */