mirror of
https://github.com/omar-polo/gmid.git
synced 2024-09-29 22:12:12 +02:00
79 lines
1.6 KiB
Plaintext
79 lines
1.6 KiB
Plaintext
|
/* -*- mode: fundamental; indent-tabs-mode: t; -*- */
|
||
|
%{
|
||
|
|
||
|
/*
|
||
|
* Copyright (c) 2021 Omar Polo <op@omarpolo.com>
|
||
|
*
|
||
|
* Permission to use, copy, modify, and distribute this software for any
|
||
|
* purpose with or without fee is hereby granted, provided that the above
|
||
|
* copyright notice and this permission notice appear in all copies.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||
|
*/
|
||
|
|
||
|
#include <err.h>
|
||
|
#include <errno.h>
|
||
|
|
||
|
#include "gmid.h"
|
||
|
|
||
|
#include "y.tab.h"
|
||
|
|
||
|
%}
|
||
|
|
||
|
%x COMMENT
|
||
|
%x STRING
|
||
|
|
||
|
%%
|
||
|
|
||
|
<INITIAL># BEGIN(COMMENT);
|
||
|
<COMMENT>.*\n yylineno++; BEGIN(INITIAL);
|
||
|
|
||
|
<INITIAL>\" BEGIN(STRING);
|
||
|
<STRING>[^"]*\" {
|
||
|
if ((yylval.str = strdup(yytext)) == NULL)
|
||
|
err(1, "strdup");
|
||
|
yylval.str[strlen(yylval.str)-1] = '\0'; /* remove the closing quote */
|
||
|
BEGIN(INITIAL);
|
||
|
return TSTRING;
|
||
|
}
|
||
|
|
||
|
[0-9]+ {
|
||
|
yylval.num = parse_portno(yytext);
|
||
|
return TNUM;
|
||
|
}
|
||
|
|
||
|
on yylval.num = 1; return TBOOL;
|
||
|
off yylval.num = 0; return TBOOL;
|
||
|
|
||
|
daemon return TDAEMON;
|
||
|
ipv6 return TIPV6;
|
||
|
port return TPORT;
|
||
|
server return TSERVER;
|
||
|
|
||
|
cert return TCERT;
|
||
|
key return TKEY;
|
||
|
root return TROOT;
|
||
|
cgi return TCGI;
|
||
|
|
||
|
[{}] return *yytext;
|
||
|
|
||
|
\n yylineno++;
|
||
|
|
||
|
[ \t]+ ;
|
||
|
|
||
|
. errx(1, "%d: unexpected character %c", yylineno, *yytext);
|
||
|
|
||
|
%%
|
||
|
|
||
|
int
|
||
|
yywrap(void)
|
||
|
{
|
||
|
return 1;
|
||
|
}
|