You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.5 KiB
85 lines
2.5 KiB
/* -*- Mode: C; tab-width: 4 -*-
|
|
*
|
|
* Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
%{
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include "dnsextd_parser.h"
|
|
|
|
|
|
extern YYSTYPE yylval;
|
|
|
|
/* Mac OS X 10.4 has flex version 2.5.4, which doesn't define yylineno for us */
|
|
/* Mac OS X 10.5 has flex version 2.5.33, which does define yylineno */
|
|
#if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION <= 4
|
|
int yylineno = 1;
|
|
#endif
|
|
|
|
int yylex(void);
|
|
|
|
static char*
|
|
StripQuotes
|
|
(
|
|
const char * string
|
|
)
|
|
{
|
|
char * dup;
|
|
|
|
dup = strdup( string + 1);
|
|
|
|
dup[ strlen( dup ) - 1 ] = '\0';
|
|
|
|
return dup;
|
|
}
|
|
|
|
|
|
%}
|
|
|
|
%option nounput
|
|
%%
|
|
|
|
options return OPTIONS;
|
|
listen-on return LISTEN_ON;
|
|
nameserver return NAMESERVER;
|
|
port return PORT;
|
|
address return ADDRESS;
|
|
llq return LLQ;
|
|
public return PUBLIC;
|
|
private return PRIVATE;
|
|
key return KEY;
|
|
allow-update return ALLOWUPDATE;
|
|
allow-query return ALLOWQUERY;
|
|
algorithm return ALGORITHM;
|
|
secret return SECRET;
|
|
zone return ZONE;
|
|
type return TYPE;
|
|
allow return ALLOW;
|
|
\{ return OBRACE;
|
|
\} return EBRACE;
|
|
; return SEMICOLON;
|
|
IN return IN;
|
|
\* yylval.string = strdup(yytext); return WILDCARD;
|
|
[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ yylval.string = strdup(yytext); return DOTTED_DECIMAL_ADDRESS;
|
|
[0123456789]+ yylval.number = atoi(yytext); return NUMBER;
|
|
[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)* yylval.string = strdup(yytext); return HOSTNAME;
|
|
[a-zA-Z0-9\.]+([a-zA-Z0-9\.]+)* yylval.string = strdup(yytext); return DOMAINNAME;
|
|
\"([^"\\\r\n]*(\\.[^"\\\r\n]*)*)\" yylval.string = StripQuotes(yytext); return QUOTEDSTRING;
|
|
[\/][\/].* /* ignore C++ style comments */;
|
|
\n yylineno++; /* ignore EOL */;
|
|
[ \t]+ /* ignore whitespace */;
|
|
%%
|