/[hydra]/hydra/src/boa_grammar.y
ViewVC logotype

Contents of /hydra/src/boa_grammar.y

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Sat Sep 21 13:53:38 2002 UTC (19 years, 2 months ago) by nmav
Branch: MAIN
Branch point for: boas
Initial revision

1 %{
2
3 /*
4 * Boa, an http server
5 * Copyright (C) 1995 Paul Phillips <psp@well.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 1, or (at your option)
10 * any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 *
21 */
22
23 /* $Id: boa_grammar.y,v 1.14 1999/10/12 14:49:07 jon Exp $*/
24
25 #include <string.h>
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <unistd.h>
29 /* #include "boa.h" */
30 #include "parse.h"
31
32 int yyerror(char * msg);
33
34 /* yydebug = 1; */
35
36 #ifdef DEBUG
37 #define DBG(x) x
38 #else
39 #define DBG(x)
40 #endif
41
42 char *arg1hold;
43 char mime_type[256]; /* global to inherit */
44
45 %}
46
47 %union {
48 char * sval;
49 int ival;
50 struct ccommand * cval;
51 };
52
53 /* boa.conf tokens */
54 %token <cval> STMT_NO_ARGS STMT_ONE_ARG STMT_TWO_ARGS
55
56 /* mime.type tokens */
57 %token <sval> MIMETYPE
58 %token <sval> STRING
59 %token <ival> INTEGER
60
61 %start ConfigFiles
62
63 %%
64
65 ConfigFiles: BoaConfigStmts MimeTypeStmts
66 ;
67
68 BoaConfigStmts: BoaConfigStmts BoaConfigStmt
69 | /* empty */
70 ;
71
72 BoaConfigStmt:
73 StmtNoArgs
74 | StmtOneArg
75 | StmtTwoArgs
76 ;
77
78 StmtNoArgs: STMT_NO_ARGS
79 { if ($1->action) {
80 DBG(printf("StmtNoArgs: %s\n",$1->name);)
81 $1->action(NULL,NULL,$1->object);
82 }
83 }
84 ;
85
86 StmtOneArg: STMT_ONE_ARG STRING
87 { if ($1->action) {
88 DBG(printf("StmtOneArg: %s %s\n",$1->name,$2);)
89 $1->action($2,NULL,$1->object);
90 }
91 }
92 ;
93
94 StmtTwoArgs: STMT_TWO_ARGS STRING
95 { arg1hold = strdup($2); }
96 STRING
97 { if ($1->action) {
98 DBG(printf("StmtTwoArgs: '%s' '%s' '%s'\n",
99 $1->name,arg1hold,$4);)
100 $1->action($4,arg1hold,$1->object);
101 }
102 free(arg1hold);
103 }
104 ;
105
106
107 /******************* mime.types **********************/
108
109 MimeTypeStmts: MimeTypeStmts MimeTypeStmt
110 | /* empty */
111 ;
112
113 MimeTypeStmt: MIMETYPE
114 { strcpy(mime_type, $1); }
115 ExtensionList
116 ;
117
118 ExtensionList: ExtensionList Extension
119 | /* empty */
120 ;
121
122 Extension: STRING
123 { add_mime_type($1, mime_type); }
124 ;
125
126 %%
127

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26