etc/services - sync with NetBSD-8
[minix.git] / external / bsd / flex / dist / tests / test-multiple-scanners-r / main.c
blob3c07266dc3fd65e395597d00725b7bf4bd0a8bec
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.
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.
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.
24 #include "scanner-1.h"
25 #include "scanner-2.h"
27 int
28 main ( int argc, char** argv )
30 int S1_ok=1, S2_ok=1;
31 FILE * fp;
32 YY_BUFFER_STATE buff1, buff2;
33 yyscan_t scan1, scan2;
35 S1_lex_init(&scan1);
36 S2_lex_init(&scan2);
38 if((fp = fopen("scanner-1.tables","r")) == 0){
39 fprintf(stderr,"Could not open scanner-1.tables.\n");
40 exit(1);
42 if(S1_tables_fload(fp,scan1) != 0){
43 fprintf(stderr,"Could not load scanner-1.tables.\n");
44 exit(1);
46 fclose(fp);
48 if((fp = fopen("scanner-2.tables","r")) == 0){
49 fprintf(stderr,"Could not open scanner-2.tables.\n");
50 exit(1);
52 if(S2_tables_fload(fp,scan2) != 0){
53 fprintf(stderr,"Could not load scanner-2.tables.\n");
54 exit(1);
56 fclose(fp);
58 S1_set_out(stdout,scan1);
59 S2_set_out(S1_get_out(scan1),scan2);
61 buff1 = S1__scan_string("foo on bar off", scan1);
62 buff2 = S2__scan_string("on blah blah off foo on bar off", scan2);
64 /* scan simultaneously. */
65 while(S1_ok || S2_ok)
67 if (S1_ok)
68 S1_ok = S1_lex(scan1);
69 if (S2_ok)
70 S2_ok = S2_lex(scan2);
72 S1__delete_buffer(buff1, scan1);
73 S2__delete_buffer(buff2, scan2);
75 S1_tables_destroy(scan1);
76 S2_tables_destroy(scan2);
78 S1_lex_destroy(scan1);
79 S2_lex_destroy(scan2);
80 printf("TEST RETURNING OK.\n");
81 return 0;
85 /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */