轻松的编程学习
首页
题库
学习路径
在线商城
能力地图
下载应用
登录 / 注册
菜单
交付:五条验收条款一起过
👁️ 2 人浏览
💬 0 人评论
❤️ 添加收藏
最后一步:把这条路线的五个结论各写成一条可以重跑的验收条款。
提交你的答案
请登录后提交答案。
去登录
← 第四步:证明名字在编译期就分好了
源码到达词法分析器时是什么样子 →
更多题目
让程序说出"你好"
让程序欢迎你
哪个命令能显示内容
哪里是指令,哪里是结果
让程序说出你的名字
这个程序会显示什么
代码编辑器
语言:
python3
c11
cpp17
Ctrl
+
Enter
运行
👩🏫 AI
▶ 运行代码
重置代码
打印代码
import ast, io, tokenize LEX = 'x = (1 + 2' SYN = 'if x > 1\n y = 2' SEM = 'return 1' RUN = 'y = undefined_name' OK = 'y = 1 + 1' def stage_of(src): try: list(tokenize.generate_tokens(io.StringIO(src).readline)) except (tokenize.TokenError, IndentationError, SyntaxError): return "词法" try: ast.parse(src) except SyntaxError: return "语法" try: code = compile(src, "<s>", "exec") except SyntaxError: return "语义" try: exec(code, {}) except NameError: return "运行" return "通过" def consts(src): code = compile(src, "<s>", "exec") return tuple(x for x in code.co_consts if x is not None) # 五条验收条款:一份完整的"源码到运行"链路说明 c1 = stage_of(LEX) == "词法" c2 = stage_of(SYN) == "语法" # TODO: c3:SEM 被语义站拦下(语法过了、编译不过) c3 = None # TODO: c4:RUN 编译得过,跑起来才挂 —— 用 stage_of 判成 "运行" c4 = None # TODO: c5:常量折叠真的发生了 —— 'y = 200 + 300 * 4' 的常量表里有 1400 c5 = None print("/".join("过" if x else "不过" for x in (c1, c2, c3, c4, c5)))
本次输入:
输出:
👩🏫
AI
请登录后使用 AI 老师
×
登录后可获得解题思路、提示与错误分析。
去登录
关闭
🎉
恭喜你,回答正确!
系统判定:正确
我知道了
💬 题目评论
提交
全部评论
全部评论