Files
Client/CryptoSource/ScriptEngine-MCF File/string.l
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

187 lines
4.4 KiB
Plaintext
Raw Blame History

%{
/* ------------------------------------------------------------------
Initial code (copied verbatim to the output file)
------------------------------------------------------------------ */
#include <io.h> // isatty
#define _LEX_CPP_ // make sure our variables get created
#include "lex.h"
#include "lexsymb.h"
#include "SymbolTable.h"
#include <string>
#ifdef MSVC
#define isatty _isatty // for some reason isatty is called _isatty in VC..
#endif
extern "C" int yywrap (); // the yywrap function is declared by the caller
void EatCComment();
void EatCppComment();
extern CSymbolTable * g_pSymbolTable;
%}
/* ------------------------------------------------------------------
Some macros (standard regular expressions)
------------------------------------------------------------------ */
LETTER [a-zA-Z_]
DIGIT [0-9]
HEXLETTER [a-fA-F0-9]
HEXVALUE 0[xX]{HEXLETTER}+
INTEGERVALUE {DIGIT}+
FLOATVALUE {DIGIT}+[.]{DIGIT}+
BOOLVALUE true|false
STRINGVALUE \"[^\"]*\"
ID {LETTER}({LETTER}|{DIGIT})*
WSPACE [ \t]+
INCLUDE "#include"{WSPACE}*{STRINGVALUE}
DEFINEoptPARAM {WSPACE}*","{WSPACE}*{ID}
DEFINEopt {WSPACE}*"("{WSPACE}*{ID}{DEFINEoptPARAM}*{WSPACE}*")"
DEFINEtokenstring {WSPACE}+{ID}
DEFINE "#define"{WSPACE}+{ID}{DEFINEopt}?{DEFINEtokenstring}?
/* ------------------------------------------------------------------
The lexer rules
------------------------------------------------------------------ */
%%
{INCLUDE} { return TOKEN_INCLUDE; }
{DEFINE} { return TOKEN_DEFINE; }
{HEXVALUE} { strcpy( yylval.szConstant, yytext );
return TOKEN_INTEGERVALUE; }
{INTEGERVALUE} { strcpy( yylval.szConstant, yytext );
return TOKEN_INTEGERVALUE; }
{FLOATVALUE} { strcpy( yylval.szConstant, yytext );
return TOKEN_FLOATVALUE; }
{BOOLVALUE} { strcpy( yylval.szConstant, yytext );
return TOKEN_BOOLVALUE; }
{STRINGVALUE} { strcpy( yylval.szConstant, yytext + 1 );
yylval.szConstant[ strlen( yylval.szConstant ) - 1 ] = '\0';
return TOKEN_STRINGVALUE; }
"void" { return TOKEN_VOID; }
"int" { return TOKEN_INT; }
"float" { return TOKEN_FLOAT; }
"bool" { return TOKEN_BOOL; }
"string" { return TOKEN_STRING; }
"for" { return TOKEN_FOR; }
"while" { return TOKEN_WHILE; }
"break" { return TOKEN_BREAK; }
"if" { return TOKEN_IF; }
"else" { return TOKEN_ELSE; }
"switch" { return TOKEN_SWITCH; }
"case" { return TOKEN_CASE; }
"default" { return TOKEN_DEFAULT; }
"continue" { return TOKEN_CONTINUE; }
"return" { return TOKEN_RETURN; }
{ID} { strcpy( yylval.szIdentifier, yytext );
return TOKEN_ID; }
"+" { return TOKEN_ADDITION; }
"-" { return TOKEN_SUBTRACTION; }
"*" { return TOKEN_MULTIPLICATION; }
"/" { return TOKEN_DIVISION; }
"%" { return TOKEN_REMINDER; }
"=" { return TOKEN_ASSIGNMENT; }
"+=" { return TOKEN_COMPOUNDADDITION; }
"-=" { return TOKEN_COMPOUNDSUBTRACTION; }
"*=" { return TOKEN_COMPOUNDMULTIPLICATION; }
"/=" { return TOKEN_COMPOUNDDIVISION; }
"%=" { return TOKEN_COMPOUNDREMINDER; }
"!" { return TOKEN_NOT; }
"<" { return TOKEN_LESSTHAN; }
"<=" { return TOKEN_LESSTHANOREQUAL; }
">" { return TOKEN_MORETHAN; }
">=" { return TOKEN_MORETHANOREQUAL; }
"==" { return TOKEN_EQUALITY; }
"!=" { return TOKEN_NOTEQUAL; }
"++" { return TOKEN_INCREMENT; }
"--" { return TOKEN_DECREMENT; }
";" { return TOKEN_ENDSTATEMENT; }
"(" { return TOKEN_LEFTPARENTHESIS; }
")" { return TOKEN_RIGHTPARENTHESIS; }
"[" { return TOKEN_LEFTBRACE; }
"]" { return TOKEN_RIGHTBRACE; }
"{" { return TOKEN_LEFTBRACKET; }
"}" { return TOKEN_RIGHTBRACKET; }
"," { return TOKEN_COMMA; }
":" { return TOKEN_COLON; }
"||" { return TOKEN_OR; }
"&&" { return TOKEN_AND; }
"//" { EatCppComment(); }
"/*" { EatCComment(); }
\n { yylloc.first_line = ++lineno; }
{WSPACE} {} //<2F><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>
. { return TOKEN_ERROR; } //<2F><> <20><><EFBFBD><EFBFBD> <20>͵<EFBFBD><CDB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
%%
/* ------------------------------------------------------------------
Additional code (again copied verbatim to the output file)
------------------------------------------------------------------ */
void EatCppComment()
{
char c;
while( (c = yyinput()) != '\n' && c != 0 );
yylloc.first_line = ++lineno;
}
void EatCComment()
{
char c, c0 = ' ';
while( true )
{
c = yyinput();
if( c0 == '*' && c == '/' )
break;
if( c == '\n' )
yylloc.first_line = ++lineno;
c0 = c;
}
}