diff options
Diffstat (limited to 'mDNSResponder/mDNSShared/dnsextd_lexer.l')
-rw-r--r-- | mDNSResponder/mDNSShared/dnsextd_lexer.l | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/mDNSResponder/mDNSShared/dnsextd_lexer.l b/mDNSResponder/mDNSShared/dnsextd_lexer.l new file mode 100644 index 00000000..5cac1060 --- /dev/null +++ b/mDNSResponder/mDNSShared/dnsextd_lexer.l @@ -0,0 +1,84 @@ +/* -*- Mode: C; tab-width: 4 -*- + * + * Copyright (c) 2006-2011 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 +#define YY_NO_INPUT 1 +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 */; +%% |