• 青玉白露
    2021-08-09
    这门课我追定了!宫老师加紧更新哈,内容很赞

    作者回复: 多谢支持!

    
    7
  • 千无
    2021-08-10
    很赞,课后习题一定要做,这才是这门课的精髓,实践它掌握它,课就超值

    作者回复: 非常好,这门课就是提倡动手实践的!

    
    1
  • 全国第一菜
    2021-08-10
    偶然间习得宫老师的前两门课,如获至宝,对个人提升显著。今天看到开新课了,第一时间来支持,因为知道自己又要变强了!!加油

    作者回复: 谢谢肯定,加油!

    
    1
  • 有学识的兔子
    2021-08-11
    给宫老师点赞,老师提供出来的课程都是夯实编程能力的知识。工作中功能业务围绕业务展开,基于成熟的框架设计模式做功能开发或局部优化,过程中也隐约感受缺失对编程世界整体了解带来的麻烦。之前也学习了一点点宫老师《编译原理之美》,很庆幸感受这门实战课。Fighting !

    作者回复: 谢谢肯定,一起Fighting!

    
    
  • _______R
    2021-08-11
    宫老师,我之前看过一点点 ts,现在主学 go,今天刚把 01 的代码用 go 重写,可以提交到码云上吗

    作者回复: 可以呀。你建一个自己的仓库,可以把链接分享出来!

    共 2 条评论
    
  • qinsi
    2021-08-10
    if嵌套看着脑阔疼,建议扩充token类型,增加一些helper方法: ```typescript /** * 解析函数调用 * 语法规则: * functionCall = Identifier "(" parameterList? ")" ";" * parameterList = StringLiteral ("," StringLiteral)* */ private parseFunctionCall(): FunctionCall | undefined { if (!this.hasNext(TokenKind.Identifier)) return; const funcName = this.consume(TokenKind.Identifier); this.consume(TokenKind.LParen); const params = []; if (this.hasNext(TokenKind.StringLiteral)) { params.push(this.consume(TokenKind.StringLiteral)); while (this.hasConsumed(TokenKind.Comma)) { params.push(this.consume(TokenKind.StringLiteral)); } } this.consume(TokenKind.RParen); this.consume(TokenKind.Semi); return new FunctionCall(funcName, params); } } ```
    展开

    作者回复: 没问题,你可以修改优化一下。 事实上,在后面的章节中,这些代码的结构就修改了,变成了直线式的代码,同时增加了语法错误的处理能力。 这一节的代码,是为了尽量避免太多功能,尽量避免复杂化。

    
    
  • 被讨厌的勇气
    2021-10-15
    递归思想,在程序中常见的实现是:自己调用自己,即函数调用自身。 递归思想的本义是:将一个复杂问题分解成规模较小的几个子问题。从递归思想的角度来看,递归下降算法将语法分析分解为函数声明分析、函数调用分析,且子问题可以进一步分解,所以称之为“递归”。
    
    5
  • 张贺
    2021-08-11
    代码中RefResolver中的visitFunctionBody方法不应该return吧
    共 2 条评论
    4
  • 奋斗的蜗牛
    2021-08-16
    期待后面后端的内容,一直卡在这块,找不到学习的思路,老师水平真高,深入浅出!!
    
    2
  • Geek_9a1bc6
    2021-08-26
    代码node命令执行没问题,用tsc命令编译报错: Type 'void' is not assignable to type 'FunctionCall'. 有没有遇到的童鞋?
    
    1