Schedule
Sep 18 - Begin looking at chapter 4 semantic analysis.
Sep 25 - Look into implementing a toy calculator language (perhaps propositional logic)
building both a parser and and a semantic analyzer.
Oct 2 - Finish that project.
Oct 9 - Begin my main design project by drafting a specification of the language
Look at chapter 6 and get a sense of how my language will handle control flow.
Oct 16 - Look at chapter 7 and get a sense of how my language will handle types
and look at type systems in general.
Oct 23 - Look at chapter 8 and get a sense of how my language will handle subroutines.
Also look into Lisp Macros and get a better understanding of them and whether
I want them in my design.
Oct 30 - Look at chapter 9 and get a sense of how my language will handle data abstraction.
(I'm thinking about prototypal inheritance)
Nov 6 - Look at chapter 10 on functional languages and see what it has to offer to the
functional aspects of my design. Begin working on implementation details of my
design.
Nov 13 - Look at chapter 14 and use it to further inform my implementation planning
Nov 20 - Begin working on an implementation.
Nov 27 - Continue.
Dec 4 - Have some clear benchmark to report for the end of the semester.
Break - Grind.
programming pragmatics
Oct 22
- some thoughts on hot cocoa lisp syntax:
(call foo bar x y) ;; foo.bar(x,y)
(get foo bar) ;; foo.bar ;; or (dot foo bar) ?
(.bar foo) ;; ? just call ? both??
Nov 13
Looking at more resources. These look interesting:
- Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages ; Terence Parr (Jim now has Kindle)
- Design Concepts in Programming Languages ; Turbak, Gifford, Sheldon
Sam is talking about having different syntax
for functions/methods/objects/hashtables defined originally
in JavaScript vs defined in HotCocoaLisp.
Jim suggested coming up with sample programs in JavaScript, Scheme, and Sam's language (HotCocoaLisp) for comparison.
End of Semester Progress Report
I have attached my progress report as both a
pdf and a
generated HTML document: