#NEWLINE# def visit_Int( self , node ) : #NEWLINE# #INDENT# value_list = [ ] #NEWLINE# value = node . value #NEWLINE# if ( isinstance ( node . value , str ) and ( node . value . find ( '-' ) >= 0 ) ) : #NEWLINE# #INDENT# pos = ( node . value . find ( '-' ) + 1 ) #NEWLINE# value = node . value [ pos : ] #NEWLINE# value_list . append ( '-' ) #NEWLINE# #UNINDENT# if ( isinstance ( node . value , int ) and ( node . value < 0 ) ) : #NEWLINE# #INDENT# value = abs ( node . value ) #NEWLINE# value_list . append ( '-' ) #NEWLINE# #UNINDENT# if node . width : #NEWLINE# #INDENT# value_list . append ( str ( node . width ) ) #NEWLINE# #UNINDENT# if ( node . base is None ) : #NEWLINE# #INDENT# if node . signed : #NEWLINE# #INDENT# value_list . append ( "'sd" ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if node . width : #NEWLINE# #INDENT# value_list . append ( "'d" ) #NEWLINE# #UNINDENT# #UNINDENT# if isinstance ( value , str ) : #NEWLINE# #INDENT# value_list . append ( value ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( str ( value ) ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# if ( node . base == 2 ) : #NEWLINE# #INDENT# if node . signed : #NEWLINE# #INDENT# value_list . append ( "'sb" ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( "'b" ) #NEWLINE# #UNINDENT# if isinstance ( value , str ) : #NEWLINE# #INDENT# value_list . append ( value ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( bin ( value ) . replace ( '0b' , '' ) ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# if ( node . base == 8 ) : #NEWLINE# #INDENT# if node . signed : #NEWLINE# #INDENT# value_list . append ( "'so" ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( "'o" ) #NEWLINE# #UNINDENT# if isinstance ( value , str ) : #NEWLINE# #INDENT# value_list . append ( value ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( oct ( value ) . replace ( '0o' , '' ) ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# if ( node . base == 10 ) : #NEWLINE# #INDENT# if node . signed : #NEWLINE# #INDENT# value_list . append ( "'sd" ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( "'d" ) #NEWLINE# #UNINDENT# if isinstance ( value , str ) : #NEWLINE# #INDENT# value_list . append ( value ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( str ( value ) ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# if ( node . base == 16 ) : #NEWLINE# #INDENT# if node . signed : #NEWLINE# #INDENT# value_list . append ( "'sh" ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( "'h" ) #NEWLINE# #UNINDENT# if isinstance ( value , str ) : #NEWLINE# #INDENT# value_list . append ( value ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# value_list . append ( hex ( value ) . replace ( '0x' , '' ) ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# raise ValueError ( 'Int.base must be 2, 8, 10, or 16' ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# #UNINDENT# #UNINDENT# return vast . IntConst ( '' . join ( value_list ) )