[BACK]Return to lex.l CVS log [TXT][DIR] Up to [local] / src / usr.bin / asn1_compile

Diff for /src/usr.bin/asn1_compile/Attic/lex.l between version 1.1 and 1.2

version 1.1, 2003/05/11 21:36:33 version 1.2, 2005/10/16 18:56:35
Line 1 
Line 1 
 %{  %{
 /*  /*
  * Copyright (c) 1997 - 2001 Kungliga Tekniska Högskolan   * Copyright (c) 1997 - 2004 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden).   * (Royal Institute of Technology, Stockholm, Sweden).
  * All rights reserved.   * All rights reserved.
  *   *
Line 32 
Line 32 
  * SUCH DAMAGE.   * SUCH DAMAGE.
  */   */
   
 /* $KTH: lex.l,v 1.19 2001/09/25 23:28:03 assar Exp $ */  /* $KTH: lex.l,v 1.24 2004/10/13 17:40:21 lha Exp $ */
   
 #ifdef HAVE_CONFIG_H  #ifdef HAVE_CONFIG_H
 #include <config.h>  #include <config.h>
Line 56 
Line 56 
   
 #undef ECHO  #undef ECHO
   
   static void handle_comment(int type);
   
 %}  %}
   
   
 %%  %%
 INTEGER                 { return INTEGER; }  INTEGER                 { return INTEGER; }
   BOOLEAN                 { return BOOLEAN; }
 IMPORTS                 { return IMPORTS; }  IMPORTS                 { return IMPORTS; }
 FROM                    { return FROM; }  FROM                    { return FROM; }
 SEQUENCE                { return SEQUENCE; }  SEQUENCE                { return SEQUENCE; }
   CHOICE                  { return CHOICE; }
 OF                      { return OF; }  OF                      { return OF; }
 OCTET                   { return OCTET; }  OCTET                   { return OCTET; }
 STRING                  { return STRING; }  STRING                  { return STRING; }
 GeneralizedTime         { return GeneralizedTime; }  GeneralizedTime         { return GeneralizedTime; }
 GeneralString           { return GeneralString; }  GeneralString           { return GeneralString; }
   UTF8String              { return UTF8String; }
   NULL                    { return NULLTYPE; }
 BIT                     { return BIT; }  BIT                     { return BIT; }
 APPLICATION             { return APPLICATION; }  APPLICATION             { return APPLICATION; }
 OPTIONAL                { return OPTIONAL; }  OPTIONAL                { return OPTIONAL; }
 BEGIN                   { return TBEGIN; }  BEGIN                   { return TBEGIN; }
 END                     { return END; }  END                     { return END; }
   DEFAULT                 { return DEFAULT; }
 DEFINITIONS             { return DEFINITIONS; }  DEFINITIONS             { return DEFINITIONS; }
 ENUMERATED              { return ENUMERATED; }  ENUMERATED              { return ENUMERATED; }
 EXTERNAL                { return EXTERNAL; }  EXTERNAL                { return EXTERNAL; }
 OBJECT                  { return OBJECT; }  OBJECT                  { return OBJECT; }
 IDENTIFIER              { return IDENTIFIER; }  IDENTIFIER              { return IDENTIFIER; }
 [,;{}()|]               { return *yytext; }  [-,;{}()|\"]            { return *yytext; }
 "["                     { return *yytext; }  "["                     { return *yytext; }
 "]"                     { return *yytext; }  "]"                     { return *yytext; }
 ::=                     { return EEQUAL; }  ::=                     { return EEQUAL; }
 --[^\n]*\n              { ++lineno; }  --                      { handle_comment(0); }
 -?(0x)?[0-9]+           { char *e, *y = yytext;  \/\*                    { handle_comment(1); }
   0x[0-9A-Fa-f]+|[0-9]+   { char *e, *y = yytext;
                           yylval.constant = strtol((const char *)yytext,                            yylval.constant = strtol((const char *)yytext,
                                                    &e, 0);                                                     &e, 0);
                           if(e == y)                            if(e == y)
Line 98 
Line 106 
                         }                          }
 [ \t]                   ;  [ \t]                   ;
 \n                      { ++lineno; }  \n                      { ++lineno; }
   \.\.\.                  { return DOTDOTDOT; }
 \.\.                    { return DOTDOT; }  \.\.                    { return DOTDOT; }
 .                       { error_message("Ignoring char(%c)\n", *yytext); }  .                       { error_message("Ignoring char(%c)\n", *yytext); }
 %%  %%
Line 119 
Line 128 
      fprintf (stderr, "%s:%d: ", filename(), lineno);       fprintf (stderr, "%s:%d: ", filename(), lineno);
      vfprintf (stderr, format, args);       vfprintf (stderr, format, args);
      va_end (args);       va_end (args);
   }
   
   static void
   handle_comment(int type)
   {
       int c;
       int start_lineno = lineno;
       if(type == 0) {
           int f = 0;
           while((c = input()) != EOF) {
               if(f && c == '-')
                   return;
               if(c == '-') {
                   f = 1;
                   continue;
               }
               if(c == '\n') {
                   lineno++;
                   return;
               }
               f = 0;
           }
       } else {
           int level = 1;
           int seen_star = 0;
           int seen_slash = 0;
           while((c = input()) != EOF) {
               if(c == '/') {
                   if(seen_star) {
                       if(--level == 0)
                           return;
                       seen_star = 0;
                       continue;
                   }
                   seen_slash = 1;
                   continue;
               }
               if(c == '*') {
                   if(seen_slash) {
                       level++;
                       seen_star = seen_slash = 0;
                       continue;
                   }
                   seen_star = 1;
                   continue;
               }
               seen_star = seen_slash = 0;
               if(c == '\n') {
                   lineno++;
                   continue;
               }
           }
       }
       if(c == EOF)
           error_message("unterminated comment, possibly started on line %d\n", start_lineno);
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2