view pyrect/translator/translator.py @ 109:d591da6e2988

add memchr-filter. and fix emit buf.
author Ryoma SHINYA <shinya@firefly.cr.ie.u-ryukyu.ac.jp>
date Sat, 12 Feb 2011 16:41:25 +0900
parents 8cfa81638130
children
line wrap: on
line source

#!/usr/bin/env python

import sys

class Translator(object):
    def __init__(self, regexp):
        self.regexp = regexp
        self.stream = None
        self.__indent = 0
        self.tab = "  "

    def indent(self):
        self.__indent += 1

    def dedent(self):
        if self.__indent > 0:
            self.__indent -= 1

    def emit(self, string='', ret=1):
        self.emit0(string+"\n"*ret)

    def emiti(self, *arg):
        self.emit(*arg)
        self.indent()

    def iemit(self, *arg):
        self.indent()
        self.emit(*arg)

    def emitd(self, *arg):
        self.emit(*arg)
        self.dedent()

    def demit(self, *arg):
        self.dedent()
        self.emit(*arg)

    def iemitd(self, *arg):
        self.iemit(*arg)
        self.dedent()

    def demiti(self, *arg):
        self.demit(*arg)
        self.indent()

    def emit0(self, string):
        self.stream.write(self.tab*self.__indent + string)

    def state_name(self, state_name):
        return str(state_name)

    def emit_from_callgraph(self):
        pass

    def translate(self, stream=sys.stdout):
        self.stream = stream
        self.emit_from_callgraph()

    class stmt(object):
        def __init__(self, stream=sys.stdout):
            self.indent = indent
        def __enter__(self):
            pass
        def __exit__(self, *arg):
            pass

    class global_stmt(stmt):
        pass

    class state_stmt(stmt):
        pass

    class transition_stmt(stmt):
        pass