<th>A^*$v<tr>vl+(^h)*($^F- 1)A"h"S"d"h+(^l)v<table>
(Enquanto trabalhava nisso, descobri um bug que hnão funcionava e o corrigi)
Golpeou alguns bytes encurtando o html e usando "split, join" em vez de "replace"
Experimente online! , use a opção de linha de comando -dpara ver o AST (Observação: isso usa o novo interpretador de nó, portanto, a versão mais antiga no site não pode executar isso.)
Este programa pega a entrada indexada em 0 e em ordem inversa, devido à natureza estranha de Cenoura, 3 2imprimindo assim uma tabela 3 × 4.
Execute o programa assim, ./carrot -f prog.carrot input.txt
Cria basicamente a linha do cabeçalho, depois as linhas de dados em outra célula do jardim (fita 2D) e as concatena.
Cenoura trabalha em uma fita 2D, chamada de jardim. Cada célula do jardim é composta de três modos de pilha, string, float, array. Há um valor para cada modo, chamado de "pilha" (nota: nome impróprio). Essas pilhas começam vazias. Quando uma célula está em um modo específico, os seguintes comandos afetam a pilha que corresponde a esse modo, por exemplo, no modo de flutuação, as operações afetam a flutuação da pilha. E, claro, existem comandos para alternar entre os modos. Os modos são importantes porque cada operador pode ser sobrecarregado para cada modo e cada tipo de argumento.
Além disso, existem dois modos adicionais (eles afetam apenas os comandos, não a pilha diretamente), modo normal e modo de interpolação. O modo normal funciona normalmente, onde há operadores recebendo argumentos e afetando diretamente a pilha. No modo de sinal de intercalação, (quase) todo caractere é interpretado literalmente como uma sequência e, posteriormente, é anexado / anexado de acordo com a pilha. O modo de intercalação é iniciado / finalizado com intercalação (anexar) ou intercalar (intercalar).
A cenoura começa em uma célula no jardim, no modo de pilha e no modo de sinal de intercalação.
Começando no modo de sinal de intercalação, a string <th>Aé adicionada à string de pilha inicialmente vazia. Em seguida, segue o *comando que duplica $, a entrada, os tempos. Em seguida, <tr>é anexado à string da pilha pelo uso do sinal de intercalação v. Isso cria a linha do cabeçalho da tabela.
Para criar as linhas de dados, duplicamos o cabeçalho para outra célula. lmove o IP para a célula vazia direita e +anexa (^h)a sequência na célula à esquerda (essencialmente copiando-a para a célula à direita). ()inicia um subshell, um novo programa Carrot com quase a mesma fita e ^sai do modo de sinal de intercalação para que possamos hobter a string na célula esquerda. Isso é *duplicado pela ($^F- 1)próxima entrada menos 1, vezes.
Ainda na célula certa, Adefine a matriz dessa célula para seu empilhamento dividido por "h". Sjunta-se à matriz da pilha "d"e define a cadeia de caracteres da pilha para esse valor. A"h"S"d"realmente substitui hs por ds para formar as linhas de dados. Agora hvamos para a célula inicial esquerda.
Agora, anexamos a string de pilha da célula à direita dessa célula usando +(^l). Tudo o que resta é adicionar a <table>tag, então fazemos isso vanexando-a.