FFL:无法识别where子句的第二个标识符

时间:2018-05-29 02:30:19

标签: where-clause anura ffl

我相信我的语法是正确的,但由于某种原因,Anura FFL解析器无法识别我的where子句中定义的第二个标识符choice。我错过了什么?

def(class creature creature, class game_state game) ->commands [
    if(creature.choices,
        if(choice < size(player.deck), [
            set(player.deck, player.deck[0:choice] + player.deck[choice+1:]),
            game.crypt.spawn_cards(creature.summoner, [card]),
            set(creature.effects_tracking['Buried Treasure'], card),
        ] where card=player.deck[choice]
        ) where player=game.players[creature.summoner],
                choice=creature.choices[0]
    ),
]

它给了我这个错误:

formula.cpp:1067 ASSERTION FAILED: Unknown identifier 'choice' :
if(choice < size(player.deck), [

   ^-----^

注意:如果我将其更改为where a=... where b=...而不是where a=... , b=...,则会解析。

1 个答案:

答案 0 :(得分:1)

逗号被解释为if()的参数分隔符 - 它是不明确的,并且解析器无法告诉意图。你必须使用parens来消除它的歧义,尽管我只是建议使用where where where where where,因为它更可靠。逗号对这样的问题太开放了,所以不推荐使用where子句的语法。