PParenWick
Espace de développement avec IA

Analyse restreinte des expressions S

Analysez une expression S parenthésée d’au plus 4096 caractères en listes et atomes ASCII.

● ● ●ParenWick●
Méthodes de travail · Analyse restreinte des expressions 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
✳Analyse restreinte des expressions S
✓ ModificationsVérifiez avant d’appliquer ↗
Illustration de l’espace de travail
  1. Modèles

    Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.

  2. Projet

    Testez listes vides, profondeur 16 et 1024 nœuds, rejetez formes supplémentaires, listes ouvertes et guillemets non admis sans rien évaluer.

  3. Vérifiez avant d’appliquer

    Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.

Méthodes de travail

Analyse restreinte des expressions S

Méthodes de travail ↗
Méthodes de travail
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
Espace de développement avec IA

Gardez un petit langage limité lors des modifications de son analyseur

ParenWick est un espace de programmation assistée par IA sous Windows pour développer des analyseurs dont les entrées acceptées sont délibérément limitées. Ouvrez le projet et décrivez le langage que l’application doit reconnaître, y compris où elle doit s’arrêter. Demandez à l’assistant connecté d’examiner l’analyseur actuel et son code utilisateur avant de suggérer une correction, afin qu’une commodité d’implémentation n’élargisse pas discrètement le langage.

Un lecteur de S-expressions borné offre un exemple concret. Discutez d’une forme parenthésée unique, de la syntaxe d’atomes autorisée et de la représentation des listes imbriquées. Incluez les limites de profondeur et de nœuds dans la demande, ainsi que le traitement de formes supplémentaires après la première. L’analyseur renvoie une représentation de l’entrée ; son interprétation constituerait une partie distincte de votre application.

Examinez la proposition avec des tests d’acceptation et de rejet ensemble, puis exécutez les vérifications du projet exactement aux limites et au-delà. Examinez la gestion des erreurs aussi soigneusement que les sorties réussies afin que les appelants distinguent une entrée mal formée d’une liste vide valide. ParenWick accepte les connexions compatibles OpenAI ou Anthropic prises en charge, avec des identifiants si nécessaire. Choisissez un modèle sans restrictions lorsqu’il est proposé et vérifiez le contexte et les outils pris en charge par le serveur. La correction obtenue doit pouvoir s’expliquer selon votre grammaire, plutôt que sembler seulement plausible sur un exemple d’expression.

Modifications de l’analyseur et leurs limites

Que fournir à l’assistant en plus d’exemples valides ?

Fournissez des exemples rejetés, la syntaxe d’atomes autorisée et les limites explicites de taille, de profondeur et de nœuds. Précisez comment les erreurs parviennent à l’appelant. Cela permet de vérifier si la correction proposée préserve les limites du langage voulu.

Lire une expression exécute-t-il son contenu ?

La tâche illustrée analyse l’entrée en listes et en chaînes d’atomes. Elle n’évalue pas cette représentation. Spécifiez l’exécution ou l’interprétation comme un comportement distinct et examinez le code en aval avant de relier l’entrée analysée à une action.

Comment traiter une seconde forme de premier niveau ?

Le contrat existant accepte une forme parenthésée et rejette les suivantes. Incluez un test avec deux formes et vérifiez que toute l’entrée est prise en compte, afin qu’une modification de l’analyseur n’accepte pas silencieusement un préfixe valide en ignorant la suite.

Pourquoi tester exactement la limite d’imbrication ?

Cela distingue la plus grande structure acceptée de la première rejetée et peut révéler des décalages d’une unité. Faites de même pour les limites de nœuds et de longueur d’entrée, puis vérifiez que le rejet produit la réponse attendue par l’application appelante.

Télécharger pour Windows ↗

ParenWick · Mis à jour 2026-10-25