/* * --- GSMP-COPYRIGHT-NOTE-BEGIN --- * * This copyright note is auto-generated by ./scripts/Create-CopyPatch. * Please add additional copyright information _after_ the line containing * the GSMP-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by * the ./scripts/Create-CopyPatch script. Do not edit this copyright text! * * GSMP: dam/utility/spec2cc/SpecScanner.lex * General Sound Manipulation Program is Copyright (C) 2000 - 2004 * Valentin Ziegler and René Rebe * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2. A copy of the GNU General * Public License can be found in the file LICENSE. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT- * ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * --- GSMP-COPYRIGHT-NOTE-END --- */ %{ //#include "SpecParserActions.h" //#include "SpecParser.tab.h" #include "TokenHack.h" #include "ScannerUtils.h" #include int line_num = 1; char* id; extern char* filename; %} DIGIT [0-9] ALPHA [a-zA-Z_] ALNUM {DIGIT}|{ALPHA} %x comment %x c_block %% "/*" { BEGIN(comment); } [^*\n]* { /* eat anything that's not a '*' */ } "*"+[^*/\n]* { /* eat up '*'s not followed by '/'s */ } \n { ++line_num; } "*"+"/" { BEGIN(INITIAL); } "{%" { BEGIN(c_block); C_BlockInit (); } [^%\n]* { TextAdd (yytext); } "%"+[^}\n]* { TextAdd (yytext); } \n { ++line_num; TextAdd (yytext); } "%"+"}" { BEGIN(INITIAL); return C_BLOCK; } " "|"\t" { /* whitespace */} "\n" { ++line_num; } "prelude" { return PRELUDE; } "automaton" { return AUTOMATON; } "namespace" { return NAMESPACE; } "{"|"}"|"("|")" { return *yytext; } "+"|"-"|"$" { return *yytext; } {ALPHA}{ALNUM}* { id = strdup (yytext); return ID; } . { TextReset (); TextAdd ("Illegal token : "); TextAdd (yytext); yyerror (TextGet ()); }