PParenWick
Không gian lập trình với AI

Phân tích biểu thức S giới hạn

Phân tích một biểu thức S trong ngoặc dài tối đa 4096 ký tự thành danh sách và chuỗi nguyên tử ASCII.

● ● ●ParenWick●
Quy trình · Phân tích biểu thức S giới hạn ×
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
✳Phân tích biểu thức S giới hạn
✓ Thay đổiKiểm tra trước khi áp dụng ↗
Minh họa không gian làm việc
  1. Mô hình

    Cấu hình endpoint tương thích OpenAI hoặc Anthropic bằng URL cơ sở và khóa API nếu cần. Kiểm tra kết nối. Máy chủ mô hình cục bộ phải đang chạy; công cụ từ xa có thể truyền dữ liệu riêng.

  2. Dự án

    Kiểm tra danh sách rỗng, độ sâu 16 và 1024 nút, từ chối dạng bổ sung, danh sách chưa đóng và cú pháp trích dẫn không hỗ trợ mà không thực thi gì.

  3. Kiểm tra trước khi áp dụng

    So sánh hành vi thực tế với kết quả mong đợi. Nếu kiểm tra thất bại, tìm nguyên nhân trước khi sửa tiếp.

Quy trình

Phân tích biểu thức S giới hạn

Quy trình ↗
Quy trình
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
Không gian lập trình với AI

Giữ ngôn ngữ nhỏ gọn khi bộ phân tích thay đổi

ParenWick là không gian lập trình AI trên Windows để phát triển bộ phân tích có đầu vào được cố ý giới hạn. Mở dự án và mô tả ngôn ngữ ứng dụng nên nhận diện, gồm nơi nó phải dừng lại. Yêu cầu trợ lý được kết nối kiểm tra bộ phân tích hiện tại và bên sử dụng trước khi đề xuất bản vá, để sự tiện lợi triển khai không âm thầm mở rộng ngôn ngữ.

Bộ đọc S-expression có giới hạn là ví dụ cụ thể. Thảo luận một biểu thức trong ngoặc, cú pháp nguyên tử được phép và cách biểu diễn danh sách lồng nhau. Kèm giới hạn độ sâu, số nút và điều xảy ra khi có biểu thức bổ sung sau biểu thức đầu. Bộ phân tích trả về dạng biểu diễn đầu vào; diễn giải dạng biểu diễn đó sẽ là phần riêng của ứng dụng.

Rà soát đề xuất bằng cả ca được chấp nhận lẫn bị từ chối, rồi chạy kiểm tra dự án đúng tại giới hạn và vượt giới hạn. Kiểm tra xử lý lỗi kỹ như đầu ra thành công để bên gọi phân biệt đầu vào sai định dạng với danh sách rỗng hợp lệ. ParenWick chấp nhận kết nối tương thích OpenAI hoặc Anthropic được hỗ trợ, với thông tin xác thực khi cần. Chọn mô hình không hạn chế nơi được cung cấp và kiểm tra hỗ trợ ngữ cảnh, công cụ của máy chủ. Bản vá cuối cần giải thích được theo ngữ pháp của bạn, thay vì chỉ trông hợp lý với một biểu thức mẫu.

Thay đổi bộ phân tích và các ranh giới

Ngoài ví dụ hợp lệ, tôi nên đưa gì cho trợ lý?

Cung cấp ví dụ bị từ chối, cú pháp nguyên tử được phép và giới hạn rõ ràng về kích thước, độ sâu, số nút. Nêu cách lỗi đến bên gọi. Điều này giúp rà soát bản vá đề xuất có giữ ranh giới ngôn ngữ dự định không.

Đọc biểu thức có thực thi nội dung không?

Tác vụ minh họa phân tích đầu vào thành danh sách và chuỗi nguyên tử. Nó không đánh giá dạng biểu diễn đó. Giữ thực thi hoặc diễn giải là hành vi được quy định riêng và kiểm tra mã phía sau trước khi nối đầu vào đã phân tích với bất kỳ hành động nào.

Biểu thức cấp cao nhất thứ hai nên được xử lý thế nào?

Quy ước hiện có chấp nhận một biểu thức trong ngoặc và từ chối phần bổ sung. Thêm ca hai biểu thức và kiểm tra toàn bộ đầu vào được xét, để thay đổi bộ phân tích không âm thầm chấp nhận tiền tố hợp lệ rồi bỏ phần đuôi.

Vì sao kiểm thử đúng tại giới hạn lồng nhau?

Nó phân biệt cấu trúc lớn nhất được chấp nhận với cấu trúc đầu tiên bị từ chối và có thể lộ lỗi lệch một đơn vị. Làm tương tự với giới hạn nút và độ dài đầu vào, rồi xác minh việc từ chối tạo phản hồi ứng dụng gọi mong đợi.

Tải cho Windows ↗

ParenWick · Cập nhật 2026-10-25