Ignore:
Timestamp:
Dec 2, 2010, 7:04:17 PM (8 years ago)
Author:
ksherdy
Message:

Add fix to prototype and compilable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/JSON/json_compilable.py

    r766 r768  
    182182        #
    183183        StringMask = ParityMask & bitutil.Advance(ParityMask)
     184        StringSpans = StringMask | UnescapedDQuotes
    184185        #
    185186        ### End Generate String Mask ---
     
    187188        ### Start atom_starts   
    188189        #
    189         StringSpans = StringMask | UnescapedDQuotes
    190        
    191         AtomSpans = (Lex.True | Lex.False | Lex.Null | Lex.Number | StringSpans)
    192         AtomStarts = AtomSpans &~ bitutil.Advance(AtomSpans)
    193                
    194         StringStarts = AtomStarts & (Lex.DQuote)       
    195         NumberStarts = AtomStarts & (Lex.Minus|Lex.Digit0_9)
    196         TrueStarts = AtomStarts & (Lex.t)
    197         FalseStarts = AtomStarts & (Lex.f)
    198         NullStarts = AtomStarts & (Lex.n)       
     190       
     191       
     192        StringStarts = StringSpans &~ bitutil.Advance(StringSpans)     
     193
     194        UnmaskedAtomSpans = (Lex.True | Lex.False | Lex.Null | Lex.Number) &~ StringSpans
     195        UnmaskedAtomStarts = UnmaskedAtomSpans &~ bitutil.Advance(UnmaskedAtomSpans)
     196
     197        NumberStarts = UnmaskedAtomStarts & (Lex.Minus|Lex.Digit0_9)
     198        TrueStarts = UnmaskedAtomStarts & (Lex.t)
     199        FalseStarts = UnmaskedAtomStarts & (Lex.f)
     200        NullStarts = UnmaskedAtomStarts & (Lex.n)
     201       
    199202        #
    200203        ### End atom_starts
     
    234237        ### Start validate_number
    235238        #
    236         M0 = NumberStarts                                       # Initialize marker stream     
     239        M0 = NumberStarts                                       # Initialize marker stream     
    237240       
    238241        M1 = bitutil.ScanThru(M0, Lex.Minus & M0)               # ? Optional character class [-]
     
    257260       
    258261        M7a = M7 &~(Lex.Ee)                                     # Split
    259         M7b = M7 &(Lex.Ee)
     262        M7b = M7 & (Lex.Ee)
    260263        M8b = bitutil.Advance(M7b)
    261264        M9b = bitutil.ScanThru(M8b, Lex.PlusMinus & M8b)        # ? Optional character class [+-]               
     
    264267        M10b = bitutil.ScanThru(M9b,Lex.Digit0_9)
    265268
    266         M11 = M7a | M10b                                       
    267        
    268         NumberErrors = E1 | E5b | E9b   
     269        M11 = E1 | E5b | E9b | M7a | M10b                       # Record final marker positions,
     270                                                                # At Advance(M11) this positions is either (1) a known error position or (2) an undetermined position to be checked
     271       
     272        NumberErrors = E1 | E5b | E9b
     273       
     274        NumberSpans = M11 - M0
    269275        #
    270276        ### End validate_number
     
    272278        ### Start validate_true
    273279        #
    274         Scope1 = bitutil.Advance(TrueStarts)
    275         Scope2 = bitutil.Advance(Scope1)
    276         Scope3 = bitutil.Advance(Scope2)
    277        
    278         TrueErrors = Scope1 &~ Lex.r
    279         TrueErrors |= Scope2 &~ Lex.u
    280         TrueErrors |= Scope3 &~ Lex.e
    281        
    282         Follows = bitutil.Advance(Scope3)
    283         TrueSpans = Follows - TrueStarts
     280        TrueScope1 = bitutil.Advance(TrueStarts)
     281        TrueScope2 = bitutil.Advance(TrueScope1)
     282        TrueScope3 = bitutil.Advance(TrueScope2)
     283       
     284        TrueErrors = TrueScope1 &~ Lex.r
     285        TrueErrors |= TrueScope2 &~ Lex.u
     286        TrueErrors |= TrueScope3 &~ Lex.e
     287       
     288        TrueFollows = bitutil.Advance(TrueScope3)
     289        TrueSpans = TrueFollows - TrueStarts
    284290        #
    285291        ### End validate_true
     
    287293        ### Start validate_false
    288294        #
    289         Scope1 = bitutil.Advance(FalseStarts)
    290         Scope2 = bitutil.Advance(Scope1)
    291         Scope3 = bitutil.Advance(Scope2)
    292         Scope4 = bitutil.Advance(Scope3)
    293        
    294         FalseErrors = Scope1 &~ Lex.a
    295         FalseErrors |= Scope2 &~ Lex.l
    296         FalseErrors |= Scope3 &~ Lex.s
    297         FalseErrors |= Scope4 &~ Lex.e
    298 
    299         Follows = bitutil.Advance(Scope4)
    300         FalseSpans = Follows - FalseStarts
     295        FalseScope1 = bitutil.Advance(FalseStarts)
     296        FalseScope2 = bitutil.Advance(FalseScope1)
     297        FalseScope3 = bitutil.Advance(FalseScope2)
     298        FalseScope4 = bitutil.Advance(FalseScope3)
     299       
     300        FalseErrors = FalseScope1 &~ Lex.a
     301        FalseErrors |= FalseScope2 &~ Lex.l
     302        FalseErrors |= FalseScope3 &~ Lex.s
     303        FalseErrors |= FalseScope4 &~ Lex.e
     304
     305        FalseFollows = bitutil.Advance(FalseScope4)
     306        FalseSpans = FalseFollows - FalseStarts
    301307        #
    302308        ### End validate_false
     
    304310        ### Start validate_null
    305311        #
    306         Scope1 = bitutil.Advance(NullStarts)
    307         Scope2 = bitutil.Advance(Scope1)
    308         Scope3 = bitutil.Advance(Scope2)
    309        
    310         NullErrors |= Scope1 &~ Lex.u
    311         NullErrors |= Scope2 &~ Lex.l
    312         NullErrors |= Scope3 &~ Lex.l
    313        
    314         Follows = bitutil.Advance(Scope3)
    315         NullSpans = Follows - NullStarts
     312        NullScope1 = bitutil.Advance(NullStarts)
     313        NullScope2 = bitutil.Advance(NullScope1)
     314        NullScope3 = bitutil.Advance(NullScope2)
     315       
     316        NullErrors |= NullScope1 &~ Lex.u
     317        NullErrors |= NullScope2 &~ Lex.l
     318        NullErrors |= NullScope3 &~ Lex.l
     319       
     320        NullFollows = bitutil.Advance(Scope3)
     321        NullSpans = NullFollows - NullStarts
    316322        #
    317323        ### End validate_null
    318324
    319325        # AtomSpans & AtomsStarts serve as the basic interface to ANTLR
    320         AtomsSpans = StringSpans | NumberSpans | TrueSpans | FalseSpans | NullSpans
     326        AtomStarts = StringStarts | NumberStarts | TrueStarts | FalseStarts | NullStarts
     327        AtomSpans = StringSpans | NumberSpans | TrueSpans | FalseSpans | NullSpans
    321328
    322329        # Consolidate errors
Note: See TracChangeset for help on using the changeset viewer.