aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c
new file mode 100644
index 0000000..6f84bd8
--- /dev/null
+++ b/src/parser.c
@@ -0,0 +1,60 @@
1/* grecs - Gray's Extensible Configuration System
2 Copyright (C) 2007-2011 Sergey Poznyakoff
3
4 Grecs is free software; you can redistribute it and/or modify it
5 under the terms of the GNU General Public License as published by the
6 Free Software Foundation; either version 3 of the License, or (at your
7 option) any later version.
8
9 Grecs is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License along
15 with Grecs. If not, see <http://www.gnu.org/licenses/>. */
16
17#ifdef HAVE_CONFIG_H
18# include <config.h>
19#endif
20#include <stdlib.h>
21#include <string.h>
22#include <errno.h>
23#include "grecs.h"
24
25int grecs_error_count;
26int grecs_default_port = 0;
27
28int grecs_trace_flags = 0;
29
30#ifndef GRECS_DEFAULT_PARSER
31# define GRECS_DEFAULT_PARSER grecs_grecs_parser
32#endif
33
34struct grecs_node *(*grecs_parser_fun)(const char *name, int trace) =
35 GRECS_DEFAULT_PARSER;
36
37void
38grecs_gram_trace(int n)
39{
40 if (n)
41 grecs_trace_flags |= GRECS_TRACE_GRAM;
42 else
43 grecs_trace_flags &= ~GRECS_TRACE_GRAM;
44}
45
46void
47grecs_lex_trace(int n)
48{
49 if (n)
50 grecs_trace_flags |= GRECS_TRACE_LEX;
51 else
52 grecs_trace_flags &= ~GRECS_TRACE_LEX;
53}
54
55struct grecs_node *
56grecs_parse(const char *name)
57{
58 grecs_error_count = 0;
59 return grecs_parser_fun(name, grecs_trace_flags);
60}

Return to:

Send suggestions and report system problems to the System administrator.