首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取DDMathParser令牌和组令牌

获取DDMathParser令牌和组令牌
EN

Stack Overflow用户
提问于 2017-11-16 16:51:23
回答 1查看 135关注 0票数 0

我已经找到了解决我的堆叠溢出问题的方法,但它是客观的。请参阅此链接DDMathParser - Getting tokens

我把它翻译成Swift,如下所示。那么,从字符串中获取令牌和获得分组令牌的最新方法是什么?

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

以下是我的尝试:

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

但我收到以下信息:

代码语言:javascript
复制
MathParser.DecimalNumberToken
MathParser.OperatorToken
MathParser.OperatorToken
MathParser.VariableToken
MathParser.OperatorToken
MathParser.OperatorToken
MathParser.DecimalNumberToken
MathParser.OperatorToken
MathParser.DecimalNumberToken
MathParser.OperatorToken
MathParser.OperatorToken

如何从字符串中获取特定的令牌?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-18 01:58:28

你得到了所有的代币。

OperatorTokenDecimalNumberToken等都是从RawToken超类继承的。RawToken定义了.string.range属性。

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

但是,需要注意的是,可能存在由令牌程序生成的令牌,而原始字符串中却不存在这些令牌。例如,托卡器在解析隐式乘法时注入令牌(3x转到3 * x)。

后加:

如果您想要最终的树来解析这一切,那么您就需要Expression

代码语言:javascript
复制
let expression = try Expression(string: "1 + ($a - (3 / 4))")

此时,您可以使用switch on expression.kind。它要么是number,要么是variable,要么是functionfunction表达式有子表达式,表示函数的参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47335141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档