Ignore:
Timestamp:
Dec 2, 2010, 1:44:34 PM (8 years ago)
Author:
ksherdy
Message:

Initial working JSON compilable and executable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/JSON/json_prototype.py

    r755 r766  
    203203
    204204
    205 def validate_true(Starts, Lex):
     205def validate_true(TrueStarts, Lex):
    206206        r"""
    207207        RFC 4627 - JavaScript Object Notation (JSON) 
     
    209209        true  = %x74.72.75.65      ; true
    210210       
    211         """
    212         Errors = 0
    213        
    214         Scope1 = bitutil.Advance(Starts)
     211        """     
     212        Scope1 = bitutil.Advance(TrueStarts)
    215213        Scope2 = bitutil.Advance(Scope1)
    216214        Scope3 = bitutil.Advance(Scope2)
    217215       
    218         Errors |= Scope1 &~ Lex.r
    219         Errors |= Scope2 &~ Lex.u
    220         Errors |= Scope3 &~ Lex.e
     216        TrueErrors = Scope1 &~ Lex.r
     217        TrueErrors |= Scope2 &~ Lex.u
     218        TrueErrors |= Scope3 &~ Lex.e
    221219       
    222220        Follows = bitutil.Advance(Scope3)
    223         Spans = Follows - Starts
    224 
    225         return (Errors, Spans)
    226 
    227 def validate_false(Starts, Lex):
     221        TrueSpans = Follows - TrueStarts
     222
     223        return (TrueErrors, TrueSpans)
     224
     225def validate_false(FalseStarts, Lex):
    228226        r"""
    229227        RFC 4627 - JavaScript Object Notation (JSON) 
     
    231229        false = %x66.61.6c.73.65   ; false
    232230       
    233         """
    234         Errors = 0
    235        
    236         Scope1 = bitutil.Advance(Starts)
     231        """     
     232        Scope1 = bitutil.Advance(FalseStarts)
    237233        Scope2 = bitutil.Advance(Scope1)
    238234        Scope3 = bitutil.Advance(Scope2)
    239235        Scope4 = bitutil.Advance(Scope3)
    240236       
    241         Errors |= Scope1 &~ Lex.a
    242         Errors |= Scope2 &~ Lex.l
    243         Errors |= Scope3 &~ Lex.s
    244         Errors |= Scope4 &~ Lex.e
     237        FalseErrors = Scope1 &~ Lex.a
     238        FalseErrors |= Scope2 &~ Lex.l
     239        FalseErrors |= Scope3 &~ Lex.s
     240        FalseErrors |= Scope4 &~ Lex.e
    245241
    246242        Follows = bitutil.Advance(Scope4)
    247         Spans = Follows - Starts
    248        
    249         return (Errors, Spans)
    250 
    251 def validate_null(Starts, Lex):
     243        FalseSpans = Follows - FalseStarts
     244       
     245        return (FalseErrors, FalseSpans)
     246
     247def validate_null(NullStarts, Lex):
    252248        r"""
    253249        RFC 4627 - JavaScript Object Notation (JSON) 
     
    256252       
    257253        """
    258         Errors = 0
    259 
    260         Scope1 = bitutil.Advance(Starts)
     254        Scope1 = bitutil.Advance(NullStarts)
    261255        Scope2 = bitutil.Advance(Scope1)
    262256        Scope3 = bitutil.Advance(Scope2)
    263257       
    264         Errors |= Scope1 &~ Lex.u
    265         Errors |= Scope2 &~ Lex.l
    266         Errors |= Scope3 &~ Lex.l
     258        NullErrors = Scope1 &~ Lex.u
     259        NullErrors |= Scope2 &~ Lex.l
     260        NullErrors |= Scope3 &~ Lex.l
    267261       
    268262        Follows = bitutil.Advance(Scope3)
    269         Spans = Follows - Starts
    270 
    271         return (Errors, Spans)
    272 
    273 def validate_number(Starts, Lex, EOF_mask):
     263        NullSpans = Follows - NullStarts
     264
     265        return (NullErrors, NullSpans)
     266
     267def validate_number(NumberStarts, Lex, EOF_mask):
    274268        r"""   
    275269        RFC 4627 - JavaScript Object Notation (JSON) 
     
    292286        global lgth
    293287       
    294         Errors = 0
    295         M0 = Starts                                             # Initialize marker stream     
     288        M0 = NumberStarts                                               # Initialize marker stream     
    296289       
    297290        M1 = bitutil.ScanThru(M0, Lex.Minus & M0)               # ? Optional character class [-]
     
    325318        M11 = M7a | M10b                                       
    326319       
    327         Errors = E1 | E5b | E9b
     320        NumberErrors = E1 | E5b | E9b
    328321       
    329322        NumberSpans = M11 - M0
     
    354347                              #('E10b', bitutil.bitstream2string(E10b, lgth)),
    355348                              ('M11', bitutil.bitstream2string(M11, lgth+1)),
    356                               ('Starts', bitutil.bitstream2string(Starts, lgth)),
     349                              ('NumberStarts', bitutil.bitstream2string(NumberStarts, lgth)),
    357350                              ('NumberSpans', bitutil.bitstream2string(NumberSpans, lgth)),
    358                               ('Errors', bitutil.bitstream2string(Errors, lgth+1))])           
    359        
    360         return (Errors, NumberSpans)
     351                              ('NumberErrors', bitutil.bitstream2string(NumberErrors, lgth+1))])               
     352       
     353        return (NumberErrors, NumberSpans)
    361354
    362355def demo_validate_number(u8data):
     
    372365        PlusMinus   : _1_11_1_____1___1___1____1_______1_______1______1_____1____________
    373366        NumberSpans : _11_11_11___11__1111_1111_1111___11111111__11111__1111__1__________
    374         Errors      : __1_1__1___________1___1____1_______________________________________
     367        NumberErrors: __1_1__1___________1___1____1_______________________________________
    375368        EOF_Mask    : 1111111111111111111111111111111111111111111111111111111111111111111_
    376369        <BLANKLINE>
     
    386379        PlusMinus   : _________________________________1_________1_____1______________1________________________1_______________1__________________
    387380        NumberSpans : _111_1111_11111_1111_111_11111_1111_1111_11111_11111_1111111111_111111111111_111111111111111_111111111111111_11111111111111_
    388         Errors      : _____________________________________________________________________________________________________________________________
     381        NumberErrors: _____________________________________________________________________________________________________________________________
    389382        EOF_Mask    : 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_
    390383        <BLANKLINE>
     
    400393        PlusMinus   : ___________________1__1___
    401394        NumberSpans : _1______11111_1_1__11_11__
    402         Errors      : ___________________________
     395        NumberErrors: ___________________________
    403396        EOF_Mask    : 11111111111111111111111111_
    404397        <BLANKLINE>
     
    419412        (StringStarts, NumberStarts, TrueStarts, FalseStarts, NullStarts) = atom_starts(Lex, StringSpans)       
    420413       
    421         (Errors, NumberSpans) = validate_number(NumberStarts, Lex, EOF_mask)
     414        (NumberErrors, NumberSpans) = validate_number(NumberStarts, Lex, EOF_mask)
    422415
    423416        bitutil.print_aligned_streams([('Input Data', u8data),
     
    430423                              ('PlusMinus', bitutil.bitstream2string(Lex.PlusMinus, lgth)),
    431424                              ('NumberSpans', bitutil.bitstream2string(NumberSpans, lgth)),
    432                               ('Errors', bitutil.bitstream2string(Errors, lgth+1)),
     425                              ('NumberErrors', bitutil.bitstream2string(NumberErrors, lgth+1)),
    433426                              ('EOF_Mask', bitutil.bitstream2string(EOF_mask, lgth+1))])
    434427
     
    595588        NullStarts, NullSpans, NullErrors) = validate_json_atoms(u8data)
    596589
     590        AtomSpans = (StringSpans|NumberSpans|TrueSpans|FalseSpans|NullSpans)
     591
    597592        bitutil.print_aligned_streams([('Input Data', u8data),
    598593                              ('StringStarts', bitutil.bitstream2string(StringStarts, lgth)),
     
    610605                              ('NullStarts', bitutil.bitstream2string(NullStarts, lgth)),
    611606                              ('NullSpans', bitutil.bitstream2string(NullSpans, lgth)),
    612                               ('NullErrors', bitutil.bitstream2string(NullErrors, lgth))])
     607                              ('NullErrors', bitutil.bitstream2string(NullErrors, lgth)),
     608                              ('AtomSpans', bitutil.bitstream2string(AtomSpans, lgth))])
    613609
    614610        return
     
    628624#       demo_atom_starts(u8data)
    629625#       demo_validate_number(u8data)
    630         demo_validate_string(u8data)
    631 #       demo_validate_json_atoms(u8data)
     626#       demo_validate_string(u8data)
     627        demo_validate_json_atoms(u8data)
Note: See TracChangeset for help on using the changeset viewer.