%top{ /* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * 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, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #define YY_NO_UNISTD_H #define FORBIDDEN_SYMBOL_EXCEPTION_FILE #define FORBIDDEN_SYMBOL_EXCEPTION_fprintf #define FORBIDDEN_SYMBOL_EXCEPTION_fwrite #define FORBIDDEN_SYMBOL_EXCEPTION_fread #define FORBIDDEN_SYMBOL_EXCEPTION_stdin #define FORBIDDEN_SYMBOL_EXCEPTION_stdout #define FORBIDDEN_SYMBOL_EXCEPTION_stderr #define FORBIDDEN_SYMBOL_EXCEPTION_exit #define FORBIDDEN_SYMBOL_EXCEPTION_getc #include "private/private.h" #include "private/grammar.h" #include "private/tokens.h" using namespace Private; using namespace Gen; using namespace Settings; } %option noyywrap %option noinput %option nounput %option never-interactive %option outfile="engines/private/lexer.cpp" %option prefix="PRIVATE_" %% \/\/.* /* ignoring the comment */ \<= return LTE; \>= return GTE; != return NEQ; == return EQ; debug return DEBUGTOK; define return DEFINETOK; setting return SETTINGTOK; EmitCodeOff return EMITCODEOFFTOK; EmitCodeOn return EMITCODEONTOK; ResetIDCounter return RESETIDTOK; if return IFTOK; else return ELSETOK; goto return GOTOTOK; RECT return RECT; FALSE return FALSETOK; TRUE return TRUETOK; NULL return NULLTOK; Random return RANDOMTOK; [A-Za-z_][A-Za-z_0-9]* PRIVATE_lval.s = g_private->maps.string(PRIVATE_text); return NAME; [\-]?[0-9]+ PRIVATE_lval.sym = g_private->maps.constant(NUM, atoi(PRIVATE_text), NULL); return NUM; \"[^\"\r\n]*\" PRIVATE_lval.sym = g_private->maps.constant(STRING, 0, PRIVATE_text); return STRING; [\r|\n]+ /* ignore return */; [ \t]+ /* ignore whitespace */; . return *yytext; %% namespace Private { int parse(const char *code) { g_setts->init(); YY_BUFFER_STATE bp; yy_delete_buffer(YY_CURRENT_BUFFER); bp = yy_scan_string(code); yy_switch_to_buffer(bp); PRIVATE_parse(); yy_delete_buffer(bp); yylex_destroy(); return 0; } } // End of namespace Private