File: token.h

package info (click to toggle)
lsp-plugins 1.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 91,856 kB
  • sloc: cpp: 427,831; xml: 57,779; makefile: 9,961; php: 1,005; sh: 18
file content (147 lines) | stat: -rw-r--r-- 4,981 bytes parent folder | download
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_ */