Changeset 1148 for proto


Ignore:
Timestamp:
Apr 22, 2011, 2:05:03 AM (8 years ago)
Author:
ksherdy
Message:

Add target src directory.

Location:
proto/RE2PBS
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • proto/RE2PBS/re2pbs.g

    r1130 r1148  
    1616  Version 0.8
    1717
    18       TODO -    Two pass implementation to support regular expression escape characters at both the
     18      TODO -    Add precedence via grouping operator.
     19
     20                Two pass implementation to support regular expression escape characters at both the
    1921                the global and character class scopes.
    2022               
     
    2931
    3032@header {
     33        # --------------------------------------------------------------------------------
     34        # Imports       
     35        # --------------------------------------------------------------------------------
    3136        from re2pbs import *
    32         from codepoint_symbol_table import CodePointSymbolTable, CodePointSymbol, CodePointLists2CharSetDefList
     37        from codepoint_symbol_table import CodePointSymbolTable, CodePointSymbol
    3338        from charset_compiler import chardeflist2py
    3439        from charset_def import CharSetDef
     40
     41        # --------------------------------------------------------------------------------
     42        # Methods
     43        # --------------------------------------------------------------------------------
     44        def codepoints2chardefsets(codepointss):
     45                """ Translates 'lists of lists' of code points Character Class Compiler CharSetDef argument list syntax """       
     46                lst = []       
     47                       
     48                for codepoints in codepointss: 
     49                  lgth = len(codepoints)
     50
     51                  if lgth < 1:
     52                    raise BadCodePointException
     53                  elif lgth == 1:
     54                    lst.append(chr(codepoints[0]))
     55                  elif lgth == 2:
     56                    lst.append(chr(codepoints[0]) + '-' + chr(codepoints[1]))
     57                  else:
     58                    raise BadCodePointException
     59               
     60                return lst
     61
     62
     63        def generate_chardefsets(symbol_table_items, prefix=''):
     64                defs = []
     65                for key, symbol in symbol_table_items:
     66                        defs.append(CharSetDef(prefix + key, codepoints2chardefsets(symbol.codepoints), symbol.invert))
     67                return defs
     68
     69        def generate_pbs_eqns(atoms):
    3570}
    3671
    3772@members {
    3873        symbol_table = CodePointSymbolTable()
     74        lex_strms = ""
     75        cc_code = ""
     76        pbs_code = ""
    3977}
    4078
     
    4785prog    :       re EOF
    4886{
    49         defs = []
    50         for key, symbol in self.symbol_table.symbols.items():
    51                 defs.append(CharSetDef(key, CodePointLists2CharSetDefList(symbol.codepoints), symbol.invert))
    52         print chardeflist2py(defs)
     87        factory = GeneratorFactory()
     88        re2pbs_code_generator = factory.build_pre_validator(1, 'cursor','error') 
     89
     90        self.lex_strms = re2pbs_code_generator.make_lexical_items(self.symbol_table.symbols.keys())
     91        self.cc_code = chardeflist2py(generate_chardefsets(self.symbol_table.symbols.items(), 'lex.'))
     92
     93        print self.lex_strms
     94        print self.cc_code
     95
     96        prototype = Program()
     97        prototype.generate(self.lex_strms, self.cc_code, self.pbs_code)
     98
    5399}
    54100        ;
     
    57103        ;       
    58104       
    59 union   :       concatenation (Or concatenation)*
     105union   :       concatenation           
     106                {
     107 
     108
     109                }
     110                (
     111                Or concatenation       
     112                {
     113
     114                } 
     115                )*
    60116        ;
    61117       
  • proto/RE2PBS/test/CCCharRef.txt

    r1130 r1148  
    1 &#[0-9];
     1&#x[0-9];
Note: See TracChangeset for help on using the changeset viewer.