Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Coursera

Programming Language Design and Frontend Foundations

Packt via Coursera

Overview

Google, IBM & Meta Certificates – 40% Off
One Coursera Plus subscription covers most Professional Certificates on Coursera.
Unlock All Certificates
Discover the principles of programming language design and learn how to build the foundational components of a compiler, including scanning, parsing, and syntax tree construction. This course guides you through the essential steps to define, analyze, and process programming languages. This course introduces the motivations for creating new programming languages and explores the process of designing language features and control flow. Learners will gain practical experience in building the frontend of a compiler, including lexical analysis, parsing, and syntax tree construction. By the end of the course, you will understand how to specify language syntax, implement scanners and parsers, and represent program structure using syntax trees. Through clear explanations, practical examples, and self-assessment quizzes, this course provides a step-by-step guide to designing a programming language and implementing its frontend components. Learners will build a strong foundation for further exploration of compiler construction and language implementation. This course is part one of a three-course Specialization designed to build a complete and cohesive understanding of the subject. While it offers valuable skills on its own, you'll gain the most benefit by progressing through all three courses as a structured learning journey. This course is based on Build Your Own Programming Language, by Clinton L. Jeffery.

Syllabus

  • Why Build Another Programming Language?
    • This module explores the motivations and practical considerations for creating a new programming language. Learners will gain an understanding of when and why building a language is necessary, how to define requirements, and the differences between languages and libraries.
  • Programming Language Design
    • This module delves into the foundational aspects of programming language design, covering lexical and syntax rules, control flow, and program structure. Learners will gain an understanding of how to define and structure a language for consistency and usability. The module also explores practical considerations in creating a language specification.
  • Scanning Source Code
    • This module explores the process of scanning source code by teaching learners how to identify lexemes and tokens using regular expressions. It covers the practical implementation of scanners using UFlex and JFlex, and highlights the limitations of regular expressions in language processing tasks.
  • Parsing
    • This module explores the fundamentals of parsing, including the design of context-free grammars, the use of parser generators like iyacc and BYACC/J, and strategies for improving syntax error handling. Learners will gain practical skills in building and refining parsers to analyze programming language structures effectively.
  • Syntax Trees
    • This module provides an in-depth exploration of syntax trees, focusing on their construction, visualization, and debugging techniques. Learners will gain practical skills in using tools like GNU Make and Dot to represent and manipulate parsed programs. The module also covers the role of syntax trees in compiler design and how they support semantic analysis and code generation.

Taught by

ExpertEdge - Course Instructors

Reviews

Start your review of Programming Language Design and Frontend Foundations

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.