PandA-2024.02
token_interface.hpp
Go to the documentation of this file.
1 /*
2  *
3  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
4  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
5  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
6  * _/ _/ _/ _/ _/ _/ _/ _/ _/
7  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
8  *
9  * ***********************************************
10  * PandA Project
11  * URL: http://panda.dei.polimi.it
12  * Politecnico di Milano - DEIB
13  * System Architectures Group
14  * ***********************************************
15  * Copyright (C) 2004-2024 Politecnico di Milano
16  *
17  * This file is part of the PandA framework.
18  *
19  * The PandA framework is free software; you can redistribute it and/or modify
20  * it under the terms of the GNU General Public License as published by
21  * the Free Software Foundation; either version 3 of the License, or
22  * (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program. If not, see <http://www.gnu.org/licenses/>.
31  *
32  */
46 #ifndef TOKEN_INTEFACE_HPP
47 #define TOKEN_INTEFACE_HPP
48 
49 #include "custom_map.hpp"
50 #include <cstring>
51 #include <string>
52 
54 {
55  FIRST_TOKEN = -1,
61  TOK_BLOCK,
123  TOK_FOR_EXPR,
158  TOK_LUT_EXPR,
160  TOK_MIN_EXPR,
161  TOK_MAX_EXPR,
162  TOK_ABS_EXPR,
177  TOK_LT_EXPR,
178  TOK_LE_EXPR,
179  TOK_GT_EXPR,
180  TOK_GE_EXPR,
181  TOK_EQ_EXPR,
182  TOK_NE_EXPR,
191  TOK_IN_EXPR,
197  TOK_NOP_EXPR,
227  TOK_SSA_NAME,
229  TOK_DEF_STMT,
230  TOK_USE_STMT,
243  TOK_DO_STMT,
245  TOK_FOR_STMT,
246  TOK_IF_STMT,
250  TOK_NEW_EXPR,
270  TOK_OVERLOAD,
277  TOK_HANDLER,
278  TOK_BASELINK,
279  TOK_NAME,
280  TOK_TYPE,
281  TOK_SRCP,
282  TOK_ARG,
283  TOK_BODY,
284  TOK_STRG,
285  TOK_LNGT,
286  TOK_SIZE,
287  TOK_ALGN,
288  TOK_RETN,
289  TOK_PRMS,
290  TOK_SCPE,
291  TOK_BB_INDEX,
292  TOK_USED,
293  TOK_VALUE,
294  TOK_ARGT,
295  TOK_PREC,
296  TOK_MIN,
297  TOK_MAX,
299  TOK_VALU,
300  TOK_CHAN,
301  TOK_STMT,
302  TOK_OP,
303  TOK_OP0,
304  TOK_OP1,
305  TOK_OP2,
306  TOK_OP3,
307  TOK_OP4,
308  TOK_OP5,
309  TOK_OP6,
310  TOK_OP7,
311  TOK_OP8,
312  TOK_VARS,
313  TOK_UNQL,
314  TOK_ELTS,
315  TOK_DOMN,
316  TOK_BLOC,
317  TOK_DCLS,
318  TOK_MNGL,
319  TOK_PTD,
320  TOK_REFD,
321  TOK_QUAL,
322  TOK_VALR,
323  TOK_VALX,
324  TOK_FLDS,
325  TOK_VFLD,
326  TOK_BPOS,
327  TOK_FN,
328  TOK_GOTO,
329  TOK_REAL,
330  TOK_IMAG,
331  TOK_BASES,
332  TOK_BINFO,
333  TOK_PUB,
334  TOK_PROT,
335  TOK_PRIV,
336  TOK_BINF,
337  TOK_UID,
338  TOK_OLD_UID,
339  TOK_INIT,
340  TOK_FINI,
341  TOK_PURP,
342  TOK_PRED,
343  TOK_SUCC,
344  TOK_PHI,
345  TOK_RES,
346  TOK_DEF,
347  TOK_EDGE,
348  TOK_VAR,
349  TOK_VERS,
351  TOK_CNST,
352  TOK_CLAS,
353  TOK_DECL,
354  TOK_CLNP,
355  TOK_LAB,
356  TOK_TRY,
357  TOK_EX,
358  TOK_OUT,
359  TOK_IN,
360  TOK_STR,
361  TOK_CLOB,
362  TOK_CLOBBER,
363  TOK_REF,
364  TOK_FNCS,
365  TOK_CSTS,
366  TOK_RSLT,
367  TOK_INST,
368  TOK_SPCS,
369  TOK_CLS,
370  TOK_BFLD,
371  TOK_CTOR,
372  TOK_NEXT,
373  TOK_COND,
374  TOK_EXPR,
375  TOK_THEN,
376  TOK_ELSE,
377  TOK_CRNT,
378  TOK_HDLR,
380  TOK_SYSTEM,
383  TOK_LIBBAMBU,
384  TOK_EXTERN,
387  TOK_C,
388  TOK_LSHIFT,
392  TOK_BUILTIN,
393  TOK_HWCALL,
394  TOK_OPERATOR,
395  TOK_OVERFLOW,
396  TOK_VIRT,
397  TOK_UNSIGNED,
398  TOK_STRUCT,
399  TOK_UNION,
400  TOK_CONSTANT,
401  TOK_READONLY,
402  TOK_REGISTER,
403  TOK_STATIC,
415  TOK_DEFAULT,
416  TOK_VOLATILE,
417  TOK_VARARGS,
418  TOK_INF,
419  TOK_NAN,
420  TOK_ENTRY,
421  TOK_EXIT,
422  TOK_NEW,
423  TOK_DELETE,
424  TOK_ASSIGN,
425  TOK_MEMBER,
426  TOK_PUBLIC,
427  TOK_PRIVATE,
429  TOK_NORETURN,
430  TOK_NOINLINE,
432  TOK_UNUSED,
433  TOK_CONST,
435  TOK_MODE,
436  TOK_SECTION,
437  TOK_ALIGNED,
438  TOK_PACKED,
439  TOK_WEAK,
440  TOK_ALIAS,
442  TOK_MALLOC,
444  TOK_NO_STACK,
445  TOK_PURE,
450  TOK_NONNULL,
451  TOK_NOTHROW,
454  TOK_FORMAT,
456  TOK_NULL,
458  TOK_VIRTUAL,
459  TOK_MUTABLE,
461  TOK_SPEC,
462  TOK_LINE,
463  TOK_FIXD,
464  TOK_VECNEW,
466  TOK_POS,
467  TOK_NEG,
468  TOK_ADDR,
469  TOK_DEREF,
470  TOK_NOT,
471  TOK_LNOT,
472  TOK_PREINC,
473  TOK_PREDEC,
475  TOK_PLUS,
477  TOK_MINUS,
479  TOK_MULT,
481  TOK_DIV,
483  TOK_MOD,
485  TOK_AND,
486  TOK_ORASSIGN,
487  TOK_OR,
489  TOK_XOR,
492  TOK_RSHIFT,
493  TOK_EQ,
494  TOK_NE,
495  TOK_LT,
496  TOK_GT,
497  TOK_LE,
498  TOK_GE,
499  TOK_LAND,
500  TOK_LOR,
501  TOK_COMPOUND,
502  TOK_MEMREF,
503  TOK_SUBS,
504  TOK_POSTINC,
505  TOK_POSTDEC,
506  TOK_CALL,
507  TOK_THUNK,
510  TOK_PTRMEM,
511  TOK_QUAL_R,
512  TOK_QUAL_V,
513  TOK_QUAL_VR,
514  TOK_QUAL_C,
515  TOK_QUAL_CR,
516  TOK_QUAL_CV,
517  TOK_QUAL_CVR,
518  TOK_USE_TMPL,
522  TOK_INDEX,
523  TOK_LEVEL,
526  TOK_BITFIELD,
529  TOK_MEMUSE,
530  TOK_MEMDEF,
531  TOK_VUSE,
532  TOK_VDEF,
533  TOK_VOVER,
534  TOK_PTR_INFO,
540  TOK_MEM_REF,
546  TOK_SYMBOL,
547  TOK_BASE,
548  TOK_IDX,
549  TOK_IDX2,
550  TOK_STEP,
551  TOK_OFFSET,
552  TOK_ORIG,
553  TOK_TAG,
554  TOK_SMT_ANN,
559  TOK_HPL,
560  TOK_LOOP_ID,
562  TOK_PRAGMA,
587  TOK_OPEN,
588  TOK_IS_BLOCK,
590  TOK_EMPTY,
592  TOK_CLB,
593  TOK_CLB_VARS,
594  TOK_USE,
595  TOK_USE_VARS,
597  TOK_SLOT,
607 
609  TOK_RTL,
610  TOK_ABS_R,
611  TOK_AND_R,
612  TOK_ASHIFT_R,
614  TOK_BSWAP_R,
615  TOK_CALL_R,
617  TOK_CLZ_R,
620  TOK_CONCAT_R,
623  TOK_CTZ_R,
624  TOK_DIV_R,
625  TOK_EQ_R,
626  TOK_FFS_R,
627  TOK_FIX_R,
628  TOK_FLOAT_R,
632  TOK_GE_R,
633  TOK_GEU_R,
634  TOK_GT_R,
635  TOK_GTU_R,
636  TOK_HIGH_R,
638  TOK_INSN_R,
639  TOK_IOR_R,
642  TOK_LE_R,
643  TOK_LEU_R,
645  TOK_LT_R,
646  TOK_LTGT_R,
647  TOK_LTU_R,
648  TOK_LO_SUM_R,
651  TOK_MINUS_R,
652  TOK_MOD_R,
653  TOK_MULT_R,
654  TOK_NE_R,
655  TOK_NEG_R,
656  TOK_NOT_R,
659  TOK_PARITY_R,
660  TOK_PC_R,
661  TOK_PLUS_R,
663  TOK_REG_R,
664  TOK_ROTATE_R,
667  TOK_SET_R,
669  TOK_SMAX_R,
670  TOK_SMIN_R,
671  TOK_SQRT_R,
674  TOK_UDIV_R,
675  TOK_UMAX_R,
676  TOK_UMIN_R,
677  TOK_UMOD_R,
678  TOK_UNEQ_R,
679  TOK_UNGE_R,
680  TOK_UNGT_R,
681  TOK_UNLE_R,
682  TOK_UNLT_R,
688  TOK_XOR_R,
690 
692  TOK_NONE_R,
693  TOK_QC_R,
694  TOK_HC_R,
695  TOK_SC_R,
696  TOK_DC_R,
697  TOK_TC_R,
698  TOK_CQI_R,
699  TOK_CHI_R,
700  TOK_CSI_R,
701  TOK_CDI_R,
702  TOK_CTI_R,
703  TOK_QF_R,
704  TOK_HF_R,
705  TOK_SF_R,
706  TOK_DF_R,
707  TOK_TF_R,
708  TOK_QI_R,
709  TOK_HI_R,
710  TOK_SI_R,
711  TOK_DO_R,
712  TOK_TI_R,
713  TOK_V2SI_R,
714  TOK_V4HI_R,
715  TOK_V8QI_R,
716  TOK_CC_R,
717  TOK_CCFP_R,
718  TOK_CCFPE_R,
719  TOK_CCZ_R,
720 
721  LAST_TOKEN
722 };
723 
725 {
726  static const char* tokenNames[];
727  static const int bisontokens[];
728 
730  std::map<int, TreeVocabularyTokenTypes_TokenEnum> from_bisontoken_map;
731  int check_tokens(const char* tok) const;
732  TreeVocabularyTokenTypes_TokenEnum bison2token(int bison) const;
734 
735  private:
736  struct ltstr
737  {
738  bool operator()(const char* s1, const char* s2) const
739  {
740  return strcmp(s1, s2) < 0;
741  }
742  };
743  std::map<const char*, int, ltstr> token_map;
744 };
745 
750 const std::string TI_getTokenName(const TreeVocabularyTokenTypes_TokenEnum i);
751 
755 #define WRITE_TOKEN(os, token) os << " " << TI_getTokenName(TreeVocabularyTokenTypes_TokenEnum::token)
756 
760 #define WRITE_TOKEN2(os, token) os << " " << TI_getTokenName(token)
761 
765 #define TOK(token) (TreeVocabularyTokenTypes_TokenEnum::token)
766 
770 #define STOK(token) TI_getTokenName(TreeVocabularyTokenTypes_TokenEnum::token)
771 
775 #define STOK2(token) TI_getTokenName(token)
776 
777 #endif
const std::string TI_getTokenName(const TreeVocabularyTokenTypes_TokenEnum i)
Return the name associated with the token.
std::map< int, TreeVocabularyTokenTypes_TokenEnum > from_bisontoken_map
Map between bison token and token_interface token.
std::map< const char *, int, ltstr > token_map
redefinition of map to manage ordered/unordered structures
bool operator()(const char *s1, const char *s2) const
TreeVocabularyTokenTypes_TokenEnum

Generated on Mon Feb 12 2024 13:02:55 for PandA-2024.02 by doxygen 1.8.13