home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2824 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.6 KB  |  150 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. ENDMARKER = 0
  5. NAME = 1
  6. NUMBER = 2
  7. STRING = 3
  8. NEWLINE = 4
  9. INDENT = 5
  10. DEDENT = 6
  11. LPAR = 7
  12. RPAR = 8
  13. LSQB = 9
  14. RSQB = 10
  15. COLON = 11
  16. COMMA = 12
  17. SEMI = 13
  18. PLUS = 14
  19. MINUS = 15
  20. STAR = 16
  21. SLASH = 17
  22. VBAR = 18
  23. AMPER = 19
  24. LESS = 20
  25. GREATER = 21
  26. EQUAL = 22
  27. DOT = 23
  28. PERCENT = 24
  29. BACKQUOTE = 25
  30. LBRACE = 26
  31. RBRACE = 27
  32. EQEQUAL = 28
  33. NOTEQUAL = 29
  34. LESSEQUAL = 30
  35. GREATEREQUAL = 31
  36. TILDE = 32
  37. CIRCUMFLEX = 33
  38. LEFTSHIFT = 34
  39. RIGHTSHIFT = 35
  40. DOUBLESTAR = 36
  41. PLUSEQUAL = 37
  42. MINEQUAL = 38
  43. STAREQUAL = 39
  44. SLASHEQUAL = 40
  45. PERCENTEQUAL = 41
  46. AMPEREQUAL = 42
  47. VBAREQUAL = 43
  48. CIRCUMFLEXEQUAL = 44
  49. LEFTSHIFTEQUAL = 45
  50. RIGHTSHIFTEQUAL = 46
  51. DOUBLESTAREQUAL = 47
  52. DOUBLESLASH = 48
  53. DOUBLESLASHEQUAL = 49
  54. AT = 50
  55. OP = 51
  56. ERRORTOKEN = 52
  57. N_TOKENS = 53
  58. NT_OFFSET = 256
  59. tok_name = { }
  60. for _name, _value in globals().items():
  61.     if type(_value) is type(0):
  62.         tok_name[_value] = _name
  63.         continue
  64.  
  65. del _name
  66. del _value
  67.  
  68. def ISTERMINAL(x):
  69.     return x < NT_OFFSET
  70.  
  71.  
  72. def ISNONTERMINAL(x):
  73.     return x >= NT_OFFSET
  74.  
  75.  
  76. def ISEOF(x):
  77.     return x == ENDMARKER
  78.  
  79.  
  80. def main():
  81.     import re
  82.     import sys
  83.     args = sys.argv[1:]
  84.     if not args or args[0]:
  85.         pass
  86.     inFileName = 'Include/token.h'
  87.     outFileName = 'Lib/token.py'
  88.     if len(args) > 1:
  89.         outFileName = args[1]
  90.     
  91.     
  92.     try:
  93.         fp = open(inFileName)
  94.     except IOError:
  95.         err = None
  96.         sys.stdout.write('I/O error: %s\n' % str(err))
  97.         sys.exit(1)
  98.  
  99.     lines = fp.read().split('\n')
  100.     fp.close()
  101.     prog = re.compile('#define[ \t][ \t]*([A-Z0-9][A-Z0-9_]*)[ \t][ \t]*([0-9][0-9]*)', re.IGNORECASE)
  102.     tokens = { }
  103.     for line in lines:
  104.         match = prog.match(line)
  105.         if match:
  106.             (name, val) = match.group(1, 2)
  107.             val = int(val)
  108.             tokens[val] = name
  109.             continue
  110.     
  111.     keys = tokens.keys()
  112.     keys.sort()
  113.     
  114.     try:
  115.         fp = open(outFileName)
  116.     except IOError:
  117.         err = None
  118.         sys.stderr.write('I/O error: %s\n' % str(err))
  119.         sys.exit(2)
  120.  
  121.     format = fp.read().split('\n')
  122.     fp.close()
  123.     
  124.     try:
  125.         start = format.index('#--start constants--') + 1
  126.         end = format.index('#--end constants--')
  127.     except ValueError:
  128.         sys.stderr.write('target does not contain format markers')
  129.         sys.exit(3)
  130.  
  131.     lines = []
  132.     for val in keys:
  133.         lines.append('%s = %d' % (tokens[val], val))
  134.     
  135.     format[start:end] = lines
  136.     
  137.     try:
  138.         fp = open(outFileName, 'w')
  139.     except IOError:
  140.         err = None
  141.         sys.stderr.write('I/O error: %s\n' % str(err))
  142.         sys.exit(4)
  143.  
  144.     fp.write('\n'.join(format))
  145.     fp.close()
  146.  
  147. if __name__ == '__main__':
  148.     main()
  149.  
  150.