0

这是我的代码: http: //pastie.org/private/t37ectjdnplit66zidj6hq

此代码用于类似 pascal 的语言解析器。我在这些行中遇到了问题:178、181、193。当我使用关键字定义语法时:[Any],我运行成功!但是当我用特征和“案例类”之一替换该关键字时,它会通知我有一个错误!我想我不明白使用代码时的含义:解析器[???]。有人可以帮我解决这些问题吗?

line 181: def val_type : Parser[Type] = primitive| array_type | string_type

line 193: def ident_list  : Parser[List[Id]] = ident ~(rep(","~> ident))

更新:以下是相应的错误:

line 181: type mismatch;  found   : MPRecognizer.this.Parser[Any]  required:   MPRecognizer.this.Parser[Type]
line 193: type mismatch;  found   : MPRecognizer.this.Parser[MPRecognizer.this.~[String,List[String]]]  required: MPRecognizer.this.Parser[Id]
4

1 回答 1

0

您需要向我们展示原始代码,而不是您通过使所有内容都返回而修改的代码Parser[Any]

错误消息告诉您,并非所有替代方案都会产生Type. 例如,检查方法primitivearray_type并且string_type都返回一个Parser[Type]. 为它们中的每一个添加类型注释,如果在修改后的定义中出现类型错误,请以相同的方式进一步缩小范围。

于 2012-10-06T13:09:07.613 回答