<?xml version="1.0" encoding="UTF-8"?><xml><records><record><source-app name="Biblio" version="6.x">Drupal-Biblio</source-app><ref-type>10</ref-type><contributors><authors><author><style face="normal" font="default" size="100%">João Alexandre Saraiva</style></author><author><style face="normal" font="default" size="100%">Pedro Martins</style></author><author><style face="normal" font="default" size="100%">Zirun Zhu</style></author><author><style face="normal" font="default" size="100%">Hsiang-Shang Ko</style></author><author><style face="normal" font="default" size="100%">Zhenjiang Hu</style></author></authors></contributors><titles><title><style face="normal" font="default" size="100%">BiYacc: Roll Your Parser and Reflective Printer into One</style></title><secondary-title><style face="normal" font="default" size="100%">Fourth International Workshop on Bidirectional Transformations (Bx 2015)</style></secondary-title></titles><dates><year><style  face="normal" font="default" size="100%">2015</style></year></dates><urls><related-urls><url><style face="normal" font="default" size="100%">https://haslab.uminho.pt/sites/default/files/jas/files/p43-zhu_1.pdf</style></url></related-urls></urls><pub-location><style face="normal" font="default" size="100%">L'Aquila, Italy</style></pub-location><pages><style face="normal" font="default" size="100%">43-50</style></pages><abstract><style face="normal" font="default" size="100%">&lt;p&gt;Language designers usually need to implement parsers and printers. Despite being two related programs, in practice they are designed and implemented separately. This approach has an obvious disadvantage: as a language evolves, both its parser and printer need to be separately revised and kept synchronised. Such  tasks are routine but complicated and error-prone. To facilitate these tasks, we propose a language called BiYacc, whose programs denote both a parser and a printer. In essence, BiYacc is a domain-specific language for writing putback-based bidirectional transformations — the printer is a putback transformation,&lt;br /&gt;
and the parser is the corresponding get transformation. The pairs of parsers and printers generated by BiYacc are thus always guaranteed to satisfy the usual round-trip properties. The highlight that distinguishes this reflective printer from others is that the printer —being a putback transformation — accepts not only an abstract syntax tree but also a string, and produces an updated string consistent with the given abstract syntax tree. We can thus make use of the additional input string, with mechanisms such as simultaneous pattern matching on the view and the source, to provide users with full control over the printing-strategies.&lt;/p&gt;
</style></abstract></record></records></xml>