This paper will appear in the journal Computer Languages, Volume 20, Number 4, Pages 213-238.
This paper discusses the structuring of a language specification as a language space and provides a unified framework to deal with the properties of all valid constructs of the language. A language space is a finite specification of an infinite language (syntax and semantics) which allows for the computation of information that can be used for automatic generation and recognition of the valid constructs of the language. The concrete syntax is represented by segments of the language space. The semantics is given by derived operations of the algebras where the language constructs are interpreted by the language processing tools, such as translators and interpreters, operating on the language space. The language processing tools discussed in this paper operate on the language space and implement universal algorithms whose correctness is mathematically proven.
The framework for language processing created by the algebraic tools operating on a language space allows us to envision solutions to the problems raised by the limitations of current software technology: it facilitates the algebraic construction of production-quality compilers which inherently support the incremental development of programs; it integrates all components of the compiler and allows the programmer to control the process of compilation and the performance of the target program generated by the compiler; it provides for greater parallelism among the components of the compiler; it shows an automatic mechanism for porting old programs to new languages and machines.