Skip to main content
Article
DirectFlow: a Domain-Specific Language for Information-Flow Systems
ECOOP 2007 – Object-Oriented Programming, Lecture Notes in Computer Science
  • Andrew P. Black, Portland State University
  • Chuan-kai Lin, Portland State University
Document Type
Post-Print
Publication Date
1-1-2007
Subjects
  • Computer software -- Development,
  • Programming languages (Electronic computers)
Abstract

Programs that process streams of information are commonly built by assembling reusable information-flow components. In some systems the components must be chosen from a pre-defined set of primitives; in others the programmer can create new custom components using a general-purpose programming language. Neither approach is ideal: restricting programmers to a set of primitive components limits the expressivity of the system, while allowing programmers to define new components in a general-purpose language makes it difficult or impossible to reason about the composite system. We advocate defining information-flow components in a domain-specific language (DSL) that enables us to infer the properties of the components and of the composed system; this provides us with a good compromise between analysability and expressivity. This paper presents DirectFlow, which comprises a DSL, a compiler and a runtime system. The language allows programmers to define objects that implement information-flow components without specifying how messages are sent and received. The compiler generates Java classes by inferring the message sends and methods, while the run-time library constructs information-flow networks by composition of DSL-defined components with standard components.

Description

Copyright (2007) Springer. The final publication is available at www.springerlink.com

DOI
10.1007/978-3-540-73589-2_15
Persistent Identifier
http://archives.pdx.edu/ds/psu/12048
Citation Information
Lin, Chuan-kai, and Andrew P. Black. "DirectFlow: A domain-specific language for information-flow systems." ECOOP 2007–Object-Oriented Programming. Springer Berlin Heidelberg, 2007. 299-322.