我想使用flex/bison解析器创建一个read-eval-print循环.麻烦的是,flex生成的词法分析器需要输入FILE*类型,我希望它是char*.反正有没有这样做?
一个建议是创建一个管道,将其提供给字符串并打开文件描述符并发送给词法分析器.这很简单,但感觉很复杂,而且与平台无关.有没有更好的办法?
我有一个这样的方法,它使用类似的init方法对其他对象执行进一步的初始化.
- (Foo*)initWithInput:(NSMutableString*)i {
bar = [[Bar alloc] initWithInput:input];
return self;
}
Run Code Online (Sandbox Code Playgroud)
这会产生一个警告"Foo.m:19:警告:不兼容的Objective-C类型分配'struct Foo*',预期'struct Bar*'"
我假设alloc方法返回一个(id)类型,然后编译器无法决定我想在分配的对象上使用哪个initWithInput:方法.我当然可以删除这样的警告,但它并不是非常漂亮
- (Foo*)initWithInput:(NSMutableString*)i {
bar = [((Bar*)[Bar alloc]) initWithInput:input];
return self;
}
Run Code Online (Sandbox Code Playgroud)
是否有一种惯用的处理方式?