Changeset 1154 for proto/RE2PBS/bin


Ignore:
Timestamp:
Apr 25, 2011, 1:37:41 AM (8 years ago)
Author:
ksherdy
Message:

Minor template fixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/RE2PBS/bin/re2pbs.py

    r1144 r1154  
    1313      print 'Debug node.'
    1414
    15 # TODO - Implement RE alternation.
    16 
    17 #
    18 # class Union:
    19 #
     15class RE(Node):
     16    def __init__(self):
     17      self.union = Union()
     18     
     19    def debug(self):
     20      return 'RE()->(%s)' % (self.union.debug())
     21
     22class Union(Node):
     23    def __init__(self):
     24      self.concatenation_list = []
     25
     26    def debug(self):
     27      lst = []
     28      for c in self.concatenation_list:
     29        lst.append(c.debug())
     30      return 'Union() -> (%s)' % ((',').join(lst))
    2031
    2132class Concatenation(Node):
     
    2435     
    2536    def debug(self):
    26       return 'Concatentation() -> (%s) ' % (self.atom_list)
     37      return 'Concatentation() -> (%s)' % (self.atom_list)
    2738
    2839class Atom(Node):
     
    131142        self.error = self.error_base + '_' + str(self.error_count)
    132143        return self.error
    133        
    134     def make_lexical_items(self, strm_lst):
     144             
     145    def make_init_stmts(self, strm):
     146      print self.__class__.__name__ + ' not implemented.'
     147      sys.exit(1)
     148   
     149    def make_match_stmts(self, strm, quantifier, follow_set_strm=None):
     150      print self.__class__.__name__ + ' not implemented.'
     151      sys.exit(1)
     152   
     153    def make_optional_stmts(self, strm, follow_set_strm=None):
     154      print self.__class__.__name__ + ' not implemented.'
     155      sys.exit(1)
     156   
     157    def make_kleene_star_stmts(self, strm, follow_set_strm=None):
     158      print self.__class__.__name__ + ' not implemented.'
     159      sys.exit(1)
     160   
     161    def make_kleene_cross_stmts(self, strm, follow_set_strm=None):
     162      print self.__class__.__name__ + ' not implemented.'
     163      sys.exit(1)
     164
     165    def make_single_stmts(self, strm, follow_set_strm=None):
     166      print self.__class__.__name__ + ' not implemented.'
     167      sys.exit(1)
     168     
     169    def make_finalization_stmts(self): 
     170      print self.__class__.__name__ + ' not implemented.'
     171      sys.exit(1)
     172     
     173    def make_debug_stmts(self):
     174      print self.__class__.__name__ + ' not implemented.'
     175      sys.exit(1)
     176     
     177    @classmethod         
     178    def make_lexical_items(cls, strm_lst, level=1):
    135179        strms = ""
    136180        for strm in strm_lst:
    137           strms += self.indent_level + PabloCode.Assign(strm,'0')  +'\n'         
     181          strms += PabloCode.indent(level) + PabloCode.Assign(strm, '0')  +'\n'   
    138182        return strms 
    139183     
    140     def make_init_stmts(self, strm):
    141       print self.__class__.__name__ + ' not implemented.'
    142       sys.exit(1)
    143    
    144     def make_match_stmts(self, strm, quantifier, follow_set_strm=None):
    145       print self.__class__.__name__ + ' not implemented.'
    146       sys.exit(1)
    147    
    148     def make_optional_stmts(self, strm, follow_set_strm=None):
    149       print self.__class__.__name__ + ' not implemented.'
    150       sys.exit(1)
    151    
    152     def make_kleene_star_stmts(self, strm, follow_set_strm=None):
    153       print self.__class__.__name__ + ' not implemented.'
    154       sys.exit(1)
    155    
    156     def make_kleene_cross_stmts(self, strm, follow_set_strm=None):
    157       print self.__class__.__name__ + ' not implemented.'
    158       sys.exit(1)
    159 
    160     def make_single_stmts(self, strm, follow_set_strm=None):
    161       print self.__class__.__name__ + ' not implemented.'
    162       sys.exit(1)
    163      
    164     def make_finalization_stmts(self): 
    165       print self.__class__.__name__ + ' not implemented.'
    166       sys.exit(1)
    167      
    168     def make_debug_stmts(self):
    169       print self.__class__.__name__ + ' not implemented.'
    170       sys.exit(1)
    171184     
    172185class PostValidator(Generator):
     
    249262      self.debug = debug
    250263      if (self.debug):
    251         self.re2pbs_debug_generator = DebugGenerator()
     264        self.re2pbs_debug_generator = DebugGenerator(level)
    252265   
    253266    def make_init_stmts(self, strm):
     
    259272
    260273      if (self.debug):
    261                 self.re2pbs_debug_generator.add_stmt('Init')
    262                 self.re2pbs_debug_generator.add_stmt(op, self.error)
     274                label = self.indent_level + 'Init'
     275                self.re2pbs_debug_generator.add_stmt(label)
     276                label = self.indent_level + self.error
     277                self.re2pbs_debug_generator.add_stmt(label, self.error)
    263278
    264279      #----- op 2 -----
     
    267282
    268283      if (self.debug):
    269                 self.re2pbs_debug_generator.add_stmt(strm, strm)
     284                label = self.indent_level + strm
     285                self.re2pbs_debug_generator.add_stmt(label, strm)
    270286                self.re2pbs_debug_generator.add_stmt(op, self.cursor)
    271287
     
    291307      #----- op 1 -----
    292308      if (self.debug):
    293                 self.re2pbs_debug_generator.add_stmt('Single Character')
    294                 self.re2pbs_debug_generator.add_stmt(self.cursor, self.cursor)
    295                 self.re2pbs_debug_generator.add_stmt(strm, strm)
     309                label = self.indent_level + 'Single Character'
     310                self.re2pbs_debug_generator.add_stmt(label)
     311                label = self.indent_level + self.cursor
     312                self.re2pbs_debug_generator.add_stmt(label, self.cursor)
     313                label = self.indent_level + strm
     314                self.re2pbs_debug_generator.add_stmt(label, strm)
    296315     
    297316      cursor = self.cursor
     
    328347      #----- op 1 -----
    329348      if (self.debug):
    330                 self.re2pbs_debug_generator.add_stmt('Optional Character')
    331                 self.re2pbs_debug_generator.add_stmt(self.cursor, self.cursor)
    332                 self.re2pbs_debug_generator.add_stmt(strm, strm)
     349                label = self.indent_level + 'Optional Character'
     350                self.re2pbs_debug_generator.add_stmt(label)
     351                label = self.indent_level + self.cursor
     352                self.re2pbs_debug_generator.add_stmt(label, self.cursor)
     353                label = self.indent_level + strm
     354                self.re2pbs_debug_generator.add_stmt(label, strm)
    333355
    334356      cursor = self.cursor
     
    347369      #----- op 1 -----
    348370      if (self.debug):
    349                 self.re2pbs_debug_generator.add_stmt('Kleene Star')
    350                 self.re2pbs_debug_generator.add_stmt(self.cursor, self.cursor)
    351                 self.re2pbs_debug_generator.add_stmt(strm, strm)
     371                label = self.indent_level + 'Kleene Star'
     372                self.re2pbs_debug_generator.add_stmt(label)
     373                label = self.indent_level + self.cursor
     374                self.re2pbs_debug_generator.add_stmt(label, self.cursor)
     375                label = self.indent_level + strm
     376                self.re2pbs_debug_generator.add_stmt(label, strm)
    352377
    353378      cursor = self.cursor
     
    368393
    369394      if (self.debug):
    370                 self.re2pbs_debug_generator.add_stmt('Kleene Cross')
     395                label = self.indent_level + 'Kleene Cross'
     396                self.re2pbs_debug_generator.add_stmt(label)
    371397
    372398      code = self.make_single_stmts(strm)
     
    400426      code = ""
    401427      if(self.debug):
    402         code = self.re2pbs_debug_generator.make_debug_stmts()
     428        code = self.indent_level + self.re2pbs_debug_generator.make_debug_stmts()
    403429
    404430      return code
     
    406432class DebugGenerator:
    407433    def __init__(self, level=0):
    408       self.header = 'bitutil.print_aligned_streams([(\'Input Data\', u8data), \n'
     434      self.indent_level = PabloCode.indent(level)
     435      self.header = 'bitutil.print_aligned_streams([(\''+ self.indent_level + 'Input Data\', u8data), \n'
    409436      self.footer = '])'
    410       self.indent_level = PabloCode.indent(level)
    411437      self.stmts = []
    412438 
     
    416442     
    417443    def make_debug_stmts(self):
    418       return self.indent_level + self.header + ',\n'.join(self.stmts) + self.footer + '\n'
     444      return self.header + ',\n'.join(self.stmts) + self.footer + '\n'
    419445
    420446def readfile(filename):
     
    441467      self.contents = string.replace(self.contents, '@cc_code', cc_code)
    442468      self.contents = string.replace(self.contents, '@pbs_code', pbs_code)
    443       self.contents = string.replace(self.contents, '@pbs_code', pbs_debug)
     469      self.contents = string.replace(self.contents, '@pbs_debug', pbs_debug)
    444470      writefile(self.prototype, self.contents)
    445471
     
    450476    re2pbs_code_generator = factory.build_pre_validator()
    451477    pbs_code = re2pbs_code_generator.make_init_stmts('lex.Ampersand')                           # init   '&'
    452     pbs_code += re2pbs_code_generator.make_match_stmts('lex.Ampersand', None, 'lex.Hash')               # expect '&'
    453     pbs_code += re2pbs_code_generator.make_match_stmts('lex.Hash', None, 'lex.Digit')                   # expect '#'
    454     pbs_code += re2pbs_code_generator.make_match_stmts('lex.Digit', '+', 'lex.Semi')                    # expect '[0-9]'
     478    pbs_code += re2pbs_code_generator.make_match_stmts('lex.Ampersand', None, 'lex.Hash')       # expect '&'
     479    pbs_code += re2pbs_code_generator.make_match_stmts('lex.Hash', None, 'lex.Digit')           # expect '#'
     480    pbs_code += re2pbs_code_generator.make_match_stmts('lex.Digit', '+', 'lex.Semi')            # expect '[0-9]'
    455481    pbs_code += re2pbs_code_generator.make_match_stmts('lex.Semi', None, None)                  # expect ';'   
    456482    pbs_code += re2pbs_code_generator.make_finalization_stmts()
Note: See TracChangeset for help on using the changeset viewer.