summaryrefslogtreecommitdiff
path: root/lemon/cfg.y (plain)
blob: 80d7b84c257667baf4056856fc19488e735bf0bd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%include {#include <assert.h>}
%include {#include <stdlib.h>}
%include {#include <string.h>}
%include {#include "readcfg.h"}
%token_prefix TOK_
%token_type {char*}
%extra_argument {parse_t *ps}
%syntax_error  {printf("error in %s line %d\n", ps->file, ps->line); ps->rc=-1;}
%parse_failure {printf("error in %s line %d\n", ps->file, ps->line); ps->rc=-1;}

file ::= sections.
sections ::= sections section.
sections ::= section.
section ::= SERVER LCURLY sbody RCURLY. { new_server(ps); }
sbody ::= sbody kvpair.
sbody ::= kvpair.
kvpair ::= NAME DOTALN(A).  {ps->top->name = strdup(A); }
kvpair ::= PORT NUMBER(A).  {ps->top->port = atoi(A); }