解析时出现CallFailed错误

时间:2018-05-17 13:09:03

标签: runtime-error rascal

我是一名实习生,试图用Rascal编写我的第一个语法 编程时遇到了我的导师Riemer van Rozen之前从未见过的错误。目前我还在努力查看问题是我的代码还是Rascal bug,但我觉得我应该在这里报告错误。

用于正常解析的语法,甚至在将代码放回到我添加新内容之前的方式之后,它仍会产生相同的错误。

我的语法文件

module Syntax

lexical Natural = [0-9]+ !>> [0-9] ;
lexical ID = [a-zA-Z][a-z0-9A-Z]* !>> [a-z0-9A-Z];
lexical String = "\"" ![\"]* "\"";
lexical Sym = [a-zA-Z.!@#$%^&*];
lexical Mp = Sym*;

layout WhiteSpace = [\t-\n \r]* ;

start syntax CreatorData
    = title: "title " ID title
    | author: "author " ID author
    | homepage: "homepage " ID homepage;

分析器

module Parser

import Syntax;
import AST;
import ParseTree;

public CreatorData load(str txt) = parse(#CreatorData, txt);

错误

The Error

我希望有人能告诉我我的节目在哪里,或者我指出了一个未知的Rascal bug。

1 个答案:

答案 0 :(得分:1)

调用失败意味着parse的调用失败,因为您提供的参数与解析的任何可能重载都不匹配。

对于您的代码,您似乎还有一个名为CreatorData的ADT。这与CreatorData语法定义重叠。 There is a pattern documented in the tutor how to work around this challenge

不确定你的情况,但通常你可以跳过ADT表格,只是在混凝土树上工作,但这可能是将来要探索的东西。