PParenWick
작업 흐름

코딩 작업 흐름 · 제한된 S식 파싱

03
제품

작업 흐름

최대 4096자인 괄호로 둘러싼 S 표현식 하나를 리스트와 ASCII 원자 문자열로 파싱합니다. 빈 리스트, 깊이 16과 노드 1024개를 시험하고 아무것도 실행하지 않으면서 추가 형식, 닫히지 않은 리스트와 지원하지 않는 인용 구문을 거부합니다.

01

앱 다운로드

폴더를 선택하고 편집하기 전에 관련 파일을 읽도록 요청하세요. 작업의 목표와 변경 범위를 명확히 정합니다.

02

프로젝트 폴더 열기

호환되는 엔드포인트를 선택하세요. 사용 가능한 도구와 응답 품질은 설정한 모델과 서버에 따라 달라집니다.

03

모델 연결 및 테스트

변경 사항과 명령 출력을 검토하세요. 결과를 채택하기 전에 프로젝트 검사를 실행해야 합니다. 생성된 코드는 자동으로 테스트된 코드가 아닙니다.

04

변경 검토 및 테스트 실행

실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.

제한된 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

적용하기 전에 검토하세요. 변경 사항과 명령 출력을 검토하세요. 결과를 채택하기 전에 프로젝트 검사를 실행해야 합니다. 생성된 코드는 자동으로 테스트된 코드가 아닙니다.

AI 코딩 작업 공간

다음 아이디어가 여기서 시작됩니다.

Windows용 다운로드 ↗