1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
/*
* Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
* (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
*
* This file is part of lsp-runtime-lib
* Created on: 16 сент. 2019 г.
*
* lsp-runtime-lib is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* lsp-runtime-lib 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with lsp-runtime-lib. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef LSP_PLUG_IN_EXPR_TOKEN_H_
#define LSP_PLUG_IN_EXPR_TOKEN_H_
#include <lsp-plug.in/runtime/version.h>
#include <lsp-plug.in/runtime/LSPString.h>
namespace lsp
{
namespace expr
{
enum token_t
{
TT_IDENTIFIER, // Identifier
TT_BAREWORD, // Bareword
TT_IVALUE, // Integer value
TT_FVALUE, // Floating-point value
TT_STRING, // String literal
TT_COLOR, // Color code: one of @HHSSLL, #RRGGBB
TT_LBRACE, // (
TT_RBRACE, // )
TT_LQBRACE, // [
TT_RQBRACE, // ]
TT_LCBRACE, // {
TT_RCBRACE, // }
TT_SHARP, // #
TT_AT, // @
// Constants
TT_TRUE, // true
TT_FALSE, // false
TT_NULL, // null
TT_UNDEF, // undef
// Logical operations
TT_AND, // &, &&, and
TT_OR, // |, ||, or
TT_NOT, // !, not
TT_XOR, // ^, ^^, xor
// Binary operations
TT_BAND, // band
TT_BOR, // bor
TT_BNOT, // ~, bnot
TT_BXOR, // bxor
// Floating-point operations
TT_ADD, // +
TT_SUB, // -
TT_ADDSYM, // add
TT_SUBSYM, // sub
TT_MUL, // *, mul
TT_POW, // **, pow
TT_DIV, // /, div
TT_FMOD, // fmod
// Integer operations
TT_IADD, // iadd
TT_ISUB, // isub
TT_IMUL, // imul
TT_IDIV, // idiv
TT_IMOD, // %, mod, imod
// Floating-point comparison
TT_LESS, // <, lt, nge
TT_GREATER, // >, gt, nle
TT_LESS_EQ, // <=, le, ngt
TT_GREATER_EQ, // >=, ge, nlt
TT_NOT_EQ, // !=, <>, ne
TT_EQ, // =, ==, eq
TT_CMP, // <=>, cmp
// Integer comparison
TT_ILESS, // ilt, inge
TT_IGREATER, // igt, inle
TT_ILESS_EQ, // ile, ingt
TT_IGREATER_EQ, // ige, ingt
TT_INOT_EQ, // ine
TT_IEQ, // ie, ieq
TT_ICMP, // icmp
// String operations
TT_SCAT, // String concat
TT_SREP, // String repeat
TT_SLEN, // String length
TT_SREV, // String reverse
TT_SUPR, // String upper
TT_SLWR, // String lower
// Casts
TT_INT, // Cast to integer
TT_FLOAT, // Cast to float
TT_STR, // Cast to string
TT_BOOL, // Cast to bool
// Misc operations
TT_EX, // ex
// Special measuring units
TT_DB, // db
// Different operators
TT_QUESTION, // ?
TT_COLON, // :
TT_SEMICOLON, // ;
TT_COMMA, // ,
// Control tokens
TT_UNKNOWN, // Unknown token
TT_EOF, // End of file reached
TT_ERROR // error
};
enum token_flags_t
{
TF_NONE = 0,
TF_GET = 1 << 0, // Get new token, don't return current
TF_XSIGN = 1 << 1, // Interpret sign as operator, not sign of numeric value
TF_BAREWORD = 1 << 2, // Treat barewords as identifiers
TF_XKEYWORDS = 1 << 3, // Exclude keywords, treat all keywords as TT_BAREWORD
TF_COLOR = 1 << 4 // Lookup for colors (@HSL and #RGB)
};
}
}
#endif /* LSP_PLUG_IN_EXPR_TOKEN_H_ */
|