The PLAN active router consists of a number of distinct components: the basis, the interpreter, the network interface, and the services.
The basis forms the core information about PLAN needed by both the active router and host applications. This includes definitions of PLAN packets, values and types, how these entities are marshalled to be sent across the wire.
The interpreter is the part of the active router that actually evaluates the PLAN programs that it receives. Each PLAN program is compiled to an AST which is then tasked with evaluating itself. The interpreter makes direct use of the basis and net packages, and indirect use of the other service packages.
The network interface defines the concept of the network available to the PLAN interpreter. It is this interface that is used by the interpreter to transmit packets during the evaluation of the OnRemote and OnNeighbor primitives, as well to transmit values to a host application via the use of PLAN ports.
The services define the bulk of the functionality of the active router, and are amply described in the PLAN Programmer's Guide .
Each of the basis, interpreter, and network interface is implemented as its own Java package: basis, interpreter, and net, respectively. The service implementations are located in different places: the core services are part of the interpreter and net Java packages, while the service packages resident, port, install, and ANON are each implemented as its own Java package.