home *** CD-ROM | disk | FTP | other *** search
- /* --------------------------------------------------------------------------
- * Copyright 1992 by Forschungszentrum Informatik (FZI)
- *
- * You can use and distribute this software under the terms of the licence
- * you should have received along with this program.
- * If not or if you want additional information, write to
- * Forschungszentrum Informatik, "STONE", Haid-und-Neu-Strasse 10-14,
- * D-7500 Karlsruhe 1, Germany.
- * --------------------------------------------------------------------------
- */
- %{
- extern "C" int yyreject();
- extern "C" int yylook();
- extern "C" int yywrap();
- extern "C" int yyless(int);
- extern "C" int yyback(int*, int);
- extern "C" int yyinput();
- extern "C" int yyoutput (int);
- extern "C" int yyunput (int);
-
- #define RETURN yylval.c = strdup (yytext); return
-
- %}
-
- letter [a-zA-Z_]
- digit [0-9]
- diglet [a-zA-Z_0-9]
-
- line_comment "//"[^\n]*
- comment_start "/*"
- comment_line [^\n*]*\n
- comment_end [^\n*]*"*/"
- comment_part [^\n*]*"*"
-
- string \"([^\n\"]|\\\")*\"
- char \'([^\n\']|\\\')*\'
- name {letter}({diglet})*
- number {digit}({diglet})*
-
- white_space [ \n\t]+
- any .
-
- %START comment
- %%
-
- {comment_start} {yymore(); BEGIN comment;}
- <comment>{comment_end} {BEGIN 0; RETURN white_space_tok;}
- <comment>{comment_end} {RETURN white_space_tok;}
- <comment>{comment_part} {yymore();}
- <comment>{comment_line} {RETURN white_space_tok;}
-
- {line_comment} {RETURN white_space_tok;}
-
- {string} {RETURN string_tok;}
- {char} {RETURN char_tok;}
- {number} {RETURN number_tok;}
-
- {white_space} {RETURN white_space_tok;}
- "{" {RETURN l_brc_tok;}
- "}" {RETURN r_brc_tok;}
- "::" {RETURN double_colon_tok;}
- ";" {RETURN semi_colon_tok;}
- "(" {RETURN l_par_tok;}
- ")" {RETURN r_par_tok;}
- "[" {RETURN l_br_tok;}
- "]" {RETURN r_br_tok;}
- "<" {RETURN operator_string_tok;}
- ">" {RETURN operator_string_tok;}
- ">>" {RETURN operator_string_tok;}
- "<<" {RETURN operator_string_tok;}
- "&" {RETURN operator_string_tok;}
- "&=" {RETURN operator_string_tok;}
- "&&" {RETURN operator_string_tok;}
- "=" {RETURN operator_string_tok;}
- "|" {RETURN operator_string_tok;}
- "|=" {RETURN operator_string_tok;}
- "^" {RETURN operator_string_tok;}
- "^=" {RETURN operator_string_tok;}
- "==" {RETURN operator_string_tok;}
- "!" {RETURN operator_string_tok;}
- ">=" {RETURN operator_string_tok;}
- "<=" {RETURN operator_string_tok;}
- "-" {RETURN operator_string_tok;}
- "-=" {RETURN operator_string_tok;}
- "!=" {RETURN operator_string_tok;}
- "||" {RETURN operator_string_tok;}
- "%" {RETURN operator_string_tok;}
- "%=" {RETURN operator_string_tok;}
- "+" {RETURN operator_string_tok;}
- "+=" {RETURN operator_string_tok;}
- ">>=" {RETURN operator_string_tok;}
- "<<=" {RETURN operator_string_tok;}
- "/" {RETURN operator_string_tok;}
- "/=" {RETURN operator_string_tok;}
- "*" {RETURN operator_string_tok;}
- "*=" {RETURN operator_string_tok;}
-
- "operator" {RETURN operator_tok;}
-
- {name} {RETURN name_tok;}
-
- {any} {RETURN special_tok;}
-