首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >J语言(E)BNF

J语言(E)BNF
EN

Stack Overflow用户
提问于 2020-01-09 20:42:12
回答 2查看 370关注 0票数 3

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

有谁知道J编程语言的(E)BNF的准确来源吗?如果是这样的话,这是一个LL语法,它能“通过”解析器生成器吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-10 16:19:09

(E)BNF是一种上下文无关文法的表示法。但是J是一种上下文敏感的语言,1,2。j的解析规则列在词典II。

参考文献:

  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
票数 5
EN

Stack Overflow用户

发布于 2020-01-10 15:51:10

J使用一个基于堆栈的解析表,一旦得到足够的信息,就会对句子进行评估。我认为最好的来源是亨利·里奇的“面向C程序员的J”第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.Eg的最新版本的跟踪脚本中找到。对于j901 in j901/addons/general/misc/trace.ijs,这提供了一种经验,它将逐步遍历J语句,并列出实现的规则和堆栈的当前状态。

如果您已经下载了J的加载项,这将在您的安装中可用。

代码语言:javascript
复制
    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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59671800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档