Effective data access in software IO frameworks
Advances in computer communications technologies have led to new classes of applications; these applications exchange data across networks using diverse data representations and encodings. While a computer programming language implementation intrinsically supports efficient access to data elements defined in that language, accessing (producing or consuming) IO data in its external exchange format, called a transfer syntax, requires specialized binding code to accommodate mismatches in the local and external data representations. Providing effective input–output (IO) data access means transparently accommodating these intra– and inter–layer syntactic complexities in order to extend to the programmer of IO data processing layers the convenience, efficiency, and accuracy of access to IO data automatically provided for programming language defined data. This dissertation presents the theory, design, and implementation of a syntax directed binding facility that achieves effective IO data access. An improved programming practice introduces an abstraction boundary between the mechanisms of IO data syntax navigation and access, and the layer semantics or policies associated with the IO data values. The domain–specific language Xyn and its bit–level lexicon Blex succinctly specify the IO data syntax that defines the abstraction boundary. The Xyn compiler, Xync, codifies the implicit mapping between the labeled elements of a declarative Xyn/Blex specification and their presentation as identically labeled native programming language structures; i.e., Xync produces the binding code necessary to navigate and access the IO data synvii tax elements. Finally, an inter–layer optimization framework called MetaXyn exploits the intra–layer syntactic attributes exposed by Xyn to optimize the inter–layer composition. The Xyn language has been used to specify the Internet Protocol version 4, and the Xync–generated binding code was evaluated in a modern software network router framework. We present and evaluate our results, and discuss our experiences.