Mensagem de erro
Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.
A história
Sua tabela first está mal fechada, e o motor recusou no parse. Vamos entender. O builtin first recebe uma tabela de pares condição e valor, e devolve o valor da primeira condição verdadeira. A regra é que toda tabela termine com uma entrada else, com o valor de reserva, e que nada venha depois dela. Assim, a pergunta nenhuma condição foi verdadeira nunca precisa ser respondida em tempo de execução: o else já responde. Duas coisas são recusadas. A primeira: uma tabela sem else. A segunda: uma entrada depois do else, que nunca poderia ser alcançada. A mensagem diz qual dos dois casos foi escrito. Pense numa lista de regras de uma loja, em que a última sempre diz nos demais casos. Exemplo: first com duas condições e nenhum else. A correção: adicione a entrada else, com o valor de reserva, no final da tabela, e mova para antes dela qualquer entrada que estivesse depois.
Texto do catálogo de erros do motor do Rush.
