목차
Learning Objectives
Understand what grammars are
Write your own grammars from a specification
Know what Algebraic Data Types are
Define your own Algebraic Data Types (in Scala)
Apply pattern matching in (Scala) programs
Create abstract syntax tree from programs given a grammar (EXAM QUESTION)
Know what s-expressions are
Write simple parsers
Syntax

Syntax: the structure of program phrases in a language
Semantics: the meaning of a program
Abstraction: a feature of a programming language which allows a certain type of expression.
A grammar describes the syntax of a language
Syntax defines what your abstraction looks like
Grammars
BNF Grammar

E is a number and they can add and multiply.
BNF grammars tend to be very imprecise
Context-Free Syntax (SDF)
The recipe for parsing and disambiguation (명확화)

Lexical syntax (SDF)
The shape of the lexemes / words / tokens of a language


Abstract Syntax Tree
The abstract syntax of a program represents its structure and abstracts from irrelevant syntactic details.
AST: A tree structure for representing programs, which abstracts from irrelevant syntactic details. It removes the irrelevant syntactic details and leaves a tree as a convenient representation to give meaning to a program.


AST Flat Form

얘는 (1 + (2 * 3) ) + (4 * 5)
Algebraic Data Types
Algebraic Data Type: Inductive definition of a type formed by combining other types, in a way that allows one to do pattern matching. E.g. Records in Java and case classes in Scala



Inductive Definitions

Example

Pattern Matching Example

Pattern Matching: An abstraction in programming languages which allows you to match structurally to input terms (ADTs), and define behaviors depending on the shape or content of the input.
S-Expressions


S-Expression Parsing

'학교 > CPL' 카테고리의 다른 글
| Lecture 4: Functions (1) | 2024.03.27 |
|---|---|
| CPL 1-2: Semantics and Transformations (0) | 2024.03.26 |
| Lecture 3: Semantics & Transformations (1) | 2024.03.26 |
| CPL 1 : Syntax and Parsing (1) | 2024.03.25 |
| Lecture 1: Introduction (0) | 2024.03.19 |
댓글