-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Mike Lam edited this page Mar 13, 2018
·
34 revisions
Welcome to the less-java wiki!
TODO list:
-
writing (weekly)
- draft to committee (3/20)
- comments from committee (3/27)
- final draft (4/3)
- due (4/10)
-
major feature: OOP
- passing objects as parameters
-
all: testsuite (3/27)
- external testing framework for invalid programs, crashes, hangs, regressions
- internal testing framework for language correctness
- reformat output from JUnit
-
documentation for future students
-
future work: reimplement Decaf static analysis
- duplicate symbols
- return/break locations
- expression types
- function parameters
- report line numbers
- type unification failures
-
future work: runtime exception handler
-
future work: add inferred type output flag
DONE:
- writing
- first draft (3/13)
- feature: OOP
- short example code (1/23)
- correct parsing (2/13)
- re-read EAC on objects (3/13)
- class definitions, member attributes, and instances (3/13)
- member methods and constructors (3/13)
- "this" references and inheritance (3/13)
- feature: list '[]' (ArrayList) (1/30)
- list :
() -> 'a list
- add/push/enqueue :
'a list -> 'a -> ()
- remove :
'a list -> 'a -> 'a
- pop/dequeue :
'a list -> 'a
- insert :
'a list -> int -> 'a -> ()
- removeAt:
'a list -> int -> ()
- get :
'a list -> int -> 'a
- set :
'a list -> int -> 'a -> ()
- size :
'a list -> int
- list :
- feature: set '{}' (HashSet): add/remove/contains, (union/intersection/difference?), size (1/30)
- set :
() -> 'a set
- set :
- feature: map '<>' (HashMap): put/get/remove, getKeys/containsKey, size (1/30)
- map :
() -> ('a,'b) map
- getKeys :
('a,'b) map -> 'a set
- map :
- fix negative numbers/unary operators (unop.lj example) (1/30)
- writing
- create Overleaf document and add Lam (1/23)
- write outline (1/30)
- major language feature: no procedural code at global scope (1/23)
- add 'global' variables initialized to constants
- fix variable scoping issue
- fix: floating point equality should be exact (1/23)
- major language feature: no procedural code at global scope
- enforce existence of main (1/16)
- feature: native data types (1/9)
- int (Integer)
- bool (Boolean)
- real (Double)
- string (String)
- design: collections (12/12)
- ready for competitive programming session (12/8)
- quick-and-easy deployment
- problems
- hello world
- find largest number
- oddgnome
- 3n+1
- fix function-local variable declarations (12/5)
- major feature: debug type inference
- fix non-halting problem (11/28)
- instantiate universal types at function calls (11/28)
- feature: scanner-based input (11/28)
- refactoring:
Program -> ( Func | Stmt | Test ) *
(10/24) - major feature: unit tests (10/17)
- test harness for compiled program output (10/17)
- feature: vim highlighting! (10/10)
- major feature: universal type inference (10/10)
- parser: let function names contain digits (9/26)
- parser: add comments (9/26)
- add type annotations to all
type-inference.lj
functions (9/26)
- add type annotations to all
- parser: fix operator precedence (9/19)
- codegen: print to stdout (9/19)