
开场白认识一位了不起的代码侦探小朋友、大朋友们你们好呀今天姐姐要给你们介绍一位超级厉害的侦探。这位侦探不抓小偷也不破案子它专门干一件特别有趣的事情——抓代码里的错误这位侦探的名字叫做“语法分析器”名字有点长你可以叫它代码侦探。它有多厉害呢程序员叔叔阿姨们写代码的时候一不小心就会写错——可能多打了一个括号可能少写了一个分号可能把句子的顺序搞反了。这些错误用肉眼很难一下子发现。但是这位代码侦探眼睛雪亮一眼就能把错误揪出来还会告诉你“喂你这里写错啦”是不是很神奇今天姐姐就带你们一起跟着这位代码侦探破案看看它到底是怎么发现语法错误的准备好你的放大镜了吗我们出发去破案啦️第一站先玩个找错游戏在认识侦探之前我们先自己当一回侦探玩个找错游戏。姐姐写几句话你来找一找哪一句写错了第一句 我 吃 苹果 ✅这句对的 第二句 我 苹果 吃 ❓这句怪怪的 第三句 吃吃吃 我 我 ❌这句乱七八糟你发现了吗第一句我吃苹果很通顺没问题。第二句我苹果吃……听起来怪怪的顺序好像反了。第三句吃吃吃我我……完全乱套了根本不像句话你刚才做的就是侦探的工作你心里有一套句子应该长什么样的规则还记得我们学过的文法吗然后你拿这套规则去对照发现不符合规则的就是错误代码侦探干的就是这件事只不过它检查的不是我吃苹果而是程序员写的代码。记住这个道理侦探抓错误靠的是一套正确应该长什么样的规则。不符合规则的就是错误第二站侦探的破案宝典——文法规则代码侦探要破案手里得有一本破案宝典。这本宝典里写的就是**“正确的代码应该长什么样的规则**——也就是我们之前学过的文法”。我们用一个超级简单的例子来说明。假设有一种特别简单的代码它的规则破案宝典是这样的规则1 一个完整的算式 数字 运算符 数字 规则2 数字 可以是 0、1、2、3、4、5、6、7、8、9 规则3 运算符 可以是 、-、×、÷我们读一读这本宝典规则1说一个正确的算式必须是数字 运算符 数字这样的结构。比如3 5。规则2说数字只能是 0 到 9 这些。规则3说运算符只能是加减乘除这几个。打个比方这本破案宝典就像妈妈给你定的出门规则 必须穿上衣、穿裤子、穿鞋子三样齐全才能出门。如果你只穿了上衣忘了穿裤子那就不符合规则不能出门代码侦探也一样它拿着宝典检查代码是不是三样齐全、顺序正确。现在侦探拿着这本宝典就可以开始破案啦第三站侦探破案实录——抓住第一个错误我们来看一个真实的案发现场。程序员写了这样一句代码3 咦这看起来怪怪的让我们看看侦探是怎么发现问题的。侦探拿出破案宝典开始一个字一个字地检查就像你读句子一样从左往右一个一个看 检查第 1 个3侦探翻开宝典规则1说算式要先是个数字。侦探看了看3又翻翻规则2“数字可以是 0 到 9”。3在里面侦探点点头“嗯第一个是数字 3符合规则✅ 继续往下查。” 检查第 2 个规则1说数字后面应该跟一个运算符。侦探看了看又翻翻规则3“运算符可以是 - × ÷”。在里面侦探又点点头“嗯第二个是运算符 符合规则✅ 继续往下查。” 检查第 3 个发现问题规则1说运算符后面应该再跟一个数字。侦探满怀期待地去看第三个……结果第三个竟然又是一个运算符侦探猛地停下来皱起眉头 “等等这里不对劲按照规则1运算符后面应该跟一个数字可是这里跟的却是另一个运算符这不符合宝典里的规则” 抓到错误啦侦探立刻吹响哨子大声报告“报告第 3 个位置发现语法错误这里应该是一个数字但出现的却是运算符”你看侦探就是这样拿着规则宝典一个一个地对照检查一旦发现哪里和规则对不上就立刻抓住它报告错误这就是代码侦探破案的核心办法对照规则逐个检查发现不符合的就是错误第四站侦探破案的三大法宝通过刚才的破案我们发现侦探有三个厉害的法宝。我们一个一个来认识。 法宝一“我现在期待什么”侦探最厉害的地方是它心里时刻有一个期待——它知道下一个应该出现什么。看完数字3它就期待“下一个应该是运算符。”看完运算符它就期待“下一个应该是数字。”一旦实际出现的东西和它的期待不一样侦探立刻就知道——出错了打个比方这就像你在等公交车 。你看了时刻表规则知道 3 点钟应该来一辆 5 路车期待。结果 3 点钟来的却是一辆 8 路车你一下子就发现不对呀这不是我等的车“——这就是期待和实际对不上发现了错误”。 法宝二“逐个检查绝不偷懒”侦探检查代码是一个一个、从头到尾地仔细看绝不跳过任何一个。这一点特别重要因为错误可能藏在任何地方侦探只有每个都认真检查才不会漏掉狡猾的错误。打个比方这就像老师检查你的作业 一道题一道题地批改绝不会跳过某一道。这样才能发现所有的错误一个都不放过 法宝三“记住自己走到哪了”侦探在检查的时候心里一直记着我现在查到第几个了“前面查过的都对不对”。这样当它发现错误时就能准确地告诉你“错误在第 3 个位置”而不是含含糊糊地说反正有错。打个比方这就像你读一本书 要用手指点着读到的地方或者夹一个书签。这样你随时知道我读到哪一页了。侦探也用类似的办法记住自己检查到了哪里。好啦侦探的三大法宝我们都认识了代码侦探的三大法宝 │ ├── 心里有期待知道下一个该出现什么 ├── 逐个检查从头到尾一个不漏 └── 记住位置知道自己查到哪了第五站侦探能抓住哪些坏蛋代码里的错误就像各种各样的小坏蛋。侦探能抓住好多种坏蛋哦我们来看几个常见的坏蛋一缺东西少了一样比如算式3 写到这里就没了。侦探查完期待后面有个数字结果……后面什么都没有了侦探报告“喂运算符后面应该有个数字可是你的算式到这里就结束了少了一个数字” 打个比方就像你出门只穿了上衣忘了穿裤子。妈妈一眼就看出来你少穿了裤子坏蛋二多东西多了一样比如算式3 5 5最后多了一个5。侦探查完3 5觉得算式应该结束了结果后面又冒出来一个5侦探报告“咦算式本该结束了可是后面多出来一个 5这是哪来的” 打个比方就像你的书包里本该装 3 本书结果多了一本不该带的漫画书。老师一翻就发现这本多余的怎么在这坏蛋三顺序乱了位置不对比如算式 3 5把运算符放到了最前面。侦探一开始就期待先来个数字结果第一个竟然是运算符侦探报告“不对第一个应该是数字你怎么把运算符放最前面了顺序错啦” 打个比方就像句子吃苹果我把词的顺序搞乱了听起来特别别扭。侦探一下就发现这顺序不对劲坏蛋四用了不认识的东西比如算式3 5中间用了个。侦探翻遍宝典运算符里只有 - × ÷根本没有侦探报告“这个是什么呀我的宝典里根本没有它这是个不认识的符号” 打个比方就像玩游戏时有人拿出一张根本不存在的超级无敌卡。大家都说没有这种卡你犯规啦你看无论坏蛋怎么伪装——少了、多了、乱了、还是用了奇怪的东西——只要它不符合宝典里的规则侦探都能把它揪出来第六站侦探不只抓坏蛋还会指路代码侦探还有一个特别贴心的地方它抓住错误后不只是说你错了还会告诉你错在哪、可能怎么改比如前面那个3 的错误好的侦探会这样报告 错误报告 位置第 3 个符号 问题这里应该是一个数字但出现的却是运算符 建议请把这里改成一个数字比如 5你看它说得多清楚既告诉你错在哪第3个又告诉你为什么错应该是数字却是运算符还告诉你怎么改改成数字。打个比方这就像一位特别好的老师。她批改你的作文不是只画一个大红叉而是会在旁边写“这里有个错别字蓝’应该写成’篮’哦篮球的篮。” 这样你一看就明白马上就能改正正因为侦探这么贴心、这么会指路程序员叔叔阿姨们才能很快地找到自己代码里的错误把它们改正过来。所以这位代码侦探可是程序员最好的帮手呢第七站侦探在生活中藏在哪里这位了不起的代码侦探藏在我们生活的很多地方哦 藏在程序员的电脑里程序员写代码用的工具里都住着这样一位侦探。程序员每写一句代码侦探就悄悄检查一遍。一旦写错了代码下面立刻出现一条红色的波浪线就像 Word 里写错别字会有红线一样提醒程序员这里有错哦 藏在很多软件背后你用的手机 App、玩的电脑游戏在被制作出来的时候都经过了侦探的层层检查确保代码没有语法错误才能正常运行。网页能正常显示也是因为浏览器里的侦探检查过网页代码了。✍️ 它的表哥还藏在文字软件里你在电脑上写作文打错了字会出现红线语法不对会出现绿线——这就是侦探的表哥在工作它检查的是中文、英文的语法原理和代码侦探是一样的拿着规则逐个检查发现不对的就标出来可以说只要是需要检查对不对的地方几乎都有这位侦探或它的亲戚在默默工作大冒险结束我们一起回顾朋友你太了不起啦今天你跟着代码侦探完成了一次精彩的破案大冒险让我们一起回顾这次冒险的收获侦探破案大冒险·圆满成功 │ ├── ️ 代码侦探是谁 │ 就是语法分析器 │ 专门抓代码里的语法错误 │ ├── 破案宝典 │ 就是文法规则 │ 写着正确的代码应该长什么样 │ ├── 怎么破案 │ 拿着宝典一个一个对照检查 │ 发现不符合规则的就抓住它 │ ├── 侦探三大法宝 │ 心里有期待知道下一个该是什么 │ 逐个检查从头到尾一个不漏 │ 记住位置知道查到哪了 │ ├── 能抓的坏蛋 │ 缺东西、多东西、顺序乱、用了不认识的符号 │ ├── ️ 贴心指路 │ 不只说错了还告诉你错在哪、怎么改 │ └── 生活中的侦探 藏在程序员的电脑里红波浪线 藏在各种软件、网页背后 它的表哥还藏在写作软件里姐姐最想让你记住的一句话是语法分析器代码侦探发现错误的秘密就是手里拿着一本正确应该长什么样的规则宝典从头到尾一个一个地对照检查。心里时刻期待着下一个该出现什么一旦实际出现的和期待的对不上就抓住它报告错误你看代码侦探一点儿都不神秘它抓错误的办法其实和你找错别字检查句子通不通顺是一模一样的——心里有一把正确的尺子拿这把尺子去量量出不一样的就是错误电脑侦探唯一比我们厉害的地方就是它检查得飞快而且特别仔细、不怕累可以一口气检查上万行代码一个错误都不放过今天你不仅认识了这位了不起的代码侦探还亲眼看着它一步步破了案甚至学会了它的三大法宝——这些可是大学里才教的知识哦你真的太棒啦如果这次还有哪个小地方没看懂没关系你就告诉姐姐哪一站、哪个地方看不懂姐姐就专门给你讲那一个地方讲得更慢、更细、更好懂你能从头到尾完成这次侦探大冒险真的真的超级超级棒姐姐为你竖起大大的拇指还记得我们之前学的文法和语法树吗今天的代码侦探正是靠着文法这本宝典来破案而它检查通过的代码就会被画成漂亮的语法树你看我们学过的知识就像好朋友一样手拉手地一起工作呢将来你长大学编程的时候这位代码侦探一定会成为你最好的帮手帮你揪出代码里那些调皮的小错误今天又是你成为小小程序员的精彩一步我们下次冒险再见啦