11#-------------------------------------------------------------------------------
22# lexer.py
3- #
3+ #
44# Lexical analyzer
55#
66# Copyright (C) 2013, Shinya Takamaeda-Yamazaki
7+ #
8+ # edited by ryosuke fukatani
9+ #
710# License: Apache 2.0
811#-------------------------------------------------------------------------------
912
@@ -45,9 +48,9 @@ def token(self):
4548 'MODULE' , 'ENDMODULE' , 'BEGIN' , 'END' , 'GENERATE' , 'ENDGENERATE' , 'GENVAR' ,
4649 'FUNCTION' , 'ENDFUNCTION' , 'TASK' , 'ENDTASK' ,
4750 'INPUT' , 'INOUT' , 'OUTPUT' , 'TRI' , 'REG' , 'WIRE' , 'INTEGER' , 'REAL' , 'SIGNED' ,
48- 'PARAMETER' , 'LOCALPARAM' ,
51+ 'PARAMETER' , 'LOCALPARAM' ,
4952 'ASSIGN' , 'ALWAYS' , 'SENS_OR' , 'POSEDGE' , 'NEGEDGE' , 'INITIAL' ,
50- 'IF' , 'ELSE' , 'FOR' , 'WHILE' , 'CASE' , 'ENDCASE' , 'DEFAULT' ,
53+ 'IF' , 'ELSE' , 'FOR' , 'WHILE' , 'CASE' , 'CASEX' , ' ENDCASE' , 'DEFAULT' ,
5154 'WAIT' , 'FOREVER' , 'DISABLE' , 'FORK' , 'JOIN' ,
5255 )
5356
@@ -62,7 +65,7 @@ def token(self):
6265 'PLUS' ,'MINUS' ,'POWER' ,'TIMES' ,'DIVIDE' ,'MOD' ,
6366 'NOT' , 'OR' , 'NOR' , 'AND' , 'NAND' , 'XOR' , 'XNOR' ,
6467 'LOR' , 'LAND' , 'LNOT' ,
65- 'LSHIFTA' , 'RSHIFTA' , 'LSHIFT' , 'RSHIFT' ,
68+ 'LSHIFTA' , 'RSHIFTA' , 'LSHIFT' , 'RSHIFT' ,
6669 'LT' , 'GT' , 'LE' , 'GE' , 'EQ' , 'NE' , 'EQL' , 'NEL' ,
6770 'COND' , # ?
6871 'EQUALS' ,
@@ -78,7 +81,7 @@ def token(self):
7881 'INTNUMBER_OCT' , 'SIGNED_INTNUMBER_OCT' ,
7982 'INTNUMBER_BIN' , 'SIGNED_INTNUMBER_BIN' ,
8083 'LPAREN' ,'RPAREN' , 'LBRACKET' , 'RBRACKET' , 'LBRACE' , 'RBRACE' ,
81- 'DELAY' , 'DOLLER' ,
84+ 'DELAY' , 'DOLLER' ,
8285 )
8386
8487 skipped = (
@@ -188,7 +191,7 @@ def t_COMMENTOUT(self, t):
188191 octal_escape = r"""([0-7]{1,3})"""
189192 hex_escape = r"""(x[0-9a-fA-F]+)"""
190193 escape_sequence = r"""(\\(""" + simple_escape + '|' + octal_escape + '|' + hex_escape + '))'
191- string_char = r"""([^"\\\n]|""" + escape_sequence + ')'
194+ string_char = r"""([^"\\\n]|""" + escape_sequence + ')'
192195 string_literal = '"' + string_char + '*"'
193196
194197 identifier = r"""(([a-zA-Z_])([a-zA-Z_0-9$])*)|((\\\S)(\S)*)"""
@@ -201,38 +204,38 @@ def t_STRING_LITERAL(self, t):
201204 def t_FLOATNUMBER (self , t ):
202205 return t
203206
204- @TOKEN (bin_number )
205- def t_INTNUMBER_BIN (self , t ):
206- return t
207-
208207 @TOKEN (signed_bin_number )
209208 def t_SIGNED_INTNUMBER_BIN (self , t ):
210209 return t
211210
212- @TOKEN (octal_number )
213- def t_INTNUMBER_OCT (self , t ):
211+ @TOKEN (bin_number )
212+ def t_INTNUMBER_BIN (self , t ):
214213 return t
215214
216215 @TOKEN (signed_octal_number )
217216 def t_SIGNED_INTNUMBER_OCT (self , t ):
218217 return t
219218
220- @TOKEN (hex_number )
221- def t_INTNUMBER_HEX (self , t ):
222- return t
219+ @TOKEN (octal_number )
220+ def t_INTNUMBER_OCT (self , t ):
221+ return t
223222
224223 @TOKEN (signed_hex_number )
225224 def t_SIGNED_INTNUMBER_HEX (self , t ):
226225 return t
227226
228- @TOKEN (decimal_number )
229- def t_INTNUMBER_DEC (self , t ):
230- return t
227+ @TOKEN (hex_number )
228+ def t_INTNUMBER_HEX (self , t ):
229+ return t
231230
232231 @TOKEN (signed_decimal_number )
233232 def t_SIGNED_INTNUMBER_DEC (self , t ):
234233 return t
235234
235+ @TOKEN (decimal_number )
236+ def t_INTNUMBER_DEC (self , t ):
237+ return t
238+
236239 @TOKEN (identifier )
237240 def t_ID (self , t ):
238241 t .type = self .reserved .get (t .value , 'ID' )
@@ -258,7 +261,7 @@ def _find_tok_column(self, token):
258261 if self .lexer .lexdata [i ] == '\n ' : break
259262 i -= 1
260263 return (token .lexpos - i ) + 1
261-
264+
262265 def _make_tok_location (self , token ):
263266 return (token .lineno , self ._find_tok_column (token ))
264267
0 commit comments