gsc-tool/src/gsc/misc/token.cpp
2023-02-17 16:44:38 +01:00

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