gpt4 book ai didi

swift - 获取 DDMathParser token 和组 token

转载 作者:行者123 更新时间:2023-11-30 12:00:13 25 4
gpt4 key购买 nike

我已经在 stackoverflow 上找到了我的问题的解决方案,但它是在 Objective-C 中的。请参阅此链接 DDMathParser - Getting tokens

我将其翻译成 Swift,如下所示。那么从字符串中获取 token 并获取分组 token 的最新方法是什么?

例如:1 + ($a - (3/4))

这是我的尝试:

do{
let token = try Tokenizer(string: "1 + ($a - (3 /4))").tokenize()
for element in token {
print(element)
}
} catch {
print(error)
}

但我收到以下消息:

MathParser.DecimalNumberToken
MathParser.OperatorToken
MathParser.OperatorToken
MathParser.VariableToken
MathParser.OperatorToken
MathParser.OperatorToken
MathParser.DecimalNumberToken
MathParser.OperatorToken
MathParser.DecimalNumberToken
MathParser.OperatorToken
MathParser.OperatorToken

如何从字符串中获取特定标记?

最佳答案

您将获得所有代币。

OperatorTokenDecimalNumberToken 等都继承自 RawToken 父类(super class)。 RawToken 定义了 .string.range 属性。

.string 是从源中提取或推断的实际 String.range 是 token 在原始字符串中所在的位置。

但是,需要注意的是,分词器生成的标记可能不存在于原始字符串中。例如,在解析隐式乘法时, token 生成器会注入(inject) token (3x 变为 3 * x)。

<小时/>

稍后添加:

如果您想要解析所有内容的最终树,那么您需要表达式:

let expression = try Expression(string: "1 + ($a - (3 / 4))")

此时,您切换 expression.kind。它可以是一个数字、一个变量或一个函数function 表达式具有子表达式,代表函数的参数。

关于swift - 获取 DDMathParser token 和组 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47335141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com