Changeset 1264


Ignore:
Timestamp:
Aug 3, 2011, 11:47:22 AM (8 years ago)
Author:
cameron
Message:

Optimize Parse_CtCDPI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/parabix2/parabix2_pablo.py

    r1263 r1264  
    356356                CD_Cursor = CD_Ct_Cursor & lex.LBracket
    357357                Ct_Cursor = CD_Ct_Cursor & lex.Hyphen
    358                 ctCDPI_Callouts.PI_starts |= PI_Cursor
    359                 ctCDPI_Callouts.CD_starts |= CD_Cursor
    360                 ctCDPI_Callouts.Ct_starts |= Ct_Cursor
    361                 Ct_Cursor = bitutil.Advance(Ct_Cursor) 
    362                 Ct_errors |= Ct_Cursor & ~ lex.Hyphen
    363                 # Advance twice past <!--, so that we don't treat <!---
    364                 # as being a terminated comment.
    365                 Ct_Cursor = bitutil.Advance(bitutil.Advance(Ct_Cursor))
    366                 PI_Cursor = bitutil.Advance(PI_Cursor)
    367                 ctCDPI_Callouts.PI_name_starts |= PI_Cursor
    368                 PI_name_end = bitutil.ScanThru(PI_Cursor, lex.NameScan)
    369                 ctCDPI_Callouts.PI_name_ends |= PI_name_end
    370                 PI_Cursor = bitutil.ScanTo(PI_name_end, PI_closer)
    371                 CD_Cursor = bitutil.ScanTo(CD_Cursor, CD_closer)
    372                 Ct_Cursor = bitutil.Advance(bitutil.ScanTo(Ct_Cursor, DoubleHyphen))
    373                 ctCDPI_Callouts.PI_ends |= PI_Cursor
    374                 ctCDPI_Callouts.CD_ends |= CD_Cursor
    375                 ctCDPI_Callouts.Ct_ends |= Ct_Cursor
     358                # PI processing
     359                if PI_Cursor:
     360                        ctCDPI_Callouts.PI_starts |= PI_Cursor
     361                        PI_Cursor = bitutil.Advance(PI_Cursor)
     362                        ctCDPI_Callouts.PI_name_starts |= PI_Cursor
     363                        PI_name_end = bitutil.ScanThru(PI_Cursor, lex.NameScan)
     364                        ctCDPI_Callouts.PI_name_ends |= PI_name_end
     365                        PI_Cursor = bitutil.ScanTo(PI_name_end, PI_closer)
     366                        ctCDPI_Callouts.PI_ends |= PI_Cursor
     367                        ctCDPI_error |= bitutil.Advance(ctCDPI_Callouts.PI_name_ends & ~ lex.WS) & ~ PI_closer
     368                        ctCDPI_error |= ctCDPI_Callouts.PI_name_starts & ctCDPI_Callouts.PI_name_ends
     369
     370                # CDATA section processing
     371                if CD_Cursor:
     372                        ctCDPI_Callouts.CD_starts |= CD_Cursor
     373                        CD_Cursor = bitutil.ScanTo(CD_Cursor, CD_closer)
     374                        ctCDPI_Callouts.CD_ends |= CD_Cursor
     375
     376                # Comment processing
     377                if Ct_Cursor:
     378                        ctCDPI_Callouts.Ct_starts |= Ct_Cursor
     379                        Ct_Cursor = bitutil.Advance(Ct_Cursor) 
     380                        Ct_errors |= Ct_Cursor & ~ lex.Hyphen
     381                        # Advance twice past <!--, so that we don't treat <!---
     382                        # as being a terminated comment.
     383                        Ct_Cursor = bitutil.Advance(bitutil.Advance(Ct_Cursor))
     384                        Ct_Cursor = bitutil.Advance(bitutil.ScanTo(Ct_Cursor, DoubleHyphen))
     385                        Ct_errors |= Ct_Cursor & ~ lex.RAngle   
     386                        ctCDPI_Callouts.Ct_ends |= Ct_Cursor
     387                        ctCDPI_error |= Ct_errors
     388
     389
     390                # Common processing
    376391                CtCDPI_Cursor = PI_Cursor | CD_Cursor | Ct_Cursor
    377                 CtCDPI_Cursor = bitutil.ScanTo(CtCDPI_Cursor, CtCDPI_opener)
    378        
     392                CtCDPI_Cursor = bitutil.ScanTo(CtCDPI_Cursor, CtCDPI_opener)   
    379393                ctCDPI_mask = bitutil.Advance(ctCDPI_Callouts.CD_ends | ctCDPI_Callouts.Ct_ends | ctCDPI_Callouts.PI_ends) - CtCDPI_starts             
    380                 #ctCDPI_Callouts.error = Ct_ends & ~lex.RAngle | Ct_starts & ~ lex.Hyphen
    381                 ctCDPI_error = Ct_errors | ctCDPI_Callouts.Ct_ends & ~lex.RAngle
    382                 ctCDPI_error |= bitutil.Advance(ctCDPI_Callouts.PI_name_ends & ~ lex.WS) & ~ PI_closer
    383                 ctCDPI_error |= ctCDPI_Callouts.PI_name_starts & ctCDPI_Callouts.PI_name_ends
    384394                # If any of the Comment, CDATA or PI markups are unterminated, it is an error.
    385395                ctCDPI_error |= ctCDPI_mask &~ EOF_mask
Note: See TracChangeset for help on using the changeset viewer.