Changeset 2589 for proto/PDF


Ignore:
Timestamp:
Oct 29, 2012, 4:55:46 PM (6 years ago)
Author:
ksherdy
Message:

Added config and aligned output to demo.

Location:
proto/PDF
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • proto/PDF/Makefile

    r2570 r2589  
    44PABLO_SRC=pdf.py
    55PABLO_TEMPLATE=pablo_template_pdf.cpp
    6 PABLO_ADD_DEBUG=-a -b
     6PABLO_ADD_DEBUG=#-a -b
    77
    88all: pablo
  • proto/PDF/pdf.py

    r2586 r2589  
     1# pdf.py
     2#
     3# (c) 2012 Robert D. Cameron, Ken Herdy, Ben Hull
     4# All rights reserved.
     5# Licensed to International Characters, Inc. under Academic Free License 3.0
     6#
    17import sys
    28import pablo
     
    2127        Backslash = 0
    2228        Percent = 0
    23         Slash=0
    24         Regular=0
    25         Delimiter=0
    26         LAngle=0
    27         RAngle=0
    28         Hex=0
    29         WS=0
    30         Digit=0
    31         Sign=0
    32         Period=0
    33         EOL=0
    34         RBracket=0
    35         LBracket=0
     29        Slash = 0
     30        Regular = 0
     31        Delimiter = 0
     32        LAngle = 0
     33        RAngle = 0
     34        Hex = 0
     35        WS = 0
     36        Digit= 0
     37        Sign = 0
     38        Period = 0
     39        EOL = 0
     40        RBracket = 0
     41        LBracket = 0
     42
     43
    3644       
    3745class Escaped_Callouts ():
     
    4048
    4149class Comments_Callouts() :
    42         mask=0
     50        mask= 0
     51
    4352class LiteralStrings_Callouts() :
    44         starts=0
    45         ends=0
    46         mask=0
     53        starts = 0
     54        ends = 0
     55        mask = 0
    4756        error = 0
    4857
     
    7180        starts = 0
    7281        ends = 0
    73 
    7482
    7583def Classify_bytes(basis_bits, lex): 
     
    312320        arrays_Callouts.starts =  lex.LBracket &~ marker.mask
    313321        arrays_Callouts.ends = lex.RBracket &~ marker.mask
    314 
    315322       
    316323def Main(basis_bits, lex, parity, escaped_Callouts):
  • proto/PDF/pdf_demo.py

    r2565 r2589  
     1# pdf_demo.py -
     2#
     3# (c) 2012 Robert D. Cameron, Ken Herdy, Ben Hull
     4# All rights reserved.
     5# Licensed to International Characters, Inc. under Academic Free License 3.0
     6#
     7
    18import sys
    29import pablo
     10import optparse
     11import config_demo
    312
    413class Basis_bits():     
     
    1726        Backslash = 0
    1827        Percent = 0
    19         Slash=0
    20         Regular=0
    21         Delimiter=0
    22         LAngle=0
    23         RAngle=0
    24         Hex=0
    25         WS=0
    26         Digit=0
    27         Sign=0
    28         Period=0
    29         EOL=0
    30         RBracket=0
    31         LBracket=0
     28        Slash = 0
     29        Regular = 0
     30        Delimiter = 0
     31        LAngle = 0
     32        RAngle = 0
     33        Hex = 0
     34        WS = 0
     35        Digit = 0
     36        Sign = 0
     37        Period = 0
     38        EOL = 0
     39        RBracket = 0
     40        LBracket = 0
    3241       
    3342class Escaped_Callouts ():
     
    3645
    3746class Comments_Callouts() :
    38         mask=0
     47        mask = 0
     48
    3949class LiteralStrings_Callouts() :
    40         starts=0
    41         ends=0
    42         mask=0
     50        starts = 0
     51        ends = 0
     52        mask = 0
    4353        error = 0
    4454
    4555class Marker() :
    46         mask=0
     56        mask = 0
    4757
    4858class Names_Callouts() :
     
    6878        ends = 0
    6979
     80class WS_Or_Comment () :
     81        mask = 0       
    7082
    7183def Classify_bytes(basis_bits, lex): 
     
    159171        lex.Regular = ~lex.Delimiter&~lex.WS
    160172
    161 
    162 
    163173def simd_const_4(hexdigit, EOF_mask):
    164174        lgth = pablo.count_leading_zeroes(~EOF_mask)/4
    165175        return int(hexdigit*(lgth+1),16)&EOF_mask
    166176
    167 
    168177def Parse_Escaped(lex, escaped_Callouts):
    169178
    170         odd = simd_const_4('a',pablo.EOF_mask) 
     179        # Demo only. 'odd' / 'even' stream definitions are Hard coded into the pablo_template_pdf.cpp file.
     180        odd = simd_const_4('a',pablo.EOF_mask) 
    171181        even = simd_const_4('5',pablo.EOF_mask)
    172182
     
    243253        # Marker.mask = Comments_Callouts.mask | LiteralStrings_Callouts.mask
    244254
    245 
    246 
    247255def Parse_CommentsLiteralStrings(lex, escaped_Callouts, marker, comments_Callouts, literalStrings_Callouts) :
    248256        #not entirely sure this code is correct once compiled
     
    250258        comment_starts=0
    251259        comment_ends=0
    252         scan_characters = escaped_Callouts.UELParen |escaped_Callouts.UERParen | lex.Percent
     260        scan_characters = escaped_Callouts.UELParen | escaped_Callouts.UERParen | lex.Percent
    253261        cursor = pablo.ScanToFirst(scan_characters)
    254262        while pablo.inFile(cursor) :
     
    260268                        comment_ends |=comment_cursor
    261269                        cursor = pablo.ScanTo(pablo.Advance(comment_cursor), scan_characters)
    262    
    263 
    264                
     270               
    265271                if string_cursor :
    266272                        if (string_cursor & escaped_Callouts.UELParen) :
     
    284290                                        cursor = pablo.ScanTo(pablo.Advance(string_cursor), escaped_Callouts.UELParen | escaped_Callouts.UERParen)
    285291                                       
    286                
    287                
    288292        #if (depth>0):
    289293                #error
     
    291295        literalStrings_Callouts.mask = pablo.SpanUpTo(literalStrings_Callouts.starts,literalStrings_Callouts.ends)
    292296        marker.mask = comments_Callouts.mask | literalStrings_Callouts.mask
    293 
    294297
    295298def Parse_Names(lex, marker, names_Callouts) :
     
    326329        arrays_Callouts.ends = lex.RBracket &~ marker.mask
    327330
     331#def Parse_GetObj(lex, marker) :
     332#       cursor = ( (lex.WS &~ marker.mask) | () )
    328333       
    329334basis_bits = Basis_bits()
     
    343348
    344349if __name__ == "__main__":
    345         if len(sys.argv) > 1:
    346                 u8data = pablo.readfile(sys.argv[1])
    347                 lgth = len(u8data)
    348                 pablo.EOF_mask = pablo.transpose_streams(u8data, basis_bits)
    349                 Classify_bytes(basis_bits, lex)
    350                 Parse_Escaped(lex, escaped_Callouts)
    351                 Parse_CommentsLiteralStrings(lex, escaped_Callouts, marker, comments_Callouts, literalStrings_Callouts)
    352                 Parse_Names(lex, marker, names_Callouts)
    353                 Parse_HexStrings(lex, marker, hexStrings_Callouts)
    354                 Parse_Numeric(lex, marker, numeric_Callouts)
    355                 Parse_Keywords(lex, marker, keywords_Callouts)
    356                 Parse_Arrays(lex, marker, arrays_Callouts)
     350
     351        option_parser = config_demo.get_option_parser()
     352        options, args = option_parser.parse_args(sys.argv[1:])
     353
     354        if len(args) != 1:
     355                option_parser.print_usage()
     356                sys.exit()
     357
     358        input_file = args[0]
     359        data = pablo.readfile(input_file)
     360
     361        lgth = len(data)
     362
     363        pablo.EOF_mask = pablo.transpose_streams(data, basis_bits)
     364        Classify_bytes(basis_bits, lex)
     365        Parse_Escaped(lex, escaped_Callouts)
     366        Parse_CommentsLiteralStrings(lex, escaped_Callouts, marker, comments_Callouts, literalStrings_Callouts)
     367        Parse_Names(lex, marker, names_Callouts)
     368        Parse_HexStrings(lex, marker, hexStrings_Callouts)
     369        Parse_Numeric(lex, marker, numeric_Callouts)
     370        Parse_Keywords(lex, marker, keywords_Callouts)
     371        Parse_Arrays(lex, marker, arrays_Callouts)
    357372               
    358 #               print "data:" + " "*(16-5) + u8data
     373#               print "data:" + " "*(16-5) + data
    359374#               print "literal starts" + " "*(16-14) + pablo.bitstream2string(literalStrings_Callouts.starts, lgth+1)
    360375#               print "literal ends" + " "*(16-12) + pablo.bitstream2string(literalStrings_Callouts.ends, lgth+1)
     
    371386#               print "errors" + " "*(16-6) + pablo.bitstream2string(literalStrings_Callouts.error|hexStrings_Callouts.error | numeric_Callouts.error, lgth+1)
    372387
    373 
     388        if (options.debug ):
     389                pablo.print_aligned_streams([('Input Data', data),
     390                        ('String Starts', pablo.bitstream2string(literalStrings_Callouts.starts, lgth+1)),
     391                        ('String Ends', pablo.bitstream2string(literalStrings_Callouts.ends, lgth+1)),
     392                        ('Names Starts', pablo.bitstream2string(names_Callouts.starts, lgth+1)),                             
     393                        ('Names Follows', pablo.bitstream2string(names_Callouts.follows, lgth+1)),
     394                        ('Hex Strings Starts', pablo.bitstream2string(hexStrings_Callouts.starts, lgth+1)),
     395                        ('Hex Strings Ends', pablo.bitstream2string(hexStrings_Callouts.ends, lgth+1)),                       
     396                        ('Numeric Starts', pablo.bitstream2string(numeric_Callouts.starts, lgth+1)),
     397                        ('Numeric Follows', pablo.bitstream2string(numeric_Callouts.follows, lgth+1)),
     398                        ('Keyword Starts', pablo.bitstream2string(keywords_Callouts.starts, lgth+1)),                         
     399                        ('Keyword Follows', pablo.bitstream2string(keywords_Callouts.follows, lgth+1)),
     400                        ('Arrays Starts', pablo.bitstream2string(arrays_Callouts.starts, lgth+1)),
     401                        ('Arrays Ends', pablo.bitstream2string(arrays_Callouts.ends, lgth+1)),                       
     402                        ('Errors', pablo.bitstream2string(literalStrings_Callouts.error | hexStrings_Callouts.error | numeric_Callouts.error, lgth+1))])
     403        else:
    374404                print pablo.bitstream2string(literalStrings_Callouts.starts, lgth+1)
    375405                print pablo.bitstream2string(literalStrings_Callouts.ends, lgth+1)
     
    385415                print pablo.bitstream2string(arrays_Callouts.ends, lgth+1)
    386416                print pablo.bitstream2string(literalStrings_Callouts.error|hexStrings_Callouts.error | numeric_Callouts.error, lgth+1)
    387                
    388         else:
    389                 print("Usage: python pdf_demo.py <file>")
    390        
    391 
     417       
     418       
     419
Note: See TracChangeset for help on using the changeset viewer.