【问题标题】:J programming language (E)BNFJ 编程语言 (E)BNF
【发布时间】:2020-04-27 12:29:48
【问题描述】:

我正在为我的编程语言和编译器课程写一篇关于 J 编程语言的论文。由于它是一种相对未知(但有趣)的编程语言,我很难找到关于 (E)BNF 中 J 的形式语法的正确文档和信息,J 的一些开源实现,尤其是词法分析器和解析器。

有人知道 J 编程语言的 (E)BNF 的准确来源吗?如果是这样,那是 LL 语法吗?是否可以“通过”解析器生成器?

【问题讨论】:

标签: grammar bnf j ebnf ll


【解决方案1】:

(E)BNF 是一种用于上下文无关文法的符号技术。但是 J 是一种上下文相关的语言 [1,2]。 J 的解析规则列在 Dictionary II 中。 E [3]。

参考资料:

  1. https://code.jsoftware.com/wiki/Guides/Language_FAQ/J_BNF
  2. http://www.jsoftware.com/pipermail/general/2005-July/023632.html
  3. https://www.jsoftware.com/help/dictionary/dicte.htm

【讨论】:

    【解决方案2】:

    J 使用基于堆栈的解析表,一旦有足够的信息就评估句子。我相信,最好的来源是 Henry Rich 的“C 程序员的 J”的第 38 章和第 39 章。您需要能够熟悉默认 J 以充分利用这一点,但它应该作为对解析器的一个很好的介绍。 https://www.jsoftware.com/help/jforc/parsing_and_execution_i.htm#_Toc191734584https://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
    

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多