BNFParser 1.1

BNFParser 1.1

测试已测试
语言语言 Obj-CObjective C
许可证 Apache 2
发布最后发布2014年12月

未声明 维护。



  • Mike Friesen

BNFParser 是由 Mike Friesen 编写的,用于 Objective C 的 Backus-Naur Form 框架,在 Apache 2 开源许可证 下发布。

还有一个可用的 Java 版本。

BNFParser 受到 Todd Ditchendorf 编写的 ParseKit 框架的启发。

BNFParser 框架为开发者提供了 3 项基本服务,具有普遍意义

  1. 通过 BNFTokenizerFactoryBNFToken 类进行字符串标记化

  2. 通过 PropertyParser 进行属性键/值映射

  3. 通过语法进行文本解析

1. 字符串标记化

字符串标记化器将任何字符串分解为一系列字母/数字/符号,方便处理。

如何使用它?

NSString *text = @"The cow jumped over the moon!";
BNFTokenizerFactory *factory = [[BNFTokenizerFactory alloc] init];
BNFToken *token = [factory tokens:text];
while (token) {
  NSLog(@"TOKEN %@", [token stringValue]);
  token = [token nextToken];
}

2. PropertyParser

使用字符串标记化器解析字符串,并基于 '=' 符号创建键/值映射。

如何使用它?

NSString *text = @"sample key = sample value";
PropertyParser *propertyParser = [[PropertyParser alloc] init];
NSMutableDictionary *keyValueMap = [propertyParser parse:text];
STAssertNotNil([keyValueMap objectForKey:@"sample key"], @"expect key exists");

3. 通过语法进行文本解析

BNFParser 当前仅附带一个 JSON 语法,因此示例基于此。

如何使用它?

// Create String Tokens
NSString *text = @"{ \"key\":\"value\"}";
BNFTokenizerFactory *factory = [[BNFTokenizerFactory alloc] init];
BNFToken *token = [factory tokens:text];

// Create Backus-Naur Form State Definitions
BNFStateDefinitionFactory *sdf = [[BNFStateDefinitionFactory alloc] init];
NSMutableDictionary *map = [stateDefinitionFactory json];

// Run Tokens through Parser
BNFParser *parser = [[BNFParser alloc] initWithStateDefinitions:dic];
BNFParseResult *result = [parser parse:token];

// Verify results

// verify text passes grammar:
STAssertTrue([result success], @"assume success"); 

// the "first" token, same as the token returned from the tokenizer factory:
STAssertNotNil([result top], @"assume not nil"); 

// the "first" error token, this token and any afterwards are considered to not have passed the grammar:
STAssertNil([result error], @"assume nil");  

错误和反馈

有关错误、问题和讨论,请使用 Github Issues

贡献

我们热爱贡献!如果您想做出贡献,请通过 Github 提交拉取请求。

野外科考

应用程序 (OS X)

GoJSON - JSON 编辑器

许可证

此库是在 Apache 2 开源许可证 下分发的。