124 lines
4.6 KiB
C++
124 lines
4.6 KiB
C++
// Copyright 2023 xensik. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a GNU GPLv3 license
|
|
// that can be found in the LICENSE file.
|
|
|
|
#include "stdinc.hpp"
|
|
#include "location.hpp"
|
|
#include "space.hpp"
|
|
#include "token.hpp"
|
|
#include "utils/string.hpp"
|
|
|
|
namespace xsk::gsc
|
|
{
|
|
|
|
auto token::to_string() -> std::string
|
|
{
|
|
switch (type)
|
|
{
|
|
case token::PLUS: return "+";
|
|
case token::MINUS: return "-";
|
|
case token::STAR: return "*";
|
|
case token::DIV: return "/";
|
|
case token::MOD: return "%";
|
|
case token::BITOR: return "|";
|
|
case token::BITAND: return "&";
|
|
case token::BITEXOR: return "^";
|
|
case token::SHL: return "<<";
|
|
case token::SHR: return ">>";
|
|
case token::ASSIGN: return "=";
|
|
case token::PLUSEQ: return "+=";
|
|
case token::MINUSEQ: return "-=";
|
|
case token::STAREQ: return "*=";
|
|
case token::DIVEQ: return "/=";
|
|
case token::MODEQ: return "%=";
|
|
case token::BITOREQ: return "|=";
|
|
case token::BITANDEQ: return "&=";
|
|
case token::BITEXOREQ: return "^=";
|
|
case token::SHLEQ: return "<<=";
|
|
case token::SHREQ: return ">>=";
|
|
case token::INC: return "++";
|
|
case token::DEC: return "--";
|
|
case token::GT: return ">";
|
|
case token::LT: return "<";
|
|
case token::GE: return ">=";
|
|
case token::LE: return "<=";
|
|
case token::NE: return "!=";
|
|
case token::EQ: return "==";
|
|
case token::OR: return "||";
|
|
case token::AND: return "&&";
|
|
case token::TILDE: return "~";
|
|
case token::BANG: return "!";
|
|
case token::QMARK: return "?";
|
|
case token::COLON: return ":";
|
|
case token::SHARP: return "#";
|
|
case token::COMMA: return ",";
|
|
case token::DOT: return ".";
|
|
case token::DOUBLEDOT: return "..";
|
|
case token::ELLIPSIS: return "...";
|
|
case token::SEMICOLON: return ";";
|
|
case token::DOUBLECOLON: return "::";
|
|
case token::LBRACKET: return "{";
|
|
case token::RBRACKET: return "}";
|
|
case token::LBRACE: return "[";
|
|
case token::RBRACE: return "]";
|
|
case token::LPAREN: return "(";
|
|
case token::RPAREN: return ")";
|
|
case token::NAME: return data;
|
|
case token::PATH: return data;
|
|
case token::STRING: return data;
|
|
case token::ISTRING: return data;
|
|
case token::INT: return data;
|
|
case token::FLT: return data;
|
|
case token::DEVBEGIN: return "/#";
|
|
case token::DEVEND: return "#/";
|
|
case token::INLINE: return "#inline";
|
|
case token::INCLUDE: return "#include";
|
|
case token::USINGTREE: return "#using_animtree";
|
|
case token::ANIMTREE: return "#animtree";
|
|
case token::ENDON: return "endon";
|
|
case token::NOTIFY: return "notify";
|
|
case token::WAIT: return "wait";
|
|
case token::WAITTILL: return "waittill";
|
|
case token::WAITTILLMATCH: return "waittillmatch";
|
|
case token::WAITTILLFRAMEEND: return "waittillframeend";
|
|
case token::WAITFRAME: return "waitframe";
|
|
case token::IF: return "if";
|
|
case token::ELSE: return "else";
|
|
case token::DO: return "do";
|
|
case token::WHILE: return "while";
|
|
case token::FOR: return "for";
|
|
case token::FOREACH: return "foreach";
|
|
case token::IN: return "in";
|
|
case token::SWITCH: return "switch";
|
|
case token::CASE: return "case";
|
|
case token::DEFAULT: return "default";
|
|
case token::BREAK: return "break";
|
|
case token::CONTINUE: return "continue";
|
|
case token::RETURN: return "return";
|
|
case token::BREAKPOINT: return "breakpoint";
|
|
case token::PROFBEGIN: return "prof_begin";
|
|
case token::PROFEND: return "prof_end";
|
|
case token::ASSERT: return "assert";
|
|
case token::ASSERTEX: return "assertex";
|
|
case token::ASSERTMSG: return "assertmsg";
|
|
case token::THREAD: return "thread";
|
|
case token::CHILDTHREAD: return "endon";
|
|
case token::THISTHREAD: return "thisthread";
|
|
case token::CALL: return "call";
|
|
case token::TRUE: return "true";
|
|
case token::FALSE: return "false";
|
|
case token::UNDEFINED: return "undefined";
|
|
case token::SIZE: return "size";
|
|
case token::GAME: return "game";
|
|
case token::SELF: return "self";
|
|
case token::ANIM: return "anim";
|
|
case token::LEVEL: return "level";
|
|
case token::ISDEFINED: return "isdefined";
|
|
case token::ISTRUE: return "istrue";
|
|
default: return "*INTERNAL*";
|
|
}
|
|
}
|
|
|
|
} // namespace xsk::gsc
|