J использует таблицу синтаксического анализа на основе стека, который оценивает предложение, как только у него будет достаточно информации. Я полагаю, что лучшим источником для этого являются главы 38 и 39 книги Генри Рича «J для C программистов». Вы должны быть в состоянии освоить tacit J, чтобы извлечь максимальную пользу из этого, но это должно послужить хорошим введением в анализатор. https://www.jsoftware.com/help/jforc/parsing_and_execution_i.htm#_Toc191734584 https://www.jsoftware.com/help/jforc/parsing_and_execution_ii.htm#_Toc191734586
Другим источником для понимания оценки J является глагол trace
, который можно найти в скрипте трассировки, расположенном для последних версий J. например. для j901
в j901/addons/general/misc/trace.ijs
Это дает практический опыт, который будет проходить через предложение J и перечислять реализованные правила и текущее состояние стека.
Если вы загрузили аддоны для J, это будет уже будет доступен в вашей установке.
load '~addons/general/misc/trace.ijs'
trace '(+/ % #) 5 7 3 4 5 2' NB. returns the trace for the average of list of numbers
--------------- 3 Adverb -----
+
/
+/
--------------- 5 Trident ----
+/
%
#
+/ % #
--------------- 8 Paren ------
(
+/ % #
)
+/ % #
--------------- 0 Monad ------
+/ % #
5 7 3 4 5 2
4.33333
==============================
4.33333