130 lines
5.8 KiB
C++
130 lines
5.8 KiB
C++
/**
|
|
* @author Edouard DUPIN
|
|
* @copyright 2017, Edouard DUPIN, all right reserved
|
|
* @license MPL-2 (see license file)
|
|
*/
|
|
|
|
#include <estyle/lexer/tocken.hpp>
|
|
|
|
etk::String estyle::lexer::toString(estyle::lexer::tocken _token) {
|
|
if (_token>32 && _token<128) {
|
|
char buf[4] = "' '";
|
|
buf[1] = (char)_token;
|
|
return buf;
|
|
}
|
|
switch (_token) {
|
|
case estyle::lexer::END_OF_FILE: return "EOF";
|
|
case estyle::lexer::ID: return "ID";
|
|
case estyle::lexer::INTEGER: return "INTEGER value";
|
|
case estyle::lexer::FLOAT: return "FLOAT value";
|
|
case estyle::lexer::STRING: return "STRING \"\" value";
|
|
case estyle::lexer::SIMPLE_QUOTE_STRING: return "STRING '' value";
|
|
case estyle::lexer::BOOLEAN: return "BOOLEAN value";
|
|
case estyle::lexer::EQUAL: return "=";
|
|
case estyle::lexer::EQUAL_EQUAL: return "==";
|
|
case estyle::lexer::NOT: return "!";
|
|
case estyle::lexer::NOT_EQUAL: return "!=";
|
|
case estyle::lexer::LESS: return "<";
|
|
case estyle::lexer::LESS_EQUAL: return "<=";
|
|
case estyle::lexer::GREATER: return ">";
|
|
case estyle::lexer::GREATER_EQUAL: return ">=";
|
|
case estyle::lexer::PLUS: return "+";
|
|
case estyle::lexer::MINUS: return "-";
|
|
case estyle::lexer::PLUS_EQUAL: return "+=";
|
|
case estyle::lexer::MINUS_EQUAL: return "-=";
|
|
case estyle::lexer::PLUS_PLUS: return "++";
|
|
case estyle::lexer::MINUS_MINUS: return "--";
|
|
case estyle::lexer::AND: return "&";
|
|
case estyle::lexer::AND_EQUAL: return "&=";
|
|
case estyle::lexer::AND_AND: return "&&";
|
|
case estyle::lexer::OR: return "|";
|
|
case estyle::lexer::OR_EQUAL: return "|=";
|
|
case estyle::lexer::OR_OR: return "||";
|
|
case estyle::lexer::XOR: return "^";
|
|
case estyle::lexer::XOR_EQUAL: return "^=";
|
|
case estyle::lexer::COLON: return ":";
|
|
case estyle::lexer::SEMICOLON: return ";";
|
|
case estyle::lexer::PARENTHESE_IN: return "(";
|
|
case estyle::lexer::PARENTHESE_OUT: return ")";
|
|
case estyle::lexer::BRACKET_IN: return "[";
|
|
case estyle::lexer::BRACKET_OUT: return "]";
|
|
case estyle::lexer::BRACE_IN: return "{";
|
|
case estyle::lexer::BRACE_OUT: return "}";
|
|
case estyle::lexer::DEVIDE: return "/";
|
|
case estyle::lexer::MULTIPLY: return "*";
|
|
case estyle::lexer::DEVIDE_EQUAL: return "/=";
|
|
case estyle::lexer::MULTIPLY_EQUAL: return "*=";
|
|
//case estyle::lexer::QUESTION: return "?";
|
|
case estyle::lexer::DOT: return ".";
|
|
case estyle::lexer::COMA: return ",";
|
|
case estyle::lexer::POUCENT: return "%";
|
|
// reserved words
|
|
case estyle::lexer::RESERVED_COMMENT_1_LINE: return "COMMENT 1";
|
|
case estyle::lexer::RESERVED_COMMENT_N_LINE: return "COMMENT N";
|
|
case estyle::lexer::RESERVED_DOCUMENTATION_1_LINE: return "DOCUMENTATION 1";
|
|
case estyle::lexer::RESERVED_DOCUMENTATION_N_LINE: return "DOCUMENTATION N";
|
|
case estyle::lexer::RESERVED_IF: return "if";
|
|
case estyle::lexer::RESERVED_ELSE: return "else";
|
|
case estyle::lexer::RESERVED_DO: return "do";
|
|
case estyle::lexer::RESERVED_WHILE: return "while";
|
|
case estyle::lexer::RESERVED_FOR: return "for";
|
|
case estyle::lexer::RESERVED_SWITCH: return "switch";
|
|
case estyle::lexer::RESERVED_CASE: return "case";
|
|
case estyle::lexer::RESERVED_BREAK: return "break";
|
|
case estyle::lexer::RESERVED_CONTINUE: return "continue";
|
|
case estyle::lexer::RESERVED_RETURN: return "return";
|
|
case estyle::lexer::RESERVED_NEW: return "new";
|
|
case estyle::lexer::RESERVED_DELETE: return "delete";
|
|
case estyle::lexer::RESERVED_PRIVATE: return "private";
|
|
case estyle::lexer::RESERVED_PUBLIC: return "public";
|
|
case estyle::lexer::RESERVED_PROTECTED: return "protected";
|
|
case estyle::lexer::RESERVED_NEW_LINE: return "\\n";
|
|
case estyle::lexer::RESERVED_CONST: return "const";
|
|
case estyle::lexer::RESERVED_STATIC: return "static";
|
|
case estyle::lexer::RESERVED_MUTABLE: return "mutable";
|
|
case estyle::lexer::RESERVED_VIRTUAL: return "virtual";
|
|
case estyle::lexer::RESERVED_INLINE: return "inline";
|
|
case estyle::lexer::RESERVED_FINAL: return "final";
|
|
case estyle::lexer::RESERVED_DEFAULT: return "default";
|
|
case estyle::lexer::RESERVED_INT: return "int";
|
|
case estyle::lexer::RESERVED_LONG: return "long";
|
|
case estyle::lexer::RESERVED_SHORT: return "short";
|
|
case estyle::lexer::RESERVED_SIGNED: return "signed";
|
|
case estyle::lexer::RESERVED_UNSIGNED: return "unsigned";
|
|
case estyle::lexer::RESERVED_NAMESPACE: return "namespace";
|
|
case estyle::lexer::RESERVED_CLASS: return "class";
|
|
case estyle::lexer::RESERVED_STRUCT: return "struct";
|
|
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_008: return "int8_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_008_UNSIGNED: return "uint8_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_016: return "int16_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_016_UNSIGNED: return "uint16_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_032: return "int32_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_032_UNSIGNED: return "uint32_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_064: return "int64_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_064_UNSIGNED: return "uint64_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_128: return "int128_t";
|
|
case estyle::lexer::BASIC_TYPE_INTEGER_128_UNSIGNED: return "uint128_t";
|
|
case estyle::lexer::BASIC_TYPE_FLOAT_32: return "float";
|
|
case estyle::lexer::BASIC_TYPE_FLOAT_64: return "double";
|
|
case estyle::lexer::BASIC_TYPE_FLOAT_96: return "triple";
|
|
case estyle::lexer::BASIC_TYPE_BOOLEAN: return "bool";
|
|
case estyle::lexer::BASIC_TYPE_STD_STRING: return "std::string";
|
|
case estyle::lexer::BASIC_TYPE_STD_NULLPTR: return "std::nullptr";
|
|
case estyle::lexer::BASIC_TYPE_VOID: return "void";
|
|
}
|
|
return etk::String("?[") + etk::toString(int32_t(_token)) + "]";
|
|
}
|
|
|
|
etk::Stream& estyle::operator<<(etk::Stream& _os, const enum estyle::lexer::tocken& _obj) {
|
|
_os << estyle::lexer::toString(_obj);
|
|
return _os;
|
|
}
|
|
|
|
namespace etk {
|
|
template<>
|
|
etk::String toString(const enum estyle::lexer::tocken& _obj) {
|
|
return estyle::lexer::toString(_obj);
|
|
}
|
|
}
|