blob: 2f614e56fbf2ab048f91919e598028466bf2d597 [file] [log] [blame]
Robert Greenwalt47e4ceb2012-03-26 15:36:57 -07001/* -*- Mode: C; tab-width: 4 -*-
2 *
3 * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18%{
19#include <string.h>
20#include <stdio.h>
21#include "dnsextd_parser.h"
22
23
24extern YYSTYPE yylval;
25
26/* Mac OS X 10.4 has flex version 2.5.4, which doesn't define yylineno for us */
27/* Mac OS X 10.5 has flex version 2.5.33, which does define yylineno */
28#if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION <= 4
29int yylineno = 1;
30#endif
31
32int yylex(void);
33
34static char*
35StripQuotes
36 (
37 const char * string
38 )
39{
40 char * dup;
41
42 dup = strdup( string + 1);
43
44 dup[ strlen( dup ) - 1 ] = '\0';
45
46 return dup;
47}
48
49
50%}
51
52%option nounput
53%%
54
55options return OPTIONS;
56listen-on return LISTEN_ON;
57nameserver return NAMESERVER;
58port return PORT;
59address return ADDRESS;
60llq return LLQ;
61public return PUBLIC;
62private return PRIVATE;
63key return KEY;
64allow-update return ALLOWUPDATE;
65allow-query return ALLOWQUERY;
66algorithm return ALGORITHM;
67secret return SECRET;
68zone return ZONE;
69type return TYPE;
70allow return ALLOW;
71\{ return OBRACE;
72\} return EBRACE;
73; return SEMICOLON;
74IN return IN;
75\* yylval.string = strdup(yytext); return WILDCARD;
76[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ yylval.string = strdup(yytext); return DOTTED_DECIMAL_ADDRESS;
77[0123456789]+ yylval.number = atoi(yytext); return NUMBER;
78[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)* yylval.string = strdup(yytext); return HOSTNAME;
79[a-zA-Z0-9\.]+([a-zA-Z0-9\.]+)* yylval.string = strdup(yytext); return DOMAINNAME;
80\"([^"\\\r\n]*(\\.[^"\\\r\n]*)*)\" yylval.string = StripQuotes(yytext); return QUOTEDSTRING;
81[\/][\/].* /* ignore C++ style comments */;
82\n yylineno++; /* ignore EOL */;
83[ \t]+ /* ignore whitespace */;
84%%