1 /* -*- Mode: C; tab-width: 4 -*-
3 * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 Change History (most recent first):
19 $Log: dnsextd_lexer.l,v $
20 Revision 1.6 2008/07/18 17:40:46 cheshire
21 Removed redundant definition of "YY_NO_UNPUT" (not needed now that we use "%option nounput" instead)
23 Revision 1.5 2008/06/24 18:32:26 mcguire
24 <rdar://problem/6024542> flex producing .c files that result in warnings
26 Revision 1.4 2007/05/25 20:01:43 cheshire
27 <rdar://problem/5226767> /usr/bin/flex failures prevent mDNSResponder from building
28 Only define "int yylineno" on flex 2.5.4 and earlier
30 Revision 1.3 2006/08/14 23:24:56 cheshire
31 Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0
33 Revision 1.2 2006/07/06 20:41:14 cheshire
34 <rdar://problem/4472013> Add Private DNS server functionality to dnsextd
35 Use derived filename "dnsextd_parser.h" instead of "dnsextd_parser.y.h"
37 Revision 1.1 2006/07/06 00:09:05 cheshire
38 <rdar://problem/4472013> Add Private DNS server functionality to dnsextd
45 #include "dnsextd_parser.h"
48 extern YYSTYPE yylval;
50 /* Mac OS X 10.4 has flex version 2.5.4, which doesn't define yylineno for us */
51 /* Mac OS X 10.5 has flex version 2.5.33, which does define yylineno */
52 #if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION <= 4
66 dup = strdup( string + 1);
68 dup[ strlen( dup ) - 1 ] = '\0';
79 options return OPTIONS;
80 listen-on return LISTEN_ON;
81 nameserver return NAMESERVER;
83 address return ADDRESS;
86 private return PRIVATE;
88 allow-update return ALLOWUPDATE;
89 allow-query return ALLOWQUERY;
90 algorithm return ALGORITHM;
99 \* yylval.string = strdup(yytext); return WILDCARD;
100 [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ yylval.string = strdup(yytext); return DOTTED_DECIMAL_ADDRESS;
101 [0123456789]+ yylval.number = atoi(yytext); return NUMBER;
102 [a-zA-Z0-9]+(\.[a-zA-Z0-9]+)* yylval.string = strdup(yytext); return HOSTNAME;
103 [a-zA-Z0-9\.]+([a-zA-Z0-9\.]+)* yylval.string = strdup(yytext); return DOMAINNAME;
104 \"([^"\\\r\n]*(\\.[^"\\\r\n]*)*)\" yylval.string = StripQuotes(yytext); return QUOTEDSTRING;
105 [\/][\/].* /* ignore C++ style comments */;
106 \n yylineno++; /* ignore EOL */;
107 [ \t]+ /* ignore whitespace */;