Exemple #1
0
def interactiveCompile(expr, env, filename, mode):
    modname = env['__name__']
    if data.isDoc(expr, rootops.setlang):
        newlang = language.tmpLanguage(language.eval(expr, env), modname)
        env['__currentlang__']  = newlang
        env[newlang.__impl__.name] = newlang
        return compile("None", "", "eval")

    if data.isDoc(expr, (rootops.defop, rootops.getops)):
        expr['lang'] = '__currentlang__'
        language.eval(expr, env)
        return compile("None", "", "eval")
    else:
        return logixcompiler.compile([expr], filename, mode, module=modname)
Exemple #2
0
def interactiveCompile(expr, env, filename, mode):
    modname = env['__name__']
    if data.isDoc(expr, rootops.setlang):
        newlang = language.tmpLanguage(language.eval(expr, env), modname)
        env['__currentlang__'] = newlang
        env[newlang.__impl__.name] = newlang
        return compile("None", "", "eval")

    if data.isDoc(expr, (rootops.defop, rootops.getops)):
        expr['lang'] = '__currentlang__'
        language.eval(expr, env)
        return compile("None", "", "eval")
    else:
        return logixcompiler.compile([expr], filename, mode, module=modname)
Exemple #3
0
 def interact(self, *args):
     if hasattr(sys, 'ps1'):
         old_prompt = sys.ps1
     else:
         old_prompt = None
     import language
     stdtmp = language.tmpLanguage(stdlang, self.locals['__name__'])
     self.locals['__currentlang__'] = stdtmp
     self.locals[stdtmp.__impl__.name] = stdtmp
     sys.ps1 = "[std]: "
     try:
         code.InteractiveConsole.interact(self, *args)
     finally:
         if old_prompt:
             sys.ps1 = old_prompt
Exemple #4
0
 def interact(self, *args):
     if hasattr(sys, 'ps1'):
         old_prompt = sys.ps1
     else:
         old_prompt = None
     import language
     stdtmp = language.tmpLanguage(stdlang, self.locals['__name__'])
     self.locals['__currentlang__'] = stdtmp
     self.locals[stdtmp.__impl__.name] = stdtmp
     sys.ps1 = "[std]: "
     try:
         code.InteractiveConsole.interact(self, *args)
     finally:
         if old_prompt:
             sys.ps1 = old_prompt
Exemple #5
0
def icompile(src, filename='<input>', mode='single'):
    import sys

    if src.strip() == "":
        return compile("None", "", "eval")

    # {{{ compile ipython magic commands as Python code
    if src.startswith("__IP.magic"):
        import codeop
        return codeop.CommandCompiler()(src, filename, mode)
    # }}}

    # {{{ return None if src is unfinished multiline
    if src.count("\n") > 0:
        if not src.endswith("\n"):
            return None
    else:
        if src.strip().endswith(":"):
            return None
    # }}}

    import IPython
    AutoTB = IPython.ultraTB.AutoFormattedTB(mode='Context',
                                             color_scheme='Linux',
                                             call_pdb=1)

    try:
        ulang = _ipy.locals['__currentlang__']

        if not isinstance(ulang, language.Language):
            raise SyntaxError("current language is not valid")
        elif not ulang.__impl__.name.endswith("~"):
            ulang = language.tmpLanguage(ulang, _ipy.locals['__name__'])
            _ipy.locals['__currentlang__'] = ulang

        lang = ulang.__impl__

        expr = lang.parse(src, mode="interactive", execenv=_ipy.locals)

        return interactiveCompile(expr, _ipy.locals, filename, mode)

    # {{{ exception handling
    except SyntaxError:
        raise
    except macros.MacroExpandError, exc:
        macros.formatMacroError(exc)
        exc_info = exc.exc_info
        raise ValueError("macro expand error")
Exemple #6
0
def icompile(src, filename='<input>', mode='single'):
    import sys

    if src.strip() == "":
        return compile("None", "", "eval")

    # {{{ compile ipython magic commands as Python code
    if src.startswith("__IP.magic"):
        import codeop
        return codeop.CommandCompiler()(src, filename, mode)
    # }}}
    
    # {{{ return None if src is unfinished multiline
    if src.count("\n") > 0:
        if not src.endswith("\n"):
            return None
    else:
        if src.strip().endswith(":"):
            return None
    # }}}

    import IPython
    AutoTB = IPython.ultraTB.AutoFormattedTB(mode='Context', color_scheme='Linux',
                                             call_pdb=1)

    try:
        ulang = _ipy.locals['__currentlang__']

        if not isinstance(ulang, language.Language):
            raise SyntaxError("current language is not valid")
        elif not ulang.__impl__.name.endswith("~"):
            ulang = language.tmpLanguage(ulang, _ipy.locals['__name__'])
            _ipy.locals['__currentlang__'] = ulang
        
        lang = ulang.__impl__
        
        expr = lang.parse(src, mode="interactive", execenv=_ipy.locals)

        return interactiveCompile(expr, _ipy.locals, filename, mode)
    
    # {{{ exception handling
    except SyntaxError:
        raise
    except macros.MacroExpandError, exc:
        macros.formatMacroError(exc)
        exc_info = exc.exc_info
        raise ValueError("macro expand error")
Exemple #7
0
    def runsource(self, src, filename='<input>', mode='single'):
        import sys

        if src.strip() == "":
            return False

        # {{{ return True if src is unfinished multiline
        if src.count("\n") > 0:
            if not src.endswith("\n"):
                return True
        else:
            if src.strip().endswith(":"):
                return True
        # }}}

        try:
            ulang = self.locals['__currentlang__']

            if not isinstance(ulang, language.Language):
                raise SyntaxError("current language is not valid")
            elif not ulang.__impl__.name.endswith("~"):
                ulang = language.tmpLanguage(ulang, self.locals['__name__'])
                self.locals['__currentlang__'] = ulang
            
            lang = ulang.__impl__
            
            expr = lang.parse(src, mode='interactive', execenv=self.locals)

            import ipy
            code = ipy.interactiveCompile(expr, self.locals, filename, mode)
            self.runcode(code)

            # {{{ update prompt with current language name
            lang = self.locals['__currentlang__']
            name = lang.__impl__.name
            sys.ps1 = "[%s]: " % (name.endswith("~") and name[:-1] or name)
            # }}}
            return False

        # {{{ exception handling
        except SyntaxError:
            self.showsyntaxerror(filename)
        except MacroExpandError, exc:
            formatMacroError(exc)
Exemple #8
0
    def runsource(self, src, filename='<input>', mode='single'):
        import sys

        if src.strip() == "":
            return False

        # {{{ return True if src is unfinished multiline
        if src.count("\n") > 0:
            if not src.endswith("\n"):
                return True
        else:
            if src.strip().endswith(":"):
                return True
        # }}}

        try:
            ulang = self.locals['__currentlang__']

            if not isinstance(ulang, language.Language):
                raise SyntaxError("current language is not valid")
            elif not ulang.__impl__.name.endswith("~"):
                ulang = language.tmpLanguage(ulang, self.locals['__name__'])
                self.locals['__currentlang__'] = ulang

            lang = ulang.__impl__

            expr = lang.parse(src, mode='interactive', execenv=self.locals)

            import ipy
            code = ipy.interactiveCompile(expr, self.locals, filename, mode)
            self.runcode(code)

            # {{{ update prompt with current language name
            lang = self.locals['__currentlang__']
            name = lang.__impl__.name
            sys.ps1 = "[%s]: " % (name.endswith("~") and name[:-1] or name)
            # }}}
            return False

        # {{{ exception handling
        except SyntaxError:
            self.showsyntaxerror(filename)
        except MacroExpandError, exc:
            formatMacroError(exc)
Exemple #9
0
def initInteractive(ipy, baselang):
    package = __name__[:__name__.rfind(".")]
    logix = sys.modules[package]

    ipy.locals['logix'] = logix

    global _ipy
    _ipy = ipy

    logix.init()
    
    # {{{ optimisations
    if 0:
        import psyco
        import compiler
        psyco.bind(language.Language)
        psyco.bind(compiler.pycodegen, rec=10)

    if 0:
        import optimize
        import compiler
        optimize.bind_all(compiler)
        optimize.bind_all(parser)
    # }}}

    if baselang:
        ipy.locals['__currentlang__'] = logix.baselang
    else:
        mod = logix.imp('%s.std' % package, {})
        tmpstd = language.tmpLanguage(mod.std, '__main__')
        ipy.locals['__currentlang__'] = tmpstd
        ipy.locals[tmpstd.__impl__.name] = tmpstd
        logix.stdlang = mod.std

    print "(type logix.license for more information)"
    print "Welcome to Logix"
Exemple #10
0
def initInteractive(ipy, baselang):
    package = __name__[:__name__.rfind(".")]
    logix = sys.modules[package]

    ipy.locals['logix'] = logix

    global _ipy
    _ipy = ipy

    logix.init()

    # {{{ optimisations
    if 0:
        import psyco
        import compiler
        psyco.bind(language.Language)
        psyco.bind(compiler.pycodegen, rec=10)

    if 0:
        import optimize
        import compiler
        optimize.bind_all(compiler)
        optimize.bind_all(parser)
    # }}}

    if baselang:
        ipy.locals['__currentlang__'] = logix.baselang
    else:
        mod = logix.imp('%s.std' % package, {})
        tmpstd = language.tmpLanguage(mod.std, '__main__')
        ipy.locals['__currentlang__'] = tmpstd
        ipy.locals[tmpstd.__impl__.name] = tmpstd
        logix.stdlang = mod.std

    print "(type logix.license for more information)"
    print "Welcome to Logix"