Skip to content
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
  • feature: set '{}' (HashSet): add/remove/contains, (union/intersection/difference?), size (1/30)
    • set : () -> 'a set
  • feature: map '<>' (HashMap): put/get/remove, getKeys/containsKey, size (1/30)
    • map : () -> ('a,'b) map
    • getKeys : ('a,'b) map -> 'a set
  • 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)
  • parser: fix operator precedence (9/19)
  • codegen: print to stdout (9/19)
Clone this wiki locally