aether-azathoth 0.5.3

A lightweight, embeddable domain-specific language (DSL) interpreter with rich standard library
Documentation
// stdlib/examples/queue_demo.aether
// Queue(队列)数据结构示例

PRINTLN(CLI_BLUE("🌊 === Aether Queue(队列)示例 ==="))
PRINTLN("")

// 创建队列
PRINTLN(CLI_BLUE("📦 1. 创建和基本操作"))
Set QUEUE QUEUE_NEW()
PRINTLN("创建空队列: " + CLI_YELLOW("📭 " + QUEUE_TO_STRING(QUEUE)))

// 入队
Set QUEUE QUEUE_ENQUEUE(QUEUE, "第一个")
Set QUEUE QUEUE_ENQUEUE(QUEUE, "第二个")
Set QUEUE QUEUE_ENQUEUE(QUEUE, "第三个")
PRINTLN(CLI_GREEN("➕ 入队 3 个元素: ") + CLI_YELLOW("📬 " + QUEUE_TO_STRING(QUEUE)))
PRINTLN("队列大小: " + CLI_CYAN("📏 " + TO_STRING(QUEUE_SIZE(QUEUE))))
PRINTLN("")

// 查看队首
PRINTLN(CLI_BLUE("👀 2. 查看元素"))
PRINTLN("队首元素: " + CLI_YELLOW("🎯 " + QUEUE_PEEK(QUEUE)))
PRINTLN("队尾元素: " + CLI_YELLOW("🎯 " + QUEUE_PEEK_BACK(QUEUE)))
PRINTLN("")

// 出队
PRINTLN(CLI_BLUE("➖ 3. 出队操作"))
Set RESULT QUEUE_DEQUEUE(QUEUE)
Set QUEUE RESULT["queue"]
PRINTLN(CLI_RED("🚀 出队元素: ") + CLI_YELLOW("📤 " + RESULT["value"]))
PRINTLN("出队后的队列: " + CLI_YELLOW("📬 " + QUEUE_TO_STRING(QUEUE)))

Set RESULT QUEUE_DEQUEUE(QUEUE)
Set QUEUE RESULT["queue"]
PRINTLN(CLI_RED("🚀 再次出队: ") + CLI_YELLOW("📤 " + RESULT["value"]))
PRINTLN("当前队列: " + CLI_YELLOW("📬 " + QUEUE_TO_STRING(QUEUE)))
PRINTLN("")

// 批量操作
PRINTLN(CLI_BLUE("🔄 4. 批量操作"))
Set ITEMS [10, 20, 30, 40, 50]
Set QUEUE QUEUE_ENQUEUE_ALL(QUEUE, ITEMS)
PRINTLN(CLI_GREEN("📦 批量入队: ") + CLI_YELLOW("📬 " + QUEUE_TO_STRING(QUEUE)))

Set RESULT QUEUE_DEQUEUE_N(QUEUE, 3)
Set QUEUE RESULT["queue"]
PRINTLN(CLI_RED("🚀 批量出队 3 个: ") + CLI_YELLOW("📤 " + TO_STRING(RESULT["values"])))
PRINTLN("剩余队列: " + CLI_YELLOW("📬 " + QUEUE_TO_STRING(QUEUE)))
PRINTLN("")

// 实际应用:任务队列
PRINTLN(CLI_BLUE("⚡ 5. 实际应用:任务处理队列"))
Set TASK_QUEUE QUEUE_NEW()
Set TASK_QUEUE QUEUE_ENQUEUE(TASK_QUEUE, "发送邮件")
Set TASK_QUEUE QUEUE_ENQUEUE(TASK_QUEUE, "生成报告")
Set TASK_QUEUE QUEUE_ENQUEUE(TASK_QUEUE, "备份数据")
Set TASK_QUEUE QUEUE_ENQUEUE(TASK_QUEUE, "清理缓存")

PRINTLN("待处理任务: " + CLI_YELLOW("📋 " + QUEUE_TO_STRING(TASK_QUEUE)))
PRINTLN("")

PRINTLN(CLI_CYAN("▶️  开始处理任务..."))
While (!QUEUE_IS_EMPTY(TASK_QUEUE)) {
    Set RESULT QUEUE_DEQUEUE(TASK_QUEUE)
    Set TASK_QUEUE RESULT["queue"]
    Set TASK RESULT["value"]
    PRINTLN(CLI_GREEN("⚙️  正在处理: ") + CLI_YELLOW("📝 " + TASK))
}

PRINTLN(CLI_GREEN("✅ 所有任务已完成!"))
PRINTLN("队列为空: " + CLI_CYAN("🔍 " + TO_STRING(QUEUE_IS_EMPTY(TASK_QUEUE))))

PRINTLN("")
PRINTLN(CLI_BLUE("🎉 === 示例完成 ==="))