]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - crypto/heimdal/lib/asn1/lex.l
unfinished sblive driver, playback/mixer only for now - not enabled in
[FreeBSD/FreeBSD.git] / crypto / heimdal / lib / asn1 / lex.l
1 %{
2 /*
3  * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
4  * (Royal Institute of Technology, Stockholm, Sweden). 
5  * All rights reserved. 
6  *
7  * Redistribution and use in source and binary forms, with or without 
8  * modification, are permitted provided that the following conditions 
9  * are met: 
10  *
11  * 1. Redistributions of source code must retain the above copyright 
12  *    notice, this list of conditions and the following disclaimer. 
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright 
15  *    notice, this list of conditions and the following disclaimer in the 
16  *    documentation and/or other materials provided with the distribution. 
17  *
18  * 3. Neither the name of the Institute nor the names of its contributors 
19  *    may be used to endorse or promote products derived from this software 
20  *    without specific prior written permission. 
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
32  * SUCH DAMAGE. 
33  */
34
35 /* $Id: lex.l,v 1.10 1999/12/02 17:05:02 joda Exp $ */
36
37 #ifdef HAVE_CONFIG_H
38 #include <config.h>
39 #endif
40 #include <stdio.h>
41 #include <stdarg.h>
42 #include <stdlib.h>
43 #include <string.h>
44 #ifdef HAVE_UNISTD_H
45 #include <unistd.h>
46 #endif
47 #include "symbol.h"
48 #include "parse.h"
49
50 void error_message(char *, ...);
51
52 static unsigned lineno = 1;
53
54 /* ","|"{"|"}"|"("|")"|"["|"]"|"|"      { return *yytext; } */
55 %}
56
57
58 %%
59 INTEGER                 { return INTEGER; }
60 SEQUENCE                { return SEQUENCE; }
61 OF                      { return OF; }
62 OCTET                   { return OCTET; }
63 STRING                  { return STRING; }
64 GeneralizedTime         { return GeneralizedTime; }
65 GeneralString           { return GeneralString; }
66 BIT                     { return BIT; }
67 APPLICATION             { return APPLICATION; }
68 OPTIONAL                { return OPTIONAL; }
69 BEGIN                   { return TBEGIN; }
70 END                     { return END; }
71 DEFINITIONS             { return DEFINITIONS; }
72 EXTERNAL                { return EXTERNAL; }
73 [,{}()|]                { return *yytext; }
74 "["                     { return *yytext; }
75 "]"                     { return *yytext; }
76 ::=                     { return EEQUAL; }
77 --[^\n]*\n              { ; }
78 -?[0-9]+                { yylval.constant = atoi(yytext); return CONSTANT; }
79 [A-Za-z][-A-Za-z0-9_]*  { yylval.name =  strdup (yytext); return IDENTIFIER; }
80 [ \t]                   ;
81 \n                      { lineno++; }
82 .                       { error_message("Ignoring char(%c)\n", *yytext); }
83 %%
84
85 #ifndef yywrap /* XXX */
86 int
87 yywrap () 
88 {
89      return 1;
90 }
91 #endif
92
93 void
94 error_message (char *format, ...)
95 {
96      va_list args;
97
98      va_start (args, format);
99      fprintf (stderr, ":%d: ", lineno);
100      vfprintf (stderr, format, args);
101      va_end (args);
102 }