Skip to content

Latest commit

 

History

History
37 lines (32 loc) · 2.22 KB

GLOSSARY.md

File metadata and controls

37 lines (32 loc) · 2.22 KB

Also see README.md

  • rmk35.partIIProject.frontend

    • Parses the string into data, in the sense of lists, vectors, symbols and literals
  • rmk35.partIIProject.middle

    • This contain the macro processor, which is also the engine that looks at keywords as Scheme has no resevered keywords
    • LibraryOrProgramme: Entry point
    • AST*Visit.java: Visitors on the abstract syntax tree, parameterized so has different return values
      • astExpectVisitor/: this contains visitors for extracting subclasses of AST
      • astMacroMatchVisitor/: Contains macro match visitors
      • ASTConvertVisitor.java: this is the main visitor for compilation, converts to statements
      • ASTApplyicationVisitor: this applies an element to the rest of the list passed in as arguments
      • ASTListFoldVisitor: this folds a binary function across a proper list or throws an exception
      • ASTMacroTranscribeVisitor: does transcription, see Macros That Work, W. Clinger, J. Rees
      • ASTMatcher: Java interface to the macro engine, very useful as it gives us pattern matching (kind of)
      • ASTSyntaxSpecificationVisitor: handles syntax spec as on r7rs 7.1.3, page 64
    • Environment: Mapping from identifiers to values in store
      • subEnvironment (concept): An environment that is used in the lambda body, e.g. has local variables of the lambda use environment as closure variables (then formals are the new local variables)
    • bindings: These fall into one of the three categories:
      • SyntacticBinding: An abstract class for all the syntactic bindings
      • VariableBinding: Variable (global, local)
      • MarkerBinding: Just to use for instanceof, should only be used for the macro engine, then use ASTMatcher instead
  • rmk35.partIIProject.backend

    • ByteCodeMethod: Method, jumps are points of continuation (e.g. they would be different methods in continuation passing style)
    • Statement: Input data from middle
  • rmk35.partIIProject.runtime

    • RuntimeValue: things that can occur at runtime
    • PrimitiveValue: things that can be parsed by (read), i.e. not lambdas or any other pecurial things
  • Comment keywords

    • FIXME: shortcomings that need to be fixed before release
    • TODO: things that would be nice
    • XXX Speed: speed improvements that should be fairly easy