PParenWick
Espacio de programación con IA

Análisis restringido de expresiones S

Analiza una expresión S entre paréntesis de hasta 4096 caracteres en listas y átomos ASCII.

● ● ●ParenWick●
Flujos de trabajo · Análisis restringido de expresiones S ×
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
✳Análisis restringido de expresiones S
✓ CambiosRevisa antes de aplicar ↗
Vista ilustrativa
  1. Modelos

    Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.

  2. Proyecto

    Prueba listas vacías, profundidad 16 y 1024 nodos, rechazando formas extra, listas abiertas y comillas no admitidas sin evaluar nada.

  3. Revisa antes de aplicar

    Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.

Flujos de trabajo

Análisis restringido de expresiones S

Flujos de trabajo ↗
Flujos de trabajo
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
Espacio de programación con IA

Mantén pequeño un lenguaje pequeño mientras cambia su analizador

ParenWick es un espacio de programación con IA para Windows destinado a desarrollar analizadores cuya entrada aceptada se restringe deliberadamente. Abre el proyecto y describe el lenguaje que debe reconocer la aplicación, incluido dónde debe detenerse. Pide al asistente conectado que examine el analizador actual y su consumidor antes de sugerir un cambio, para que una comodidad de implementación no amplíe silenciosamente el lenguaje.

Un lector limitado de expresiones S ofrece un ejemplo concreto. Analiza una única forma entre paréntesis, la sintaxis de átomos permitida y cómo se representan las listas anidadas. Incluye en la solicitud los límites de profundidad y de nodos, junto con lo que ocurre cuando hay formas adicionales tras la primera. El analizador devuelve una representación de la entrada; interpretar esa representación sería una parte independiente de tu aplicación.

Revisa la propuesta usando conjuntamente casos aceptados y rechazados, y ejecuta después las comprobaciones del proyecto exactamente en los límites y más allá de ellos. Examina la gestión de errores con el mismo cuidado que la salida correcta para que los consumidores puedan distinguir una entrada mal formada de una lista vacía válida. ParenWick acepta conexiones compatibles con OpenAI o de Anthropic admitidas, con credenciales cuando sean necesarias. Elige un modelo sin restricciones donde se ofrezca y comprueba el contexto y las herramientas admitidos por el servidor. El cambio resultante debe poder explicarse según tu gramática, en vez de ser simplemente plausible con una expresión de ejemplo.

Cambios del analizador y sus límites

¿Qué debo dar al asistente además de ejemplos válidos?

Proporciona ejemplos rechazados, la sintaxis de átomos permitida y límites explícitos de tamaño, profundidad y nodos. Indica cómo llegan los errores al consumidor. Así es posible revisar si el cambio propuesto conserva los límites previstos del lenguaje.

¿Leer una expresión ejecuta su contenido?

La tarea ilustrada analiza la entrada y la convierte en listas y cadenas de átomos. No evalúa esa representación. Mantén la ejecución o interpretación como un comportamiento especificado por separado y examina el código posterior antes de conectar la entrada analizada con cualquier acción.

¿Cómo debe tratarse una segunda forma de nivel superior?

El contrato existente acepta una forma entre paréntesis y rechaza las adicionales. Incluye un caso con dos formas y comprueba que se considere toda la entrada, para que un cambio del analizador no acepte silenciosamente un prefijo válido e ignore el material final.

¿Por qué probar exactamente en el límite de anidamiento?

Distingue la estructura más grande aceptada de la primera rechazada y puede revelar errores de una unidad. Haz lo mismo con los límites de nodos y longitud de entrada y verifica después que el rechazo produzca la respuesta que espera la aplicación que llama al analizador.

Descargar para Windows ↗

ParenWick · Actualizado 2026-10-25