PParenWick
Fluxos de trabalho

Fluxos de programação · Análise restrita de expressões S

03
Produto

Fluxos de trabalho

Analise uma expressão S entre parênteses de até 4096 caracteres em listas e átomos ASCII. Teste listas vazias, profundidade 16 e 1024 nós, rejeitando formas extras, listas abertas e aspas não aceitas sem executar nada.

01

Baixe o aplicativo

Escolha uma pasta e peça ao assistente que leia os arquivos relevantes antes de editá-los. Defina o objetivo e os limites da tarefa.

02

Abra a pasta do projeto

Escolha um endpoint compatível. As ferramentas disponíveis e a qualidade das respostas dependem do modelo e do servidor configurados.

03

Conecte e teste o modelo

Confira as alterações e a saída dos comandos. Execute as verificações do projeto antes de aceitar o resultado; código gerado não vem automaticamente testado.

04

Revise as alterações e execute os testes

Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.

Análise restrita de expressões S

Fluxos de trabalho
import re

def read_sexpression(text):
    if type(text) is not str or len(text) > 4096:
        raise ValueError("sexpr.input")
    stack, result, count = [], None, 0
    for match in re.finditer(r"\(|\)|[^\s()]+", text):
        token = match[0]
        if token == "(":
            if len(stack) == 16 or (not stack and result is not None):
                raise ValueError("sexpr.depth")
            item = []
            if stack:
                stack[-1].append(item)
            stack.append(item)
            count += 1
        elif token == ")":
            if not stack:
                raise ValueError("sexpr.close")
            item = stack.pop()
            if not stack:
                result = item
        else:
            if not stack or re.fullmatch(r"[A-Za-z_][A-Za-z0-9_-]*|[+-]?[0-9]+", token) is None:
                raise ValueError("sexpr.atom")
            stack[-1].append(token)
            count += 1
        if count > 1024:
            raise ValueError("sexpr.nodes")
    if stack or result is None:
        raise ValueError("sexpr.unclosed")
    return result

Revise antes de aplicar. Confira as alterações e a saída dos comandos. Execute as verificações do projeto antes de aceitar o resultado; código gerado não vem automaticamente testado.

Ambiente de programação com IA

Seu próximo projeto começa aqui.

Baixar para Windows ↗