Changeset 222


Ignore:
Timestamp:
07/13/2010 05:24:57 PM (12 years ago)
Author:
marcus
Message:

Parser work.

Location:
SHX/trunk/src/SeismicHandler/core
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/src/SeismicHandler/core/parser.py

    r221 r222  
    277277class symbol(object): 
    278278    """ 
    279     This class holds global symbols. 
     279    This class holds locals symbols. Access to global symbols is granted. 
     280 
     281    Important note: All symbol names are converted into upper case! 
     282 
     283    >>> s = symbol() 
     284    >>> s.foo = 1 
     285    >>> s.foo 
     286    1 
     287    >>> s.setGlobal("bar", "qux") 
     288    >>> s.bar 
     289    'qux' 
     290 
     291    Local symbols mask global ones! This can be undone by deleting the symbol. 
     292    >>> s.bar = 5 
     293    >>> s.bar 
     294    5 
     295    >>> del s.bar 
     296    >>> s.bar 
     297    'qux' 
     298 
     299    If no local symbol exists, the global one will be removed. 
     300    >>> del s.bar 
     301    >>> s.bar #doctest: +ELLIPSIS 
     302    Traceback (most recent call last): 
     303    ... 
     304    Exception: Symbol BAR not found! 
    280305    """ 
    281306 
    282307    def __init__(self): 
    283         pass 
     308        self.__dict__["__globals"] = Settings.Globals 
     309 
     310    def __getattr__(self, name): 
     311        name = name.upper() 
     312        try: 
     313            return self.__dict__[name] 
     314        except KeyError: 
     315            pass 
     316 
     317        try: 
     318            return self.__dict__["__globals"][name] 
     319        except KeyError: 
     320            pass 
     321 
     322        raise Exception("Symbol %s not found!" % name) 
     323 
     324    def __setattr__(self, name, value): 
     325        name = name.upper() 
     326         
     327        self.__dict__[name] = value 
     328 
     329    def __delattr__(self, name): 
     330        name = name.upper() 
     331 
     332        # delete local symbol 
     333        try: 
     334            del self.__dict__[name] 
     335        except KeyError: 
     336            pass 
     337        else: 
     338            return 
     339 
     340        try: 
     341            del self.__dict__["__globals"][name] 
     342        except KeyError: 
     343            pass 
     344        else: 
     345            return 
     346 
     347        raise Exception("Symbol %s not found!" % name) 
     348 
     349    def setGlobal(self, name, value): 
     350        name = name.upper() 
     351         
     352        self.__dict__["__globals"][name] = value 
    284353 
    285354if __name__ == "__main__": 
     355    import doctest 
     356    doctest.testmod(exclude_empty=True) 
     357     
     358    quit() 
     359 
    286360    from StringIO import StringIO 
    287361    test = StringIO("echo line1\necho line2\n") 
     
    292366    x._feed(StringIO("echo line3\n")) 
    293367    x.run() 
    294  
    295     quit() 
    296368 
    297369    print parse('DELAY+SUM/BLA/FOO=1 BAR /tmp/test /SW FOO').parsed 
  • SHX/trunk/src/SeismicHandler/core/runtime.py

    r221 r222  
    9797 
    9898if __name__ == "__main__": 
     99    Settings = runtime() 
     100     
    99101    print >> Settings.echo_channel, Settings.echo_channel 
    100102    Settings.echo_channel = "TEST" 
Note: See TracChangeset for help on using the changeset viewer.