Covfefe 0.6.1

Covfefe 0.6.1

Palle Klewitz 维护。



Covfefe 0.6.1

  • Palle Klewitz

Covfefe

Build Status docs CocoaPods CocoaPods license

Covfefe 是一个用于由任何(确定的或非确定的)上下文自由文法生成的语言的解析框架。它实现了 EarleyCYK 算法。

用法

Xcode 中的 Swift 包依赖关系

  1. 转到 "文件" > "Swift 包" > "添加包依赖..."
  2. 将 "https://github.com/palle-k/Covfefe.git" 作为存储库 URL 输入。
  3. 选择 "版本","升级至下一个主要版本","0.6.1" < "1.0.0"
  4. 将 Covfefe 添加到您希望的目标中。

Swift 包管理器

此框架可以通过将其作为依赖项添加到 Package.swift 文件中来作为 Swift 包导入。

.package(url: "https://github.com/palle-k/Covfefe.git", from: "0.6.1")

CocoaPods

或者,也可以通过CocoaPods添加为依赖(适用于iOS、tvOS、watchOS和macOS)。

target 'Your-App-Name' do
  use_frameworks!
  pod 'Covfefe', '~> 0.6.1'
end

示例

语法可以用EBNF的超集或BNF的超集指定,它采用了EBNF的一些特性(文档见此处)。

let grammarString = """
expression       = binary-operation | brackets | unary-operation | number | variable;
brackets         = '(', expression, ')';
binary-operation = expression, binary-operator, expression;
binary-operator  = '+' | '-' | '*' | '/';
unary-operation  = unary-operator, expression;
unary-operator   = '+' | '-';
number           = {digit};
digit            = '0' ... '9';
variable         = {letter};
letter           = 'A' ... 'Z' | 'a' ... 'z';
""" 
let grammar = try Grammar(ebnf: grammarString, start: "expression")

此语法描述了由一元和二元运算符及括号组成的基本数学表达式。可以生成一个语法树,它描述了给定的词是如何从上面的语法推导出来的。

let parser = EarleyParser(grammar: grammar)

let syntaxTree = try parser.syntaxTree(for: "(a+b)*(-c)")

Example Syntax Tree