Grammars as contracts
Component-based development of language tools stands in need of meta-tool support. This support can be offered by generation of code -- libraries or full-fledged components -- from syntax definitions. We develop a comprehensive architecture for such syntax-driven meta-tooling in which grammars serve as contracts between components. This architecture addresses exchange and processing both of full parse trees and of abstract syntax trees, and it caters for the integration of generated parse and pretty-print components with tree processing components. We discuss an instantiation of the architecture for the syntax definition formalism sdf, integrating both existing and newly developed meta-tools that support sdf. The aterm format is adopted as exchange format. This instantiation gives special attention to adaptability, scalability, reusability, and maintainability issues surrounding language tool development.