The Community for Technology Leaders
Green Image
Issue No. 05 - May (1986 vol. 12)
ISSN: 0098-5589
pp: 590-599
Daniel M. Yellin , Department of Computer Science, Columbia University, New York, NY 10027
Eva-Maria M. Mueckstein , IBM Thomas J. Watson Research Center, Yorktown Heights, NY 10598; IBM Information Services, Bethesda, MD 20817
Over the last decade there has developed an acute awareness of the need to introduce abstraction and mathematical rigor into the programming process. This increased formality allows for the automatic manipulation of software, increasing productivity, and, even more importantly, the manageability of complex systems. Along these lines, attribute grammars constitute a formal mechanism for specifying translations between languages; from a formal description of the translation a translator can be automatically constructed. In this paper we consider taking this process one step further: given an attribute grammar specifying the translation from language L1 to language L2, we address the question of whether the inverse attribute grammar specifying the inverse translation from L2 to L1 can be automatically generated. We show how to solve this problem for a restricted subset of attribute grammars. This inversion process allows for compatible two-way translators to be generated from a single description. To show the practical feasibility of attribute grammar inversion, we relate our experience in inverting an attribute grammar used as an interface for a formal database accessing language, SQL. The attribute grammar is used to paraphrase SQL database queries in English.
Grammar, Production, Semantics, Context, Program processors, Databases, natural language interfaces to databases, Automatic software generation, bidirectional translators, formal specifications, inversion of attribute grammars
Daniel M. Yellin, Eva-Maria M. Mueckstein, "The automatic inversion of attribute grammars", IEEE Transactions on Software Engineering, vol. 12, no. , pp. 590-599, May 1986, doi:10.1109/TSE.1986.6312955
219 ms
(Ver 3.3 (11022016))