Спецификация байт-кода Lua [закрыто]

Я не думаю, что он становится чище или быстрее, чем это; -)

Bah! Я думаю, что я могу сделать немного лучше: -D

import contextlib, cStringIO, sys

@contextlib.contextmanager
def nostdout():

    '''Prevent print to stdout, but if there was an error then catch it and
    print the output before raising the error.'''

    saved_stdout = sys.stdout
    sys.stdout = cStringIO.StringIO()
    try:
        yield
    except Exception:
        saved_output = sys.stdout
        sys.stdout = saved_stdout
        print saved_output.getvalue()
        raise
    sys.stdout = saved_stdout

Который добирается до того, что я хотел изначально, чтобы нормально подавлять вывод, но показывать подавленный вывод, если ошибка была сброшена.

20
задан Tadeusz A. Kadłubowski 26 September 2009 в 07:30
поделиться

4 ответа

Может быть Простое введение в инструкции Lua 5.1 VM содержит то, что вы ищете?

Также есть таблица с набором инструкций Lua 5.0 ( Рисунок 5) в:

Иерусалимский, Р .; Фигейредо, Луизиана; Селес, В. (2005), «Реализация Lua 5.0», Дж. компании Universal Comp. Sci. 11 (7): 1159-1176

Вы можете найти полный текст с помощью поиска в Google Scholar, и я думаю, что он также находится на lua.org. Эта ссылка используется на странице Lua в Википедии, которая всегда является хорошим местом для поиска подобных вещей. : -)

30
ответ дан 29 November 2019 в 22:28
поделиться

The official definition is in lopcodes.h.

53
ответ дан 29 November 2019 в 22:28
поделиться

You can read The Implementation of Lua 5.0 online.

5
ответ дан 29 November 2019 в 22:28
поделиться

Единственные спецификации для Lua - это язык, стандартные библиотеки и C API. Создатели Lua намеренно оставили виртуальную машину неуказанной по двум основным причинам:

  • Lua может быть полностью реализован с любой базовой архитектурой (виртуальная машина, интерпретатор, компилятор и т. Д.)
  • Официальный дистрибутив Lua не нужно беспокоиться о поддержании совместимости виртуальных машин между версиями

. Это означает, например, что вам обычно не следует использовать виртуальную машину Lua в качестве цели для компилятора. Если вы хотите узнать, как работает виртуальная машина официального дистрибутива Lua в качестве примера для собственного любопытства, посмотрите другие ответы.

6
ответ дан 29 November 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: