J程序设计语言(E)BNF
J programming language (E)BNF
我正在为我的编程语言和编译器课程写一篇关于 J 编程语言的论文。由于它是一种相对不为人知(但有趣)的编程语言,我很难找到关于 (E)BNF 中 J 的形式语法的正确文档和信息,一些开源实现J,特别是词法分析器和语法分析器。
有人知道 J 编程语言的 (E)BNF 的准确来源吗?如果是这样,那是 LL 文法 还是 "put through" 解析器生成器?
J 使用基于堆栈的解析 table,一旦它有足够的信息就会评估句子。我认为,最好的来源是 Henry Rich 的 "J for C programmers" 的第 38 章和第 39 章。您需要能够与默示 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 的最新版本的跟踪脚本中找到。例如。 for j901
in 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
(E)BNF 是一种用于上下文无关文法的符号技术。但是 J 是一种上下文相关的语言 [1,2]。 J 的解析规则列在 Dictionary II 中。 E [3].
参考文献:
我正在为我的编程语言和编译器课程写一篇关于 J 编程语言的论文。由于它是一种相对不为人知(但有趣)的编程语言,我很难找到关于 (E)BNF 中 J 的形式语法的正确文档和信息,一些开源实现J,特别是词法分析器和语法分析器。
有人知道 J 编程语言的 (E)BNF 的准确来源吗?如果是这样,那是 LL 文法 还是 "put through" 解析器生成器?
J 使用基于堆栈的解析 table,一旦它有足够的信息就会评估句子。我认为,最好的来源是 Henry Rich 的 "J for C programmers" 的第 38 章和第 39 章。您需要能够与默示 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 的最新版本的跟踪脚本中找到。例如。 for j901
in 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
(E)BNF 是一种用于上下文无关文法的符号技术。但是 J 是一种上下文相关的语言 [1,2]。 J 的解析规则列在 Dictionary II 中。 E [3].
参考文献: