xref: /nrf52832-nimble/rt-thread/components/finsh/finsh_token.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2010-03-22     Bernard      first version
9*10465441SEvalZero  */
10*10465441SEvalZero #ifndef __FINSH_TOKEN_H__
11*10465441SEvalZero #define __FINSH_TOKEN_H__
12*10465441SEvalZero 
13*10465441SEvalZero #include <finsh.h>
14*10465441SEvalZero 
15*10465441SEvalZero enum finsh_token_type
16*10465441SEvalZero {
17*10465441SEvalZero     finsh_token_type_left_paren = 1,    /* (        */
18*10465441SEvalZero     finsh_token_type_right_paren ,      /* )        */
19*10465441SEvalZero     finsh_token_type_comma ,            /* ,        */
20*10465441SEvalZero     finsh_token_type_semicolon ,        /* ;        */
21*10465441SEvalZero     finsh_token_type_mul ,              /* *        */
22*10465441SEvalZero     finsh_token_type_add ,              /* +        */
23*10465441SEvalZero     finsh_token_type_inc ,              /* ++       */
24*10465441SEvalZero     finsh_token_type_sub ,              /* -        */
25*10465441SEvalZero     finsh_token_type_dec ,              /* --       */
26*10465441SEvalZero     finsh_token_type_div ,              /* /        */
27*10465441SEvalZero     finsh_token_type_mod ,              /* %        */
28*10465441SEvalZero     finsh_token_type_assign ,           /* =        */
29*10465441SEvalZero     finsh_token_type_and,               /* &        */
30*10465441SEvalZero     finsh_token_type_or,                /* |        */
31*10465441SEvalZero     finsh_token_type_xor,               /* ^        */
32*10465441SEvalZero     finsh_token_type_bitwise,           /* ~        */
33*10465441SEvalZero     finsh_token_type_shl,               /* <<       */
34*10465441SEvalZero     finsh_token_type_shr,               /* >>       */
35*10465441SEvalZero     finsh_token_type_comments,          /* //       */
36*10465441SEvalZero     /*-- data type --*/
37*10465441SEvalZero     finsh_token_type_void,              /* void     */
38*10465441SEvalZero     finsh_token_type_char,              /* char     */
39*10465441SEvalZero     finsh_token_type_short,             /* short    */
40*10465441SEvalZero     finsh_token_type_int,               /* int      */
41*10465441SEvalZero     finsh_token_type_long,              /* long     */
42*10465441SEvalZero     finsh_token_type_unsigned,          /* unsigned */
43*10465441SEvalZero     /* data value type */
44*10465441SEvalZero     finsh_token_type_value_char,        /* v:char   */
45*10465441SEvalZero     finsh_token_type_value_int,         /* v:int    */
46*10465441SEvalZero     finsh_token_type_value_long,        /* v:long   */
47*10465441SEvalZero     finsh_token_type_value_string,      /* v:string */
48*10465441SEvalZero     finsh_token_type_value_null,        /* NULL     */
49*10465441SEvalZero     /*-- others --*/
50*10465441SEvalZero     finsh_token_type_identifier,        /* ID       */
51*10465441SEvalZero     finsh_token_type_bad,               /* bad token */
52*10465441SEvalZero     finsh_token_type_eof
53*10465441SEvalZero };
54*10465441SEvalZero 
55*10465441SEvalZero #define finsh_token_position(self) (self)->position
56*10465441SEvalZero #define finsh_token_replay(self) (self)->replay = 1
57*10465441SEvalZero 
58*10465441SEvalZero void finsh_token_init(struct finsh_token* self, uint8_t* script);
59*10465441SEvalZero 
60*10465441SEvalZero enum finsh_token_type finsh_token_token(struct finsh_token* self);
61*10465441SEvalZero void finsh_token_get_token(struct finsh_token* self, uint8_t* token);
62*10465441SEvalZero 
63*10465441SEvalZero #endif
64