Позвольте мне попытаться преобразовать ваш код в общий код консоли отладки:
f()
where f = def
() -> commands [
debug(['something']),
debug(['more stuff']),
debug(['yet more stuff']),
]
where aaa = (0 + (1 * 2))
where bbb = 4
// asserting 2 + 2 = 4 // FIXME: syntax error uncommented
asserting '000' != null
where ccc = [0, 1, 2, 3]
where ddd = {'0': 0, '1': 1, }
Консоль отладки может выполнить следующее:
(debug console):0: ['something']
(debug console):0: ['more stuff']
(debug console):0: ['yet more stuff']
[(Command Object: N10game_logic12_GLOBAL__N_113debug_commandE),
(Command Object: N10game_logic12_GLOBAL__N_113debug_commandE),
(Command Object: N10game_logic12_GLOBAL__N_113debug_commandE)]
Давайте проверим, что ваша синтаксическая ошибка все еще существуетили, по крайней мере, некоторая синтаксическая ошибка при раскомментировании утверждения:
f()
where f = def
() -> commands [
debug(['something']),
debug(['more stuff']),
debug(['yet more stuff']),
]
where aaa = (0 + (1 * 2))
where bbb = 4
asserting 2 + 2 = 4 // FIXME: syntax error uncommented
asserting '000' != null
where ccc = [0, 1, 2, 3]
where ddd = {'0': 0, '1': 1, }
Консоль отладки не может выполнить:
error parsing formula: formula.cpp:3942 ASSERTION FAILED: Unexpected tokens after
where
At (debug console) 0:
... where bbb = 4 asserting 2 + 2 = 4 // FIXME syntax error uncommen...
^
Движок использует простой синтаксический анализ, и в настоящее время where
asserting
и =
(и, может быть, даже ,
?) Можно комбинировать интуитивно понятным, но плохо управляемым синтаксическим анализатором.
Здесь, я думаю, найден вторичный =
для where
до достижения ,
, но я не знаю.Прямо сейчас я не знаю точно, каковы критерии для окончательного разбора where
.Вы могли бы узнать, просто отладив парсер.
Это важная проблема, но, возможно, не критичная, и необходимо исправить сейчас , что в основном можно решить, добавив больше исчерпывающих значений.
Давайте разместим только одну пару паренов, начнем с ошибочного утверждения:
f()
where f = def
() -> commands [
debug(['something']),
debug(['more stuff']),
debug(['yet more stuff']),
]
where aaa = (0 + (1 * 2))
where bbb = 4
asserting (2 + 2 = 4) // FIXME: syntax error uncommented
asserting '000' != null
where ccc = [0, 1, 2, 3]
where ddd = {'0': 0, '1': 1, }
Консоль отладки может снова выполнить:
(debug console):0: ['something']
(debug console):0: ['more stuff']
(debug console):0: ['yet more stuff']
[(Command Object: N10game_logic12_GLOBAL__N_113debug_commandE),
(Command Object: N10game_logic12_GLOBAL__N_113debug_commandE),
(Command Object: N10game_logic12_GLOBAL__N_113debug_commandE)]
2018 27 мая добавлена ошибка определения местоположения.