verilog_keyword.c 5.8 KB
Newer Older
饶先宏's avatar
饶先宏 已提交
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

#include "verilog_parser.tab.h"
#include "string.h"

#define DEFKEYWORD(id, n) {KW_##id, n}

static struct s_key_word_list {
	int keyid;
	const char *name;
} key_word_list[] = {
  DEFKEYWORD(ALWAYS              ,"always"),
  DEFKEYWORD(AND                 ,"and"),
  DEFKEYWORD(ASSIGN              ,"assign"),
  DEFKEYWORD(AUTOMATIC           ,"automatic"),
  DEFKEYWORD(BEGIN               ,"begin"),
  DEFKEYWORD(BUF                 ,"buf"),
  DEFKEYWORD(BUFIF0              ,"bufif0"),
  DEFKEYWORD(BUFIF1              ,"bufif1"),
  DEFKEYWORD(CASE                ,"case"),
  DEFKEYWORD(CASEX               ,"casex"),
  DEFKEYWORD(CASEZ               ,"casez"),
  DEFKEYWORD(CELL                ,"cell"),
  DEFKEYWORD(CMOS                ,"cmos"),
  DEFKEYWORD(CONFIG              ,"config"),
  DEFKEYWORD(DEASSIGN            ,"deassign"),
  DEFKEYWORD(DEFAULT             ,"default"),
  DEFKEYWORD(DEFPARAM            ,"defparam"),
  DEFKEYWORD(DESIGN              ,"design"),
  DEFKEYWORD(DISABLE             ,"disable"),
  DEFKEYWORD(EDGE                ,"edge"),
  DEFKEYWORD(ELSE                ,"else"),
  DEFKEYWORD(END                 ,"end"),
  DEFKEYWORD(ENDCASE             ,"endcase"),
  DEFKEYWORD(ENDCONFIG           ,"endconfig"),
  DEFKEYWORD(ENDFUNCTION         ,"endfunction"),
  DEFKEYWORD(ENDGENERATE         ,"endgenerate"),
  DEFKEYWORD(ENDMODULE           ,"endmodule"),
  DEFKEYWORD(ENDPRIMITIVE        ,"endprimitive"),
  DEFKEYWORD(ENDSPECIFY          ,"endspecify"),
  DEFKEYWORD(ENDTABLE            ,"endtable"),
  DEFKEYWORD(ENDTASK             ,"endtask"),
  DEFKEYWORD(EVENT               ,"event"),
  DEFKEYWORD(FOR                 ,"for"),
  DEFKEYWORD(FORCE               ,"force"),
  DEFKEYWORD(FOREVER             ,"forever"),
  DEFKEYWORD(FORK                ,"fork"),
  DEFKEYWORD(FUNCTION            ,"function"),
  DEFKEYWORD(GENERATE            ,"generate"),
  DEFKEYWORD(GENVAR              ,"genvar"),
  DEFKEYWORD(HIGHZ0              ,"highz0"),
  DEFKEYWORD(HIGHZ1              ,"highz1"),
  DEFKEYWORD(IF                  ,"if"),
  DEFKEYWORD(IFNONE              ,"ifnone"),
  DEFKEYWORD(INCDIR              ,"-incdir"),
  DEFKEYWORD(INCLUDE             ,"include"),
  DEFKEYWORD(INITIAL             ,"initial"),
  DEFKEYWORD(INOUT               ,"inout"),
  DEFKEYWORD(INPUT               ,"input"),
  DEFKEYWORD(INSTANCE            ,"instance"),
  DEFKEYWORD(INTEGER             ,"integer"),
  DEFKEYWORD(JOIN                ,"join"),
  DEFKEYWORD(LARGE               ,"large"),
  DEFKEYWORD(LIBLIST             ,"liblist"),
  DEFKEYWORD(LIBRARY             ,"library"),
  DEFKEYWORD(LOCALPARAM          ,"localparam"),
  DEFKEYWORD(MACROMODULE         ,"macromodule"),
  DEFKEYWORD(MEDIUM              ,"medium"),
  DEFKEYWORD(MODULE              ,"module"),
  DEFKEYWORD(NAND                ,"nand"),
  DEFKEYWORD(NEGEDGE             ,"negedge"),
  DEFKEYWORD(NMOS                ,"nmos"),
  DEFKEYWORD(NOR                 ,"nor"),
  DEFKEYWORD(NOSHOWCANCELLED     ,"noshowcancelled"),
  DEFKEYWORD(NOT                 ,"not"),
  DEFKEYWORD(NOTIF0              ,"notif0"),
  DEFKEYWORD(NOTIF1              ,"notif1"),
  DEFKEYWORD(OR                  ,"or"),
  DEFKEYWORD(OUTPUT              ,"output"),
  DEFKEYWORD(PARAMETER           ,"parameter"),
  DEFKEYWORD(PMOS                ,"pmos"),
  DEFKEYWORD(POSEDGE             ,"posedge"),
  DEFKEYWORD(PRIMITIVE           ,"primitive"),
  DEFKEYWORD(PULL0               ,"pull0"),
  DEFKEYWORD(PULL1               ,"pull1"),
  DEFKEYWORD(PULLDOWN            ,"pulldown"),
  DEFKEYWORD(PULLUP              ,"pullup"),
  DEFKEYWORD(PULSESTYLE_ONEVENT  ,"pulsestyle_onevent"),
  DEFKEYWORD(PULSESTYLE_ONDETECT ,"pulsestyle_ondetect"),
  DEFKEYWORD(RCMOS               ,"rcmos"),
  DEFKEYWORD(REAL                ,"real"),
  DEFKEYWORD(REALTIME            ,"realtime"),
  DEFKEYWORD(REG                 ,"reg"),
  DEFKEYWORD(RELEASE             ,"release"),
  DEFKEYWORD(REPEAT              ,"repeat"),
  DEFKEYWORD(RNMOS               ,"rnmos"),
  DEFKEYWORD(RPMOS               ,"rpmos"),
  DEFKEYWORD(RTRAN               ,"rtran"),
  DEFKEYWORD(RTRANIF0            ,"rtranif0"),
  DEFKEYWORD(RTRANIF1            ,"rtranif1"),
  DEFKEYWORD(SCALARED            ,"scalared"),
  DEFKEYWORD(SHOWCANCELLED       ,"showcancelled"),
  DEFKEYWORD(SIGNED              ,"signed"),
  DEFKEYWORD(SMALL               ,"small"),
  DEFKEYWORD(SPECIFY             ,"specify"),
  DEFKEYWORD(SPECPARAM           ,"specparam"),
  DEFKEYWORD(STRONG0             ,"strong0"),
  DEFKEYWORD(STRONG1             ,"strong1"),
  DEFKEYWORD(SUPPLY0             ,"supply0"),
  DEFKEYWORD(SUPPLY1             ,"supply1"),
  DEFKEYWORD(TABLE               ,"table"),
  DEFKEYWORD(TASK                ,"task"),
  DEFKEYWORD(TIME                ,"time"),
  DEFKEYWORD(TRAN                ,"tran"),
  DEFKEYWORD(TRANIF0             ,"tranif0"),
  DEFKEYWORD(TRANIF1             ,"tranif1"),
  DEFKEYWORD(TRI0                ,"tri0"),
  DEFKEYWORD(TRI1                ,"tri1"),
  DEFKEYWORD(TRI                 ,"tri"),
  DEFKEYWORD(TRIAND              ,"triand"),
  DEFKEYWORD(TRIOR               ,"trior"),
  DEFKEYWORD(TRIREG              ,"trireg"),
  DEFKEYWORD(UNSIGNED            ,"unsigned"),
  DEFKEYWORD(USE                 ,"use"),
  DEFKEYWORD(VECTORED            ,"vectored"),
  DEFKEYWORD(WAIT                ,"wait"),
  DEFKEYWORD(WAND                ,"wand"),
  DEFKEYWORD(WEAK0               ,"weak0"),
  DEFKEYWORD(WEAK1               ,"weak1"),
  DEFKEYWORD(WHILE               ,"while"),
  DEFKEYWORD(WIRE                ,"wire"),
  DEFKEYWORD(WOR                 ,"wor"),
  DEFKEYWORD(XNOR                ,"xnor"),
  DEFKEYWORD(XOR                 ,"xor"),
};

int verilog_find_reserved_word(const char * ident)
{
	int i;
	for (i = 0;i<sizeof(key_word_list)/sizeof(key_word_list[0]);i++) {
		if (strcmp(ident, key_word_list[i].name) == 0)
			return key_word_list[i].keyid;
	}
	return -1;
}