#ifndef _LIBC_PORT_I18N_PLURAL_PARSER_H
#define _LIBC_PORT_I18N_PLURAL_PARSER_H
#ifdef __cplusplus
extern "C" {
#endif
#define PEEK_TOKEN 0
#define GET_TOKEN 1
#define NARY 0
#define UNARY 1
#define BINARY 2
#define TRINARY 3
#define T_NULL 0x00000000
#define T_INIT 0x00000001
#define T_EXP 0x00000002
#define T_NUM 0x00000003
#define T_VAR 0x00000004
#define T_CONDC 0x00000005
#define T_CONDQ 0x00000006
#define T_LOR 0x00000007
#define T_LAND 0x00000008
#define T_EQ 0x00000009
#define T_NEQ 0x0000000a
#define T_GT 0x0000000b
#define T_LT 0x0000000c
#define T_GE 0x0000000d
#define T_LE 0x0000000e
#define T_ADD 0x0000000f
#define T_SUB 0x00000010
#define T_MUL 0x00000011
#define T_DIV 0x00000012
#define T_MOD 0x00000013
#define T_LNOT 0x00000014
#define T_LPAR 0x00000015
#define T_RPAR 0x00000016
#define T_ERR 0x00000017
#define GETTYPE(op) ((op) & 0x000fffff)
#define GETPRIO(op) (((op) & 0x0ff00000) >> 20)
#define GETOPNUM(op) (((op) & 0xf0000000) >> 28)
#define MAX_STACK_SIZE 128
struct expr {
unsigned int op;
unsigned int num;
unsigned int flag;
struct expr *nodes[3];
};
struct stack {
int index;
struct expr **ptr;
};
#ifdef __cplusplus
}
#endif
#endif