Changeset 2993


Ignore:
Timestamp:
Apr 1, 2013, 10:41:16 AM (4 years ago)
Author:
cameron
Message:

Generate a Pablo skeleton

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/charsetcompiler/charset_compiler.py

    r2974 r2993  
    493493                             help='generate definitions for EBCDIC input',
    494494                             )
     495    option_parser.add_option('-p', '--pablo',
     496                             dest='Pablo_skeleton',
     497                             action='store_true',
     498                             default=False,
     499                             help='generate pablo skeleton',
     500                             )
    495501    options, args = option_parser.parse_args(sys.argv[1:])
    496502
     
    503509        else: defs = DefinitionSet[args[1]]
    504510        if options.use_EBCDIC:
    505             defs = EBCDIC.ascii2ebcdic_chardeflist(defs)                       
    506         print chardeflist2py(defs)
     511            defs = EBCDIC.ascii2ebcdic_chardeflist(defs)       
     512        stmts = chardeflist2py(defs)
     513        if options.Pablo_skeleton:
     514          b = string.split(options.basis_pattern, ".")
     515          if len(b) == 2:
     516            basis_struct = string.upper(b[0][0]) + b[0][1:]
     517            basis_struct_var = b[0]
     518            bit_pattern = b[1]
     519          else:
     520            basis_struct = 'Bits'
     521            basis_stuct_var = 'bits'
     522            bit_pattern = bit[0]
     523          struct_defs = "class %s():\n" % basis_struct
     524          for i in range(8): struct_defs += "\t" + bit_pattern % i + " = 0\n"
     525          struct_sets = {}
     526          for d in defs:
     527            n = string.split(d.name, ".")
     528            if len(n) == 2:
     529              if not n[0] in struct_sets.keys(): struct_sets[n[0]] = []
     530              struct_sets[n[0]].append(n[1])
     531          for k in struct_sets.keys():
     532            struct_defs += "\nclass %s():\n" % (string.upper(k[0])+k[1:])
     533            for f in struct_sets[k]: struct_defs += "\t" + f + " = 0\n"
     534          print struct_defs
     535          params = ", ".join([basis_struct_var] + struct_sets.keys())
     536          print "\ndef Do_defs(%s):\n" % params
     537          print stmts
     538          print "\ndef main():\n\tDo_defs(%s)\n" % params
     539        else: print stmts 
     540
    507541    else:
    508542        option_parser.print_usage()
Note: See TracChangeset for help on using the changeset viewer.