Changeset 908 for proto/Compiler


Ignore:
Timestamp:
Feb 13, 2011, 8:01:19 AM (8 years ago)
Author:
cameron
Message:

Simplify parameter list/argument list construction.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/Compiler/pablo.py

    r906 r908  
    409409# TODO Implement 'pretty print' indentation.   Low priority.
    410410# TODO Migrate Emiter() class to Emitter module.  Medium priority.
     411
     412def lower1(name):
     413    return name[0].lower() + name[1:]
     414def upper1(name):
     415    return name[0].upper() + name[1:]
     416
    411417class Emitter():
    412418
     
    469475               
    470476        def do_block_parameters(self, parameters):
    471                
    472                 do_block_parameters = []
    473                
    474                 for name in parameters:
    475                         type_name = name[0].upper() + name[1:]
    476                         argument_name = name[0].lower() + name[1:]
    477                         do_block_parameters.append(type_name)
    478                         do_block_parameters.append(" & ")
    479                         do_block_parameters.append(argument_name)
    480                         do_block_parameters.append(", ")
    481                 if len(do_block_parameters) > 0:               
    482                         do_block_parameters.pop()
    483                                        
    484                 return "".join(do_block_parameters)             
     477                return ", ".join([upper1(p) + " & " + lower1(p) for p in parameters])
    485478               
    486479        def do_segment_parameters(self, parameters):
    487                
    488                 do_segment_parameters = []
    489                
    490                 for name in parameters:
    491                         type_name = name[0].upper() + name[1:]
    492                         argument_name = name[0].lower() + name[1:]
    493                         do_segment_parameters.append(type_name)
    494                         do_segment_parameters.append(" ")
    495                         do_segment_parameters.append(argument_name)
    496                         do_segment_parameters.append("[]")
    497                         do_segment_parameters.append(", ")
    498                 if len(do_segment_parameters) > 0:             
    499                         do_segment_parameters.pop()
    500                                        
    501                 return "".join(do_segment_parameters)           
     480                return ", ".join([upper1(p) + " " + lower1(p) + "[]" for p in parameters])
    502481
    503482        def do_segment_args(self, parameters):
    504                
    505                 do_segment_args = []
    506                
    507                 for name in parameters:
    508                         argument_name = name[0].lower() + name[1:]
    509                         do_segment_args.append(argument_name)
    510                         do_segment_args.append("[i]")
    511                         do_segment_args.append(", ")
    512                 if len(do_segment_args) > 0:           
    513                         do_segment_args.pop()
    514                                        
    515                 return "".join(do_segment_args)                 
    516                
     483                return ", ".join([lower1(p) + "[i]" for p in parameters])
     484
    517485def main(infilename, outfile = sys.stdout):
    518486  t = ast.parse(file(infilename).read())
Note: See TracChangeset for help on using the changeset viewer.