Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Jison中使用自定义函数_Javascript_Jison - Fatal编程技术网

Javascript 在Jison中使用自定义函数

Javascript 在Jison中使用自定义函数,javascript,jison,Javascript,Jison,我正在使用Jison来添加一个新的自定义函数。从下面的示例开始: 如果我在e数组中添加函数的代码,它可以工作: { "lex": { "rules": [ ... ['sin', 'return "SIN";'], ] }, ... "bnf": { ... "e" :[..., ['SIN ( e )', '$$

我正在使用Jison来添加一个新的自定义函数。从下面的示例开始:

如果我在e数组中添加函数的代码,它可以工作:

{
    "lex": {
        "rules": [
           ...
           ['sin', 'return "SIN";'],
        ]
    },

    ...

    "bnf": {
         ...    
        "e" :[...,
              ['SIN ( e )', '$$ = Math.sin($3)']]
    }
}
但是,尝试将其添加为自定义函数时失败:

function mySin(x) {
   return Math.sin(x);
}

{
    "lex": {
        "rules": [
           ...
           ['sin', 'return "SIN";'],
        ]
    },

    ...

    "bnf": {
         ...    
        "e" :[...,
              ['SIN ( e )', '$$ = mySin($3)']]
    }
}
我是Jison的新手,所以可能我做错了什么。我试图在文档和现有问题中找到解决方案,但失败了


欢迎任何提示

我在nodejs/CommonJS模式下运行jison时遇到了类似的问题。我的问题是解析器是在全局范围内运行的,因此我发现如果我使用语法global.myFunction=functionx{}定义函数,那么应该从解析器的操作中引用它们。我想这有点像黑客,我相信其他人可能会有一个更优雅的解决方案

function mySin(x) {
   return Math.sin(x);
}

{
    "lex": {
        "rules": [
           ...
           ['sin', 'return "SIN";'],
        ]
    },

    ...

    "bnf": {
         ...    
        "e" :[...,
              ['SIN ( e )', '$$ = mySin($3)']]
    }
}