Tags
Language
Tags
May 2024
Su Mo Tu We Th Fr Sa
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1

Develop An Interpreter Using Go Programming

Posted By: ELK1nG
Develop An Interpreter Using Go Programming

Develop An Interpreter Using Go Programming
Published 6/2023
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 5.29 GB | Duration: 14h 28m

Build an interpreter from scratch

What you'll learn

Creating an Interpreter from Scratch

Understanding different steps in building an Interpreter

Learn to build Interpreter using Go Programming

Follow TDD when building Interpreter using Go

Create data structures like Arrays & Hash

Requirements

Experience using Go Programming

Description

Hello everyone welcome to the course Develop an Interpreter using Go Programming.This course is a comprehensive and practical guide that takes you on a journey of building your own interpreter using the Go programming language. This course is inspired by the great book Writing An Interpreter In Go by Thorsten Ball. All credit to him as well. We will demystify the complex world of interpreters in this course.The course begins by introducing the fundamental concepts of interpreters and programming languages, making it accessible to both beginners and experienced developers. We will build an interpreter using Go for a custom programming language called Monkey through a hands-on approach.we will understand key concepts such as lexical analysis, parsing, and evaluating expressions. In the course we will learn how to design and implement a lexer and a recursive descent parser, providing you learners with a solid foundation in language processing techniques.The course will help developers seeking to deepen their understanding of language implementation. We will use Go as it is simple and easy to use.During the process of developing an interpreter, we will also learn more advanced topics like closures, first-class functions, and error handling.By the end of the course, you would have hopefully gained a deep understanding of how interpreters work and the skills to build your own programming language, opening up new possibilities for exploration and creativity in the world of software development.

Overview

Section 1: Introduction

Lecture 1 Introduction

Lecture 2 Birds eye view on Interpreter

Lecture 3 Installation

Lecture 4 Monkey Programming Language Introduction

Section 2: Lexical Analysis

Lecture 5 Lexer Stage

Lecture 6 Program we will use for lexing

Lecture 7 Manual Interpretation

Lecture 8 Token Type Struct

Lecture 9 Token type constants

Lecture 10 Lexer Testing

Lecture 11 Lexer new function

Lecture 12 Reading Character helper function

Lecture 13 Get the Next Token

Lecture 14 Updating the test for NextToken method

Lecture 15 Updating NextToken method

Lecture 16 Looking up Identifiers

Lecture 17 Ignoring Whitespace

Lecture 18 Reading Numbers

Lecture 19 Add more single character tokens

Lecture 20 Updating Lexer to parse newly added single character tokens

Lecture 21 Update test input with conditional expressions

Lecture 22 Adding new keywords to make test pass

Lecture 23 Interpreting Multiple Special Characters

Lecture 24 Adding an REPL

Section 3: Parser Phase

Lecture 25 Parser Introduction

Lecture 26 Note on Parser Generators

Lecture 27 Parser Types and selection

Lecture 28 Let Statements Intro

Lecture 29 AST Package with interfaces

Lecture 30 Handling let statement

Lecture 31 Getting started with Parser Package

Lecture 32 Recursive Descent using Pseudo Code

Lecture 33 Test for Parsing Let Statement Program

Lecture 34 Implementing Parse Program Logic

Lecture 35 Adding errors field to Parser

Lecture 36 Update expect peek method to add errors

Lecture 37 Add Return Statement Struct in AST Package

Lecture 38 Add test for Return Statment

Lecture 39 Update Parser to parse return statment

Lecture 40 Challenges in Parsing Expressions

Lecture 41 Expressions in Monkey Programming Language

Lecture 42 Adding Expression Statement Struct

Lecture 43 Add String Method to Node Interface

Lecture 44 Testing String method

Lecture 45 Starting implementation for Pratt Parser

Lecture 46 Add helper methods to add infix and prefix to a token type

Lecture 47 Add test for Parsing Identifiers

Lecture 48 Adding Precedence Constants

Lecture 49 Completing Parsing an Identifier

Lecture 50 Test for parsing Integer Literal

Lecture 51 Code to parse Integer Literal

Lecture 52 Add test for parsing Prefix Operator

Lecture 53 Creating Prefix Expression AST Type

Lecture 54 Finish implmenting parsing logic for Parse Expression

Lecture 55 Writing test case for Infix Expression

Lecture 56 Lets add InfixExpression type

Lecture 57 Implementation of Infix Expression Methods

Lecture 58 Adding Operator Precedence Test case

Lecture 59 Going over pratt parser algorithm

Lecture 60 Pratt Parser Call stack

Lecture 61 Refactor Parser test

Lecture 62 AST for Boolean

Lecture 63 Implementation of parser logic for Boolean expression

Lecture 64 Test and Implementation of Grouped Expression

Lecture 65 If Expression AST Representation

Lecture 66 If expression test cases

Lecture 67 Implementation of If expression

Lecture 68 Implementation of else block in if expression

Lecture 69 AST for function literal

Lecture 70 Add test case for parsing function literal

Lecture 71 Function Literal Parser Implementation

Lecture 72 AST structure for call expression

Lecture 73 Test case for parsing call expression

Lecture 74 Implementation of parsing call expression

Lecture 75 Fix precedence of call expression infix fn

Lecture 76 Test case for call expression argument parsing

Lecture 77 Revisting Let and Return Statement parsing to complete a TODO

Lecture 78 Updating REPL to make use of Parser package

Section 4: Evaluation

Lecture 79 Introduction to Evaluation

Lecture 80 Strategies for Evaluation

Lecture 81 Evaluation Pseudocode

Lecture 82 Representing Objects

Lecture 83 New Object Interface

Lecture 84 Integer Object

Lecture 85 Boolean and Null Objects

Lecture 86 Test for Evaluating Integer Expression

Lecture 87 Initial implementation of Eval for parsing Integer Expressions

Lecture 88 Completing the Read, Evaluate, Print Loop

Lecture 89 Implementation for Boolean object

Lecture 90 Implementation for Null Object

Lecture 91 Evaluation of Prefix Operator Bang

Lecture 92 Evaluation of Prefix Operator Minus

Lecture 93 Evaluation of Integer Infix Part 1

Lecture 94 Evaluation of Integer Infix Part 2

Lecture 95 Infix Boolean Evaluation

Lecture 96 Evaluating Conditionals

Lecture 97 Evaluation of return type

Lecture 98 Fix for nested conditionals with return type

Lecture 99 Error Object

Lecture 100 Error Object Implementation Part 1

Lecture 101 Error Object Implementation Part 2

Lecture 102 Test for Let Statement Evaluation

Lecture 103 Adding Environment Object

Lecture 104 Completing Implementation of Let Statement Evaluation

Lecture 105 Basic Function Evaluation

Lecture 106 Evaluation of Function Part 2

Lecture 107 Evaluation of Function Part 3

Lecture 108 Evaluation of Function Part 4

Lecture 109 Completing implementation of Function Evaluation

Lecture 110 Reason for unwrapping

Lecture 111 Getting in touch with concept of closure

Lecture 112 Section Conclusion

Section 5: Extending the Interpreter

Lecture 113 Introduction

Lecture 114 Test case for String data type (lexer phase)

Lecture 115 Finishing Lexer Phase for String data type

Lecture 116 Parser phase for String data type

Lecture 117 Evaluation Phase for String

Lecture 118 String Concatenation Implementation

Lecture 119 Builtin object

Lecture 120 Test case for len builtin function

Lecture 121 implementation of builtin len function

Lecture 122 Introduction to Array

Lecture 123 Lexer Phase of Array

Lecture 124 Parsing Phase of Array

Lecture 125 Parsing Index Expressions

Lecture 126 Evaluation of Array Literal

Lecture 127 Evaluation of Array Index Expression

Lecture 128 Modifying len builtin for arrays

Lecture 129 First and Last Builtin Functions

Lecture 130 Rest and Push Builtin Functions

Lecture 131 Hash Lexer Stage

Lecture 132 Hash Parsing Part 1

Lecture 133 Hash Parsing Part 2

Lecture 134 Hash Key

Lecture 135 Object System for Hash

Lecture 136 Evaluation of Hash

Lecture 137 Getting done with Hash data structure

Lecture 138 Final BuiltIn Function - puts

Section 6: Conclusion

Lecture 139 Conclusion

Lecture 140 Bonus Lecture

Beginner Go Programmers interested to understand how to build an Interpreter