/[anubis]/anubis/src/rcfile.l
ViewVC logotype

Diff of /anubis/src/rcfile.l

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by gray, Fri Feb 28 15:30:07 2003 UTC revision 1.7 by gray, Thu Mar 6 18:47:32 2003 UTC
# Line 73  extern int yydebug; Line 73  extern int yydebug;
73  %x STR LIT ML  %x STR LIT ML
74    
75  WS [ \t][ \t]*  WS [ \t][ \t]*
76  IDENT [a-zA-Z_][a-zA-Z_0-9-]+  IDENT [a-zA-Z_][a-zA-Z0-9_-]*
77  LDASHES ---[ \t]*  LDASHES ---[ \t]*
78  RDASHES [ \t]*---  RDASHES [ \t]*---
79  %%  %%
80           /* End-of-line comments */           /* End-of-line comments */
81  #.*\n          { cfg_line_num++; }  #.*\n          { cfg_line_num++; return EOL; }
82  #.*            /* end-of-file comment */;  #.*            /* end-of-file comment */;
83           /* Keywords */           /* Keywords */
84  BEGIN          return T_BEGIN;  BEGIN          return T_BEGIN;
# Line 116  END | Line 116  END |
116  [rR][eE][mM][oO][vV][eE]     return REMOVE;  [rR][eE][mM][oO][vV][eE]     return REMOVE;
117  [mM][oO][dD][iI][fF][yY]     return MODIFY;  [mM][oO][dD][iI][fF][yY]     return MODIFY;
118    
          /* Literal */  
 <LIT>[^\n]*/\n   { BEGIN(INITIAL);  
                    yylval.string = trimcpy();  
                    DBG("<LIT>STRING", yylval.string);  
                    return STRING; }  
119           /* Identifiers */           /* Identifiers */
120  {IDENT}          { yylval.string = strdup(yytext);  {IDENT}          { yylval.string = strdup(yytext);
121                     DBG("IDENT", yytext);                     DBG("IDENT", yytext);
122                     return IDENT; }                     return IDENT; }
123           /* Quoted strings */           /* Quoted strings */
124  \"[^\\"\n]*\"     { return simple_string(); }  <INITIAL,LIT>\"[^\\"\n]*\"     { return simple_string(); }
125  \"[^\\"\n]*\\[0-9] {BEGIN(STR);  <INITIAL,LIT>\"[^\\"\n]*\\[0-9] {BEGIN(STR);
126                     string_begin();                     string_begin();
127                     string_add(yytext+1, yyleng-1);                     string_add(yytext+1, yyleng-1);
128                    }                    }
129  \"[^\\"\n]*\\.    { BEGIN(STR);  <INITIAL,LIT>\"[^\\"\n]*\\.    { BEGIN(STR);
130                     string_begin();                     string_begin();
131                     string_add(yytext+1, yyleng-3);                     string_add(yytext+1, yyleng-3);
132                     string_add_char(escape(yytext[yyleng-1])); }                     string_add_char(escape(yytext[yyleng-1])); }
# Line 143  END | Line 138  END |
138                     string_finish();                     string_finish();
139                     return STRING; }                     return STRING; }
140           /* "Here document" (multiline strings) */           /* "Here document" (multiline strings) */
141  "<<"-?{IDENT}[ \t]*\n |  <INITIAL,LIT>"<<"-?{IDENT}[ \t]*\n |
142  "<<"-?{IDENT}[ \t]*#.*\n { BEGIN(ML);  <INITIAL,LIT>"<<"-?{IDENT}[ \t]*#.*\n { BEGIN(ML);
143                           multiline_begin();                                          multiline_begin();
144                           cfg_line_num++; }                                          cfg_line_num++; }
145  <ML>.*\n { char *p = multiline_strip_tabs(yytext);  <ML>.*\n { char *p = multiline_strip_tabs(yytext);
146             cfg_line_num++;             cfg_line_num++;
147                        
# Line 156  END | Line 151  END |
151                     BEGIN(INITIAL);                     BEGIN(INITIAL);
152                     multiline_finish();                     multiline_finish();
153                     unput('\n');                     unput('\n');
154                       DBG("<ML>STRING", yylval.string);
155                     return STRING;                     return STRING;
156               }               }
157              multiline_add(p);              multiline_add(p);
158           }           }
159             /* Literal */
160    <LIT>\\\n     { cfg_line_num++; }
161    <LIT>[^ \t\n]+\\\n   { yylval.string = malloc(yyleng-1);
162                           memcpy(yylval.string, yytext, yyleng-2);
163                           yylval.string[yyleng-2] = 0;
164                           DBG("<LIT>STRING", yylval.string);
165                           cfg_line_num++;
166                           return STRING; }
167    <LIT>[^ \t\n]+   { yylval.string = trimcpy();
168                       DBG("<LIT>STRING", yylval.string);
169                       return STRING; }
170    <LIT>{WS}        ;
171    <LIT>\n          { BEGIN(INITIAL); cfg_line_num++; return EOL; }
172           /* Other tokens */           /* Other tokens */
173  {WS}           ;  {WS}           ;
174  \n             { cfg_line_num++; return EOL; }  \n             { cfg_line_num++; return EOL; }
# Line 189  simple_string() Line 198  simple_string()
198    yylval.string = xmalloc(yyleng - 1);    yylval.string = xmalloc(yyleng - 1);
199    memcpy(yylval.string, yytext + 1, yyleng - 2);    memcpy(yylval.string, yytext + 1, yyleng - 2);
200    yylval.string[yyleng - 2] = 0;    yylval.string[yyleng - 2] = 0;
201      DBG("STRING",yylval.string);
202    return STRING;    return STRING;
203  }  }
204    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26