コード例 #1
0
ファイル: shell.py プロジェクト: maaku/haiku-lang
def repl(prompt=u'haiku> '):
  "A read-eval-print loop for haiku."
  canonical   = CanonicalExpressionPickler()
  simple      = SimpleExpressionPickler()
  interpreter = BaseInterpreter(pickler=simple, environment=globalEnvironment)

  while True:
    try:
      expression = interpreter.read(raw_input(prompt))
    except EOFError:
      sys.stdout.write('\n'); return 0
    except KeyboardInterrupt:
      sys.stdout.write('\n'); continue
    except Exception, e:
      traceback.print_exc();  continue

    try:
      result = interpreter.evaluate(expression)
      print u"INPUT:  %s" % canonical.dumps(*expression).encode('string_escape')
      print u"DEBUG:  %s" % Unicode(expression)
      print u"RESULT: %s" % Unicode(result)
      print u"OUTPUT: %s" % simple.dumps(result)[1:-1]
    except Exception, e:
      traceback.print_exc(); continue
コード例 #2
0
ファイル: pickle.py プロジェクト: maaku/haiku-lang
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND
# DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ===----------------------------------------------------------------------===

""

from haiku.builtin import builtinEnvironment
from haiku.pickle import CanonicalExpressionPickler
from haiku.types import *
__all__ = []

# ===----------------------------------------------------------------------===

pickler = CanonicalExpressionPickler()

_pickle, _unpickle = map(Symbol,
'pickle   unpickle'.split())

pickle = Procedure(
  params      = Tuple([(1, AlphaCompatible)]),
  defaults    = Tuple(),
  ellipsis    = False,
  environment = builtinEnvironment,
  body        = lambda eval_,env:pickler.dumps(env[1]),
)

unpickle = Procedure(
  params      = Tuple([(1, SymbolCompatible)]),
  defaults    = Tuple(),