我应该如何在parsekit中使用回调函数?假设我有以下规则:
expr_s = expr_p '+' expr_s | expr_p ;
Run Code Online (Sandbox Code Playgroud)
我应该从生成的PKAssembly中弹出3个符号并添加第一个和最后一个数字,然后将答案推回堆栈?
对于上述规则,我应该如何知道导致匹配的第一个或第二个规则?
我不明白ParseKit调用回调函数的顺序.我真的可以使用一些帮助.
感谢Todd的回复,记住你的指示我写了下面的语法和回调函数,用于包含加法和乘法的简单数学表达式:
- (IBAction)press_equals:(id)sender {
NSString *g = @"@start = expr_s; expr_s = expr_p ('+'! expr_p)+ ; expr_p = Number ('*'! Number)+ ;";
PKParser *p = [[PKParserFactory factory] parserFromGrammar:g assembler:self];
NSString *s = @"3*4+4*8";
[p parse:s];
PKAssembly *res = [p parse:s];
NSLog(@"res %@", res);
}
- (void)parser:(PKParser *)p didMatchExpr_s:(PKAssembly *)a {
NSLog(@"%s %@", __PRETTY_FUNCTION__, a);
NSArray *toks = [a objectsAbove:nil];
double total = 0.0;
for (PKToken *tok in toks) …
Run Code Online (Sandbox Code Playgroud) 基本上我想知道iPhone高精度指向的方向,我尝试了CLLocationManager:问题是CLHeading.magnetHeading返回一个双精度值,例如36.44323,但是当我开始转动设备时,CLLocationManager仅在达到1度时更新方向,所以数字如下所示:36.44323、37.44323、38.44323 等等。是否可以有更高的准确度?
我想在屏幕上显示一些标签,并且想让它们看起来与 UIAlertView 完全相同。如何复制外观?请注意,我不关心警报视图的任何功能,只想要默认外观,因为它看起来不错。未设置 UIAlertView 上的 backgroundColor 等常见属性,并且 CALayer 的属性未显示任何有用的内容。
有任何想法吗?