Home | History | Annotate | Line # | Download | only in tests
      1 /*
      2  * This file is part of flex.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  *
      8  * 1. Redistributions of source code must retain the above copyright
      9  *    notice, this list of conditions and the following disclaimer.
     10  * 2. Redistributions in binary form must reproduce the above copyright
     11  *    notice, this list of conditions and the following disclaimer in the
     12  *    documentation and/or other materials provided with the distribution.
     13  *
     14  * Neither the name of the University nor the names of its contributors
     15  * may be used to endorse or promote products derived from this software
     16  * without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
     19  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
     20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     21  * PURPOSE.
     22  */
     23 
     24 %{
     25 /* A template scanner file to build "scanner.c". */
     26 #include <stdio.h>
     27 #include <stdlib.h>
     28 #include "config.h"
     29 %}
     30 
     31 %option 8bit
     32 %option nounput nomain noyywrap noinput
     33 %option warn yylineno
     34 
     35 
     36 
     37 %%
     38 
     39 foo|bar         ;
     40 [[:digit:]]+    ;
     41 [[:blank:]]+    ;
     42 .|\n            ;
     43 %%
     44 
     45 int main ( int argc, char** argv )
     46 {
     47     FILE* fp = NULL;
     48     void *yyscanner=0;
     49     M4_YY_DECL_GUTS_VAR();
     50 
     51 #ifdef TEST_IS_REENTRANT
     52     yylex_init(&yyscanner);
     53 #else
     54     (void)yyscanner;
     55 #endif
     56 
     57 #ifdef TEST_HAS_TABLES_EXTERNAL
     58     if((fp  = fopen(argv[1],"rb"))== NULL)
     59         YY_FATAL_ERROR("could not open tables file for reading");
     60 
     61     if(yytables_fload(fp M4_YY_CALL_LAST_ARG) < 0)
     62         YY_FATAL_ERROR("yytables_fload returned < 0");
     63     if(M4_YY_TABLES_VERIFY)
     64         exit(0);
     65 #endif
     66 
     67     if(argc > 2){
     68         if((fp  = fopen(argv[2],"r"))== NULL)
     69             YY_FATAL_ERROR("could not open input file for reading");
     70         yyin = fp;
     71     }
     72     while(yylex(M4_YY_CALL_ONLY_ARG) != 0)
     73         ;
     74 
     75 #ifdef TEST_HAS_TABLES_EXTERNAL
     76     yytables_destroy(M4_YY_CALL_ONLY_ARG);
     77 #endif
     78     yylex_destroy(M4_YY_CALL_ONLY_ARG);
     79 
     80     if(argc < 0) /* silence the compiler */
     81         yyscanner = (void*)fp;
     82 
     83     return 0;
     84 }
     85