问题标签 [cocor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 EBNF 表达式解析代码块
我正在使用 CocoR 生成类似 java 的扫描仪/解析器:
我在创建 EBNF 表达式以匹配代码块时遇到了一些麻烦:
我假设一个代码块被两个众所周知的标记包围: <& 和 &> 示例:
如果我定义一个非终结符
如果两个符号内的代码包含“<”字符,则生成的编译器将不会处理它,从而产生语法错误。
有什么提示吗?
编辑:
为了简单起见,我省略了一些产品。
这是我对语法的实际实现。主要错误是,如果块中的代码包含符号“>”或“&”之一,它会失败。
compiler-construction - Coco/R 一直告诉我“预期的'编译器'”,即使我有声明
正如标题所说,我在使用 Coco/R 时遇到了问题。当我编译我的文件 Andromeda.atg 时,它给了我两个错误:“-- line 1 col 1: "COMPILER" expected" "-- line 1352 col 5: name does not match syntax name"
我不知道为什么会这样。我尝试将我的编译器仙女座线移到顶部,但弹出相同的错误。这是我的整个文件: http: //pastebin.com/PezqZb6y
谢谢,西奥
c# - 如何在 Coco/R 中标记缩进(Python,类似缩进的 Boo)
它有一种众所周知的方式,如何在 Coco/R 中实现标记缩进,就像在 Python/Boo 中一样?
Coco/R 忽略空格,但我需要根据下一行缩进以某种方式生成 beginBlock/endBlock 标记。
现在,我使用预处理器,它插入'{'、'}'和';' 在输入流中,通过比较行之间的缩进。在 Coco/R 语法中,我使用弯括号作为 beginBlock/endBlock 标记。如果输入流没有注释(也可以嵌套),它会很好地工作。一旦出现无序评论,意图比较逻辑就会失败。
实现一个跟踪评论的预处理器对我来说看起来像是过度设计。
所以问题是,通常是否可以使用 Coco/R 解析基于缩进的语法?还是我应该尝试别的?
parsing - CoCo 到 ANTLR 转换器中的表达式
我在一个实用程序中解析 CoCo/R 语法以自动化 CoCo -> ANTLR 翻译。核心的 ANTLR 语法是:
我的问题是这样的结构:
CS 会产生一个带有 OR_EXPR 节点的 AST,尽管没有“|” 人物实际出现。我确定这是由于表达式的定义,但我看不到任何其他方式来编写规则。
我确实对此进行了实验以解决歧义。
它有效,但黑客强化了我的信念,即一些根本性的问题是错误的。
非常感谢任何提示。
c# - C#文件流读取字符串(Coco/R Taste)
我正在使用 C# 中的 Coco R 示例 Taste。
当给出操作时,我正在尝试扩展代码以编写字符串,例如
写你好世界
我已经确定了一种可以存储和编写字符串的方法。我正在为我遇到的问题发布相关代码:
扩展的味道
CodeGen.cs中的扩展操作:Filestream就是这样使用的
并添加了使用文件流的大小写开关
问题是,我在互联网上的任何地方都找不到读取字符串的方法,显然ReadString(s)
不能以同样的方式ReadInt(s)
工作。我想知道是否可以帮助我找到一个从文件流中读取字符串的操作。
我以前没有做过任何文件流管理。
parsing - 如何让 Coco/R 解析器不贪婪
我的 ATG 文件将代码块定义为
当 Coco 生成的解析器遇到这样的块时:
令牌拿起
这正是我想要的。
但是,当遇到这样的代码时:
令牌,贪婪地捡起
我怎样才能让 Coco/R 知道不要这样做?
llvm - Phoenix 编译器工具项目还存在吗?
我正在寻找一个现代工具链来帮助开发一种小型编程语言/DSL。我想从MS Research探索Phoenix,但它看起来像一个死项目。是这样吗,我应该去别处寻找吗?
我想以 Phoenix 为目标,但如果这是最好的工具链,我肯定会考虑 LLVM(或其他)。
delphi - Coco/R 可以将解析的文件转换为字节码吗?
我想在 Delphi 中编写一个用于教育目的的简单编译器。我已经阅读了 Coco/R 并找到了 Delphi 的这个实现:http ://code.google.com/p/dcocor/ 。根据我的阅读,这是 Delphi 2009 语法的解析器。
我需要做什么才能将解析后的文件转换为字节码?Coco/R 能做到这一点吗?
我知道诸如 FastScript 或 DWS 之类的脚本语言,但我想尝试为自己的目的编写自己的语言。
请给我一些建议或澄清一些事情。