SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
Let's Write a Type
Checker
Ionuț G. Stan — I T.A.K.E. — May 2015
• Part 1
• Compilers Overview
• Type Checking vs Type Inference
• Vehicle Language
• Wand's Type Inference Algorithm
• Part 2
• Live Demonstration
The Plan
Compilers Overview
Compiler
Compilers Overview
Source Code
Compiler
Compilers Overview
Source Code
Compiler
(fn a => a) 2
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2 (function(a){return a;})(2);
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2 (function(a){return a;})(2);
Interpreter
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2 (function(a){return a;})(2);
Source Code
Interpreter
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2 (function(a){return a;})(2);
Source Code
Interpreter
(fn a => a) 2
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2 (function(a){return a;})(2);
Source Code Evaluation Result
Interpreter
(fn a => a) 2
Compilers Overview
Source Code Target Language
Compiler
(fn a => a) 2 (function(a){return a;})(2);
Source Code Evaluation Result
Interpreter
(fn a => a) 2 2
Compilers Overview
Compilers Overview
de T
Compiler
) 2 (functi
Parsing
de T
Compiler
) 2 (functi
Parser
Abstract Syntax Tree
de T
Compiler
) 2 (functi
Parser
Abstract Syntax Tree (AST)
Abstract Syntax Tree
de T
Compiler
) 2 (functi
Parser
APP
FUN
a VAR
a
INT
2
Abstract Syntax Tree (AST)
Code Generation
de T
Compiler
) 2 (functi
Parser CodeGen
APP
FUN
a VAR
a
INT
2
Abstract Syntax Tree (AST)
Many Intermediate Phases
de T
Compiler
) 2 (functi
Parser CodeGen
...
AST
Type Checking
de T
Compiler
) 2 (functi
Parser CodeGen
Type Checker
AST
Typed AST
...
Today's Talk
de T
Compiler
) 2 (functi
Parser CodeGen
Type Checker
AST
Typed AST
Today
Type Checking
vs
Type Inference
• Type Checking
• Ensures declared types are used consistently
• All types must be declared
• Traverse AST and compare def site with use site
• Type Inference
• Ensures consistency as well
• Types need not be declared, though; are deduced!
• Two main classes of algorithms
• We'll see one instance today
Type Checking vs Inference
Vehicle Language
• Surface Syntax
• What's the concrete syntax of the language
• Type System
• What types are supported by the language
Vehicle Language
1. Numbers: 1, 2, 3, ...
2. Booleans: true and false
3. Function expressions: fn a => a
4. Function application: inc 42 or 2 + 3
5. If expressions: if cond then t else f
Surface Syntax1
1 — a subset of Standard ML
1. Numbers: 1, 2, 3, ...
2. Booleans: true and false
3. Function expressions: fn a => a
4. Function application: inc 42 or 2 + 3
5. If expressions: if cond then t else f
Surface Syntax1
1 — a subset of Standard ML
1. Numbers: 1, 2, 3, ...
2. Booleans: true and false
3. Anonymous functions (lambdas): fn a => a
4. Function application: inc 42 or 2 + 3
5. If expressions: if cond then t else f
Surface Syntax1
1 — a subset of Standard ML
1. Numbers: 1, 2, 3, ...
2. Booleans: true and false
3. Anonymous functions (lambdas): fn a => a
4. Function application: inc 42
5. If expressions: if cond then t else f
Surface Syntax1
1 — a subset of Standard ML
1. Numbers: 1, 2, 3, ...
2. Booleans: true and false
3. Anonymous functions (lambdas): fn a => a
4. Function application: inc 42
5. If expressions: if cond then t else f
Surface Syntax1
1 — a subset of Standard ML
6. Let blocks/expressions:



let

val name = ...

in

name

end
Surface Syntax1
1 — a subset of Standard ML
Small Example
let
val inc = fn a => a + 1
in
inc 42
end
1. Integer type: int
2. Boolean type: bool
3. Function type: int -> bool
4. Generic type variables: 'a, 'b, 'c, etc.
Language Types
1. Integer type: int
2. Boolean type: bool
3. Function type: int -> bool
4. Generic type variables: 'a, 'b, 'c, etc.
Language Types
1. Integer type: int
2. Boolean type: bool
3. Function type: int -> bool
4. Generic type variables: 'a, 'b, 'c, etc.
Language Types
1. Integer type: int
2. Boolean type: bool
3. Function type: int -> bool
4. Generic type variables: 'a, 'b, 'c, etc.
Language Types
Today's Algorithm
Overview
Wand's Algorithm
Overview
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
isZero IF
APP
VAR
isZero
INT
1
INT
2
INT
3
fn isZero =>
if isZero 1
then 2
else 3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
IF
APP
AR
ero
INT
1
INT
2
INT
3
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUN
IF
APP
AR
ero
INT
1
INT
2
INT
3
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4t1
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
t1
t5
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
t1
t5
t4
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
≡ int
t1
t5
t4
t6
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
≡ int
≡ int
t1
t5
t4
t6
t7
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
≡ int
≡ int
≡ t3
t1
t5
t4
t6
t7
t6
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
≡ int
≡ int
≡ t3
≡ t3
t1
t5
t4
t6
t7
t6
t7
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ t1 → t3
t1
t5
t4
t6
t7
t6
t7
t2
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
≡ t5 → t4
≡ int
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ t1 → t3
t1
t5
t4
t6
t7
t6
t7
t2
Constraint Set
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
≡ t5 → t4
≡ int
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ t1 → t3
t1
t5
t4
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: t5 → t4t1≡ int
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ t1 → t3
t5
t4
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: t5 → t4t1≡ int
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ (t5 → t4) → t3
t5
t4
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: t5 → t4
: int
t1
t5
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ (t5 → t4) → t3
t4
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → t4
: int
t1
t5
≡ bool
≡ int
≡ int
≡ t3
≡ t3
≡ (int → t4) → t3
t4
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → t4
: int
: bool
t1
t5
t4
≡ int
≡ int
≡ t3
≡ t3
≡ (int → t4) → t3
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
t1
t5
t4
≡ int
≡ int
≡ t3
≡ t3
≡ (int → bool) → t3
t6
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
t1
t5
t4
t6
≡ int
≡ t3
≡ t3
≡ (int → bool) → t3
t7
t6
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
t1
t5
t4
t6
≡ int
≡ t3
≡ t3
≡ (int → bool) → t3
t7
int
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
t1
t5
t4
t6
t7
≡ t3
≡ t3
≡ (int → bool) → t3
int
t7
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
t1
t5
t4
t6
t7
≡ t3
≡ t3
≡ (int → bool) → t3
int
int
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
: int
t1
t5
t4
t6
t7
t3
≡ t3
≡ (int → bool) → t3
int
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
: int
t1
t5
t4
t6
t7
t3
≡ int
≡ (int → bool) → int
int
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
: int
t1
t5
t4
t6
t7
t3
≡ int
≡ (int → bool) → int
int
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
: int
t1
t5
t4
t6
t7
t3
≡ (int → bool) → intt2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
: int → bool
: int
: bool
: int
: int
: int
: (int → bool) → int
t1
t5
t4
t6
t7
t3
t2
Constraint Set Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
FUNt2
isZerot1
IFt3
APPt4
VARt1
isZero
INTt5
1
INTt6
2
INTt7
3
: int → bool
: int
: bool
: int
: int
: int
: (int → bool) → int
t1
t5
t4
t6
t7
t3
t2
Solution Map
Wand's Algorithm Overview
Type
Annotation
Constraint
Generation
Constraint
Solving
Parsing
AST
fn isZero =>
if isZero 1
then 2
else 3
(int -> bool) -> int
• As I said, there are two main classes
• Constraint-based ones. We've just seen one
example — Wand's algorithm
• Substitution-based ones, where constraint
generation and solving are not two separate
processes, they are interleaved. Example: the
classic Hindley-Milner Algorithm W.
Type Checking Algorithms
Live Demonstration
https://github.com/igstan/itake-2015
Thank You!
• Sunil Kothari and James L. Caldwell. Type Reconstruction Algorithms - A Survey
• Mitchell Wand. A simple algorithm and proof for type inference.
• Bastiaan Heeren, Jurriaan Hage and Doaitse Swierstra. Generalizing Hindley-Milner Type Inference Algorithms
• Oleg Kiselyov and Chung-chieh Shan. Interpreting Types as Abstract Values
• Shriram Krishnamurthi. Programming Languages: Application and Interpretation, chapter 15
• Shriram Krishnamurthi. Programming Languages: Application and Interpretation, lecture 24
• Shriram Krishnamurthi. Programming Languages: Application and Interpretation, lecture 25
• Bastiaan Heeren. Top Quality Type Error Messages
• Stephen Diehl. Write You a Haskell, chapter 6
• Andrew Appel. Modern Compiler Implementation in ML, chapter 16
• Benjamin Pierce. Types and Programming Languages, chapter 22
• Martin Odersky. Scala by Example, chapter 16
• Danny Gratzer. https://github.com/jozefg/hm
• Arlen Cox. ML Type Inference and Unification!
• Radu Rugină. CS 312, Type Inference
Resources

Mais conteúdo relacionado

Mais procurados

System Programming Unit IV
System Programming Unit IVSystem Programming Unit IV
System Programming Unit IV
Manoj Patil
 
The Java Script Programming Language
The  Java Script  Programming  LanguageThe  Java Script  Programming  Language
The Java Script Programming Language
zone
 

Mais procurados (20)

New c sharp4_features_part_ii
New c sharp4_features_part_iiNew c sharp4_features_part_ii
New c sharp4_features_part_ii
 
System Programming Unit IV
System Programming Unit IVSystem Programming Unit IV
System Programming Unit IV
 
Interview questions
Interview questionsInterview questions
Interview questions
 
Parsing
ParsingParsing
Parsing
 
Parsing
ParsingParsing
Parsing
 
Syntactic analysis in NLP
Syntactic analysis in NLPSyntactic analysis in NLP
Syntactic analysis in NLP
 
Introduction
IntroductionIntroduction
Introduction
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive Parsing
 
The Java Script Programming Language
The  Java Script  Programming  LanguageThe  Java Script  Programming  Language
The Java Script Programming Language
 
The JavaScript Programming Language
The JavaScript Programming LanguageThe JavaScript Programming Language
The JavaScript Programming Language
 
C reference manual
C reference manualC reference manual
C reference manual
 
B.tech admission in india
B.tech admission in indiaB.tech admission in india
B.tech admission in india
 
Objective-C to Swift - Swift Cloud Workshop 3
Objective-C to Swift - Swift Cloud Workshop 3Objective-C to Swift - Swift Cloud Workshop 3
Objective-C to Swift - Swift Cloud Workshop 3
 
Javascript
JavascriptJavascript
Javascript
 
Module 11
Module 11Module 11
Module 11
 
Clean code
Clean codeClean code
Clean code
 
Compiler design syntax analysis
Compiler design syntax analysisCompiler design syntax analysis
Compiler design syntax analysis
 
Language for specifying lexical Analyzer
Language for specifying lexical AnalyzerLanguage for specifying lexical Analyzer
Language for specifying lexical Analyzer
 
C++
C++C++
C++
 
Learn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsLearn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & Loops
 

Destaque

Type checking
Type checkingType checking
Type checking
rawan_z
 
Data Type Conversion in C++
Data Type Conversion in C++Data Type Conversion in C++
Data Type Conversion in C++
Danial Mirza
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
Mir Majid
 

Destaque (12)

Type checking
Type checkingType checking
Type checking
 
Type checking in compiler design
Type checking in compiler designType checking in compiler design
Type checking in compiler design
 
Type Checking(Compiler Design) #ShareThisIfYouLike
Type Checking(Compiler Design) #ShareThisIfYouLikeType Checking(Compiler Design) #ShareThisIfYouLike
Type Checking(Compiler Design) #ShareThisIfYouLike
 
Ch6
Ch6Ch6
Ch6
 
Data Type Conversion in C++
Data Type Conversion in C++Data Type Conversion in C++
Data Type Conversion in C++
 
Compiler construction
Compiler constructionCompiler construction
Compiler construction
 
Three address code In Compiler Design
Three address code In Compiler DesignThree address code In Compiler Design
Three address code In Compiler Design
 
Lexical analyzer
Lexical analyzerLexical analyzer
Lexical analyzer
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 
Compiler Chapter 1
Compiler Chapter 1Compiler Chapter 1
Compiler Chapter 1
 
Type Casting in C++
Type Casting in C++Type Casting in C++
Type Casting in C++
 
Type conversions
Type conversionsType conversions
Type conversions
 

Semelhante a Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015

CS 280 Fall 2022 Programming Assignment 2 November.docx
CS 280 Fall 2022 Programming Assignment 2 November.docxCS 280 Fall 2022 Programming Assignment 2 November.docx
CS 280 Fall 2022 Programming Assignment 2 November.docx
richardnorman90310
 
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
venkatapranaykumarGa
 
Frequently asked questions in c
Frequently asked questions in cFrequently asked questions in c
Frequently asked questions in c
David Livingston J
 
4 lexical and syntax analysis
4 lexical and syntax analysis4 lexical and syntax analysis
4 lexical and syntax analysis
jigeno
 
Frequently asked questions in c
Frequently asked questions in cFrequently asked questions in c
Frequently asked questions in c
David Livingston J
 
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Structure-Compiler-phases information  about basics of compiler. PdfpdfStructure-Compiler-phases information  about basics of compiler. Pdfpdf
Structure-Compiler-phases information about basics of compiler. Pdfpdf
ovidlivi91
 

Semelhante a Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015 (20)

Pcd question bank
Pcd question bank Pcd question bank
Pcd question bank
 
Compiler design important questions
Compiler design   important questionsCompiler design   important questions
Compiler design important questions
 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compiling
 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compiling
 
Interm codegen
Interm codegenInterm codegen
Interm codegen
 
CS 280 Fall 2022 Programming Assignment 2 November.docx
CS 280 Fall 2022 Programming Assignment 2 November.docxCS 280 Fall 2022 Programming Assignment 2 November.docx
CS 280 Fall 2022 Programming Assignment 2 November.docx
 
COMPILER DESIGN- Introduction & Lexical Analysis:
COMPILER DESIGN- Introduction & Lexical Analysis: COMPILER DESIGN- Introduction & Lexical Analysis:
COMPILER DESIGN- Introduction & Lexical Analysis:
 
Compilers Design
Compilers DesignCompilers Design
Compilers Design
 
Lecture2 general structure of a compiler
Lecture2 general structure of a compilerLecture2 general structure of a compiler
Lecture2 general structure of a compiler
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 
Introduction to c
Introduction to cIntroduction to c
Introduction to c
 
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
 
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
 
Introduction to C Language - Version 1.0 by Mark John Lado
Introduction to C Language - Version 1.0 by Mark John LadoIntroduction to C Language - Version 1.0 by Mark John Lado
Introduction to C Language - Version 1.0 by Mark John Lado
 
Python by Rj
Python by RjPython by Rj
Python by Rj
 
Frequently asked questions in c
Frequently asked questions in cFrequently asked questions in c
Frequently asked questions in c
 
Introduction to golang
Introduction to golangIntroduction to golang
Introduction to golang
 
4 lexical and syntax analysis
4 lexical and syntax analysis4 lexical and syntax analysis
4 lexical and syntax analysis
 
Frequently asked questions in c
Frequently asked questions in cFrequently asked questions in c
Frequently asked questions in c
 
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Structure-Compiler-phases information  about basics of compiler. PdfpdfStructure-Compiler-phases information  about basics of compiler. Pdfpdf
Structure-Compiler-phases information about basics of compiler. Pdfpdf
 

Mais de Mozaic Works

Mais de Mozaic Works (20)

Agile Retrospectives
Agile RetrospectivesAgile Retrospectives
Agile Retrospectives
 
Developer Experience to Testing
Developer Experience to TestingDeveloper Experience to Testing
Developer Experience to Testing
 
Story mapping: build better products with a happier team
Story mapping: build better products with a happier teamStory mapping: build better products with a happier team
Story mapping: build better products with a happier team
 
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
 
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
 
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
 
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
 
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
 
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
 
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
 
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
 
Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...
Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...
Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
 
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
 
Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015
Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015
Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015
 
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
 
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
 

Último

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 

Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015