首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pegjs中递归查找和展开变量

在Pegjs中递归查找和展开变量
EN

Stack Overflow用户
提问于 2018-03-05 10:56:21
回答 1查看 55关注 0票数 1

寻找一个解决方案,使用像PegJS (对其他建议开放)这样的东西来递归查找和扩展变量。

程序可以将变量设置为其他变量或一个数字

给定一个这样的结构:

{$a: '1', $b: '$a + 2', $c: '$b + 10'}

代码语言:javascript
复制
$a 
// looks up $a, expands to 1
$b 
// looks up $b, finds $a + 2, looks up $a and expands to 1 + 2
$c 
// looks up $c, finds $b + 10, looks up $b and finds $a + 2, looks up $a and expands to 1 + 2

完成此任务的最佳方式(工具或其他方式)是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-03-08 23:10:47

这里有一个简单的解决方案,可能会让你入门。在初始化器中定义obj = {},因为您希望在解析时保持对象可用,以便在找到键时对其进行缓存。

代码语言:javascript
复制
{
    var obj = {};
}

obj =
    "{" _* keyPair* "}"
    {
        return obj;
    }

keyPair =
    key:key ":" _* val:singleQuoted _*
    {
        obj[key] = val;
    }

key =
    $("$" word)

expression =
    key:key _* "+" _* num:num
    {
        return obj[key] + num;
    }

singleQuoted =
    "'" exp:(expression / num) "'" ","?
    {
        return exp;
    }

num =
    num:$([0-9]+)
    {
        return parseInt(num);
    }

word =
    $([A-Za-z]+)

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

https://stackoverflow.com/questions/49102850

复制
相关文章

相似问题

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