把文法存成数据

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

文法也可以当数据存:每条产生式是「左边 → 右边的候选列表」。看 stmt 有几个候选、第一个候选是什么:

G = {
    "stmt": [["let", "IDENT", "=", "expr", ";"],
             ["IDENT", "=", "expr", ";"],
             ["if", "(", "expr", ")", "block"],
             ["while", "(", "expr", ")", "block"]],
    "block": [["{", "stmt*", "}"]],
}
first = [alt[0] for alt in G["stmt"]]
print(str(len(G["stmt"])) + "/" + ",".join(G["stmt"][0]) + "/" + ",".join(first))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论