COMP 405
Spring 2014

HW03:  Dynamic Communications Language

Home  Info  Owlspace  Java Resources  Eclipse Resources  SharePoint  Piazza

As usual, first do your peer reviews for the previous assignments.    Work with your HW03 partner(s) on the peer reviews of HW02.

In this project, you will build a program that will talk to another group's program where expressions written in one programming language on the sender will run on the receiver, even though the receiver doesn't know the language in which the expression was written.

Part 1: Operational Parser Generator

Complete the exercises to create a working extended visitor-based parser generator that can parse a grammar given the Backus-Naur Form (BNF) of that grammar.

Part 2:   Dynamic Communications Language API and Interpreter

To do this, the receiver must implement a dynamically generated parser that will take the BNF of the sender's language and generate a parser from it.    The sender will then transmit an arbitrary expression in that language that parser will then be used to build an abstract syntax tree that can be used to execute that expression.

In order to accomplish this, we must first agree upon some common notions about the language:

DRAFT SPECS

  1. The language must be LL(1)
  2. Must support variables
  3. The following primitives must be support
  4. Use direct TCP/IP communications
  5. Information that needs to be transmitted:

Direct TCP/IP networking in Java:

 

A new feature we will introduce with this assignment is that a draft version of your discussion of your project must be approved by a staff person by an intermediate milestone date.    This is to help everyone clarify what they are doing and how they are thinking about the issues before they finish the project.

Write-up requirements (in addition to normal template):   Items in red are required for draft write-up

  1. Grammar and language that will be used to communicate with other computers. (draft of grammar)
  2. Common protocol for exchanging grammar and language info (draft specs)
  3. Program features and capabilities
  4. Program architecture (draft architecture)
  5. Extensibility capabilities of system, i.e. what could this evolve into?

 


© 2013 by Stephen Wong