/*************************************************************************\
* Copyright (c) 2006 UChicago, as Operator of Argonne
*     National Laboratory.
* SPDX-License-Identifier: EPICS
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/

newline     "\n"
backslash   "\\"
doublequote "\""
singlequote "'"
comment     "#"
whitespace  [ \t\r]
escape      {backslash}.
dstringchar [^"\n\\]
sstringchar [^'\n\\]
bareword    [a-zA-Z0-9_\-+:./\\\[\]<>;]

%%

"pattern" { return(PATTERN);    }
"file"    { return(DBFILE);     }
"global"  { return(GLOBAL);     }

{doublequote}({dstringchar}|{escape})*{doublequote} |
{singlequote}({sstringchar}|{escape})*{singlequote} {
    yylval.Str = dbmfStrdup((char *) yytext+1);
    yylval.Str[strlen(yylval.Str)-1] = '\0';
    return(QUOTE);
}

{bareword}+ {
    yylval.Str = dbmfStrdup((char *) yytext);
    return(WORD);
}

"="     { return(EQUALS);       }
","     { return(COMMA);        }
"{"     { return(O_BRACE);      }
"}"     { return(C_BRACE);      }

{comment}.*     ;
{whitespace}    ;
{newline}       { line_num++;   }

. {
    char message[40];

    sprintf(message, "invalid character '%c'", yytext[0]);
    yyerror(message);

    /* Suppress compiler warning messages */
    if (0) yyunput('c',NULL);
    if (0) yy_switch_to_buffer(NULL);
}

%%
