/* * --- 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/src/SaveDataFlexLexer.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 "SaveDataTokens.hh" extern "C" { int SaveDatawrap () {return 1;} } extern "C" { int yywrap () {return 1;} } std::string DAM::SaveDataTokens::const_string; %} DIGIT [0-9] ALPHA [a-zA-Z_] ALNUM {DIGIT}|{ALPHA} HEXIT {DIGIT}|[a-f] %x comment %x string %% "/*" { BEGIN(comment); } [^*\n]* { /* eat anything that's not a '*' */ } "*"+[^*/\n]* { /* eat up '*'s not followed by '/'s */ } \n { yylineno++; } "*"+"/" { BEGIN(INITIAL); } "\n" { yylineno++; } " "|"\t" { /* eat whitespace */ } "-"?{DIGIT}+ { return DAM::SaveDataTokens::Integer; } "-"?{DIGIT}"."{DIGIT}+"e"[+-]{DIGIT}+ { return DAM::SaveDataTokens::Float; } "{"|"}"|"-"|"<"|">" { return (int) yytext[0]; } "0x"{HEXIT}+ { return DAM::SaveDataTokens::Pointer; } {ALPHA}{ALNUM}* { return DAM::SaveDataTokens::Id; } "\"" { BEGIN(string); DAM::SaveDataTokens::const_string = ""; } [^\n\\\"]+ { DAM::SaveDataTokens::const_string += yytext; } "\\". { DAM::SaveDataTokens::const_string += yytext + 1; } "\n" { DAM::SaveDataTokens::const_string += "\n"; yylineno++; } "\"" { BEGIN(INITIAL); return DAM::SaveDataTokens::String; } . { return DAM::SaveDataTokens::Error; }