使用严格限制的解释语言

时间:2009-07-19 00:44:04

标签: audio signal-processing reaper

我使用一种名为JS的嵌入式语言进行编码。

我希望能够以任何顺序调用三个函数。 (ABC,ACB,BAC,BCA,CBA,CAB。)

诀窍?该语言没有用户定义的函数。

它确实有一个条件和循环结构。

我想我有三个选择。

  1. 复制了一大堆代码。
  2. 编写预处理器(将创建所有重复的代码)。
  3. 使用数组控制在循环的每次传递中调用哪些功能,进行三次迭代循环。
  4. 我讨厌#1。重复的代码是令人讨厌的。如何在不搞砸的情况下更改任何内容?

    我猜#2还可以。至少我在源代码中没有重复的代码。但我的输出代码是我将要调试的,我想知道我是否想要与它分道扬..从好的方面来说,我可以在语言中添加一堆糖。

    我认为我最好的选择是#3。

    还有其他想法吗?没有转到。没有功能。没有现有的预处理器。

    关于#3的有趣之处在于它本质上是臭名昭着的/切换噩梦。

3 个答案:

答案 0 :(得分:3)

也许某种突变状态机,即:

int CODEWORD=0x123;

while (CODEWORD)
{
    switch(CODEWORD&15)
    {
    case 1:
       /// case 1
       break;
    case 2:
       /// case 2
       break;
    case 3:
       //// case 3
       break;
    }
    CODEWORD=CODEWORD>>4;
}

干,没有预处理器,没有数组。 for / switch似乎有些不可避免。

答案 1 :(得分:3)

您可以使用C预处理器而不是编写自己的预处理器。这至少会让你试一试,看看它是否是一个可行的解决方案。

答案 2 :(得分:1)

技术上最好的解决方案(假设您可以访问代码或开发人员)是修改JS语言以执行您真正需要的操作。

如果做不到这一点,最佳解决方案取决于您未解释的问题的各个方面:

  1. 是递归的'函数'吗?
  2. 有功能参数吗?
  3. 你需要(你可能需要)JS中没有提供的其他控制结构吗?
  4. 函数调用顺序是否取决于运行时参数?
  5. 您是否熟练且有足够的信心设计和实施符合当前和预计要求的预处理器语言?
  6. 正在实施一个预处理器,以便从长远来看节省你/同事的时间吗?
  7. 如果5. 的答案足够“是”,那么您的选项#2就是正确答案。否则......像#1或#3这样丑陋的解决方案实际上可能是个更好的主意。

    编辑:如果您没有源代码访问权限且开发团队无法满足您的需求,请考虑寻找开源替代方案。