为nodejs转换thrift对象时:
thrift -r --gen js:node state_service.thrift
抛出以下错误:
[错误:/state_service.thrift:33](最后一个标记是“不是”)不能使用 保留语言关键字:“不是”
33左右的代码中的行是:
typedef bool Not
struct Exp {
1: string left
2: Not not
3: BinaryOp op
4: AnyValue right
}
我正在使用最新的Thrift版本0.9.2
答案 0 :(得分:0)
解决方案是不使用保留语言关键字,正如Thrift编译器所建议的那样。这些关键字是出于某种原因保留的。 Thrift是一种跨语言工具,not
确实是其中一些关键字的关键字。
我不想仅因为js转换器故障而更改处理代码。
我不同意见。 有缺陷的是不起作用的东西,尽管它应该是。节俭清楚地告诉你,你要尝试的是非法(截至今天)以及问题所在。
换句话说:使用Linux,您可以将大写和小写字母放在文件名中(实际上您可以放入一大堆奇怪的东西,但我会让它变得简单)。因此,在同一文件夹中创建FILE
和file
将完美无缺。如果您现在使用您的程序并在Windows上运行它,依赖于该行为,您迟早会遇到麻烦并可能开始抱怨您并且不希望仅因为该错误而更改您的处理代码OS &#34 ;.
请注意,抱怨不会帮助您摆脱坑洞,尽管在此过程中发出的内啡肽将确保您有一个有趣的时间。解决方案当然要等到微软修复他们错误的操作系统,因为你制定了规则。正确?
当然不是。所以如果你觉得实施错了 - 很好!这是开源的,没有人声称完美。 You are free to provide a patch,我们很乐意审核它。但请确保您使用Thrift目前支持的所有20多种语言进行测试。
答案 1 :(得分:0)
尝试将not更改为其他内容,我认为问题是,“ not”可能在您选择生成的语言中具有其他含义。
2: Not not