PParenWick
Pracovní prostředí s AI pro kód

Omezené parsování S-výrazů

Zpracujte jeden uzávorkovaný S-výraz do 4096 znaků na seznamy a atomy ASCII.

● ● ●ParenWick●
Pracovní postupy · Omezené parsování S-výrazů ×
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
✳Omezené parsování S-výrazů
✓ ZměnyPřed použitím zkontrolujte ↗
Ilustrace pracovního prostředí
  1. Modely

    Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.

  2. Projekt

    Otestujte prázdné seznamy, hloubku 16 a 1024 uzlů, odmítněte další formy, neuzavřené seznamy a uvozovky bez vyhodnocení.

  3. Před použitím zkontrolujte

    Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.

Pracovní postupy

Omezené parsování S-výrazů

Pracovní postupy ↗
Pracovní postupy
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
Pracovní prostředí s AI pro kód

Při změnách parseru zachovejte malý jazyk malým

ParenWick je programovací prostředí s AI pro Windows k vývoji parserů se záměrně omezeným přijímaným vstupem. Otevřete projekt a popište jazyk, který má aplikace rozpoznávat, včetně hranic, za které nesmí jít. Před návrhem opravy nechte připojeného asistenta prozkoumat nynější parser a jeho příjemce, aby pohodlnější implementace tiše nerozšířila jazyk.

Konkrétním příkladem je čtečka S-výrazů s omezeními. Proberte jediný výraz v závorkách, přípustnou syntaxi atomů a reprezentaci vnořených seznamů. Do zadání zahrňte limity hloubky a počtu uzlů i to, co se má stát, pokud za prvním výrazem následují další. Parser vrací reprezentaci vstupu; její interpretace by byla samostatnou částí aplikace.

Návrh posuďte společně na přijímaných i odmítaných testovacích příkladech a poté spusťte kontroly projektu přesně na limitech i za nimi. Zpracování chyb prozkoumejte stejně pečlivě jako úspěšný výstup, aby volající rozlišili chybný vstup od platného prázdného seznamu. ParenWick přijímá podporovaná připojení kompatibilní s OpenAI nebo připojení Anthropic, podle potřeby s přihlašovacími údaji. Vyberte neomezený model tam, kde je nabízen, a ověřte podporu kontextu a nástrojů serveru. Výsledná oprava má být vysvětlitelná podle vaší gramatiky, nikoli jen věrohodná na jednom ukázkovém výrazu.

Změny parseru a jejich hranice

Co dát asistentovi kromě platných příkladů?

Dodejte odmítané příklady, povolenou syntaxi atomů a výslovné limity velikosti, hloubky a počtu uzlů. Uveďte, jak chyby přecházejí k volajícímu. Umožní to posoudit, zda navržená oprava zachovává zamýšlené hranice jazyka.

Spustí přečtení výrazu jeho obsah?

Ilustrovaná úloha parsuje vstup do seznamů a řetězců atomů. Tuto reprezentaci nevyhodnocuje. Spouštění či interpretaci ponechte jako zvlášť specifikované chování a před propojením naparsovaného vstupu s jakoukoli akcí prozkoumejte navazující kód.

Jak se má zachovat druhý výraz na nejvyšší úrovni?

Stávající specifikace přijímá jediný výraz v závorkách a další odmítá. Zahrňte test se dvěma výrazy a ověřte zohlednění celého vstupu, aby změna parseru tiše nepřijímala platný prefix a neignorovala zbytek.

Proč testovat přesně na limitu vnoření?

Odlišuje největší přijímanou strukturu od první odmítané a může odhalit chyby o jedničku. Totéž udělejte pro limity uzlů a délky vstupu a ověřte, že odmítnutí vyvolá reakci očekávanou volající aplikací.

Stáhnout pro Windows ↗

ParenWick · Aktualizováno 2026-10-25