Building a Parser from scratch
Course
Online
Description
-
Type
Course
-
Methodology
Online
-
Start date
Different dates available
Parsing or syntactic analysis is one of the first stages in designing and implementing a compiler. A well-designed syntax of your programming language is a big motivation why users would prefer and choose exactly your language.Recursive descent parsers are the group of parsers that are widely used in practice in many production programming languages. In contrast with automated parsing algorithms, the manual implementation allows having full control over the parsing process and handling complex constructs, which may not be possible in the automatic parsers.Besides, implementing a full manual parser from scratch allows understanding and seeing this process from the inside, demystifying internal structures, and turning building parsers into an interesting engineering task.In the Building a Parser from the scratch class we dive into pure practical implementation, building and learning different aspects of parsers.In this class, you will learn the concept of Recursive descent parsing, understand what is Tokenizer and how it cooperates with the Parser module, learn what is Abstract Syntax Tree (AST), and how to have different formats of these ASTs, what is “lookahead” and the predictive parsing, and eventually build a parser for a full programming language, similar to Java or JavaScript.Implementing a parser would also make your practical usage of other programming languages more professional.Who this class is for?This class is for any curious engineer, who would like to gain skills in building complex systems (and building a parser for a programing language is a pretty advanced engineering task!), and obtain transferable knowledge for building such systems.
If you are interested specifically in compilers, interpreters, and source code transformation tools, then this class is also for you.
The pre-requisites for this class are the basic data structures and algorithms: trees, lists, traversal, and regular expressions.
ing with regular...
Facilities
Location
Start date
Start date
About this course
Recursive descent parsers
Build a parser for a full programming language
Top-down parsing
Abstract Syntax Trees (AST)
Different AST formats
Left-recursion
Tokenizer and Tokens
Regular Expressions spec
Reviews
This centre's achievements
All courses are up to date
The average rating is higher than 3.7
More than 50 reviews in the last 12 months
This centre has featured on Emagister for 6 years
Subjects
- Oriented Programming
- Object oriented Programming
- Programming
- Engineering
- Systems
- Project
- Syntax
- Primary
- Algorithms
- Object-oriented training
- Object oriented training
Course programme
- Course overview and agenda
- Parsing pipeline
- Tokenizer module (Lexical analysis)
- Parser module (Syntactic analysis)
- Abstract Syntax Tree (AST)
- Regular expression notation
- Backus-Naur form (BNF) notation
- Grammars and productions
- Hand-written and Automatic parsers
- Syntax: language-agnostic parser generator
- The Letter programming language
- Numeric literals
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Course overview and agenda
- Parsing pipeline
- Tokenizer module (Lexical analysis)
- Parser module (Syntactic analysis)
- Abstract Syntax Tree (AST)
- Regular expression notation
- Backus-Naur form (BNF) notation
- Grammars and productions
- Hand-written and Automatic parsers
- Syntax: language-agnostic parser generator
- The Letter programming language
- Numeric literals
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Course overview and agenda
- Parsing pipeline
- Tokenizer module (Lexical analysis)
- Parser module (Syntactic analysis)
- Abstract Syntax Tree (AST)
- Regular expression notation
- Backus-Naur form (BNF) notation
- Grammars and productions
- Hand-written and Automatic parsers
- Syntax: language-agnostic parser generator
- The Letter programming language
- Numeric literals
- Course overview and agenda
- Parsing pipeline
- Tokenizer module (Lexical analysis)
- Parser module (Syntactic analysis)
- Abstract Syntax Tree (AST)
- Regular expression notation
- Backus-Naur form (BNF) notation
- Grammars and productions
- Hand-written and Automatic parsers
- Syntax: language-agnostic parser generator
- The Letter programming language
- Numeric literals
- Course overview and agenda
- Parsing pipeline
- Tokenizer module (Lexical analysis)
- Parser module (Syntactic analysis)
- Abstract Syntax Tree (AST)
- Regular expression notation
- Backus-Naur form (BNF) notation
- Grammars and productions
- Hand-written and Automatic parsers
- Syntax: language-agnostic parser generator
- The Letter programming language
- Numeric literals
- Course overview and agenda
- Parsing pipeline
- Tokenizer module (Lexical analysis)
- Parser module (Syntactic analysis)
- Abstract Syntax Tree (AST)
- Regular expression notation
- Backus-Naur form (BNF) notation
- Grammars and productions
- Hand-written and Automatic parsers
- Syntax: language-agnostic parser generator
- The Letter programming language
- Numeric literals
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizer module (Lexical analysis)
- Number and String tokens
- Program AST node
- Lookahead
- Numeric literals
- String literals
- Finite state machine
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- Tokenizers as Finite state machines
- Regular Expressions notation
- Tokenizer spec
- Generic getNextToken
- Single-line and Multi-line comments
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- Block statement
- Nested scopes
- Empty statement
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- Block statement
- Nested scopes
- Empty statement
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- TDD: Test-driven development
- AST Explorer
- Statements and Statement list
- Left-recursion
- Recursion-to-loop conversion to handle left-recursive grammars
- Block statement
- Nested scopes
- Empty statement
- Block statement
- Nested scopes
- Empty statement
- Block statement
- Nested scopes
- Empty statement
- Block statement
- Nested scopes
- Empty statement
- Block statement
- Nested scopes
- Empty statement
- Block statement
- Nested scopes
- Empty statement
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- AST formats
- Node handles vs. Node factories
- Default AST factory
- S-expression AST factory
- AST transforms
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- Binary expressions
- Additive expression
- Multiplicative expression
- Primary expression
- Operator precedence
- Parenthesized expression
- Call Expression
- Function calls
- Method calls
- Call | Arguments
- Chained calls
- Call Expression
- Function calls
- Method calls
- Call | Arguments
- Chained calls
- Object-oriented programming
- Class declaration
- New expression
- Super calls
- Methods
- Object-oriented programming
- Class declaration
- New expression
- Super calls
- Methods
- Object-oriented programming
- Class declaration
- New expression
- Super calls
- Methods
Additional information
Building a Parser from scratch
