Abstract
Many programmers live in happy ignorance of their compilers’ internal workings. Others may want to take a look at what is going on inside a compiler in much the same way that they use a debugger to watch their compiled programs execute. While conventional compilers are black boxes whose internals are hidden from the user, the Jaccie tool set helps to open up the box and have a look at what is going on inside.Technically speaking, Jaccie is a compiler–compiler that, from suitable formal descriptions, generates the scanner, parser, and attribute evaluator components of a compiler and presents them in a visual debugging environment. It offers a number of alternative parser generators producing both top-down (LL) and bottom-up parsers of the LR variety, including SLR(1) and LALR(1) parsers, thus allowing users to experiment with different parsing strategies and to get a “feel” for their relative pros and cons. When designing Jaccie, the main emphasis was on two ergonomic goals that we considered important for educational software. Firstly, give user control over the program and not vice versa, e.g., our parsers (and other components) can be directed to go step-by-step forwards or backwards or to leap to some point in the input indicated by the users. Secondly, overcome the sometimes severe size limitations of computer displays by offering the same information in multiple representations that complement each other and by dividing information in smaller chunks that can be traversed in a meaningful way.In this paper, after outlining the architecture of Jaccie, we discuss some of its technical and ergonomic aspects in detail, give a brief introduction into the use of Jaccie and its documentation, show an example application done with Jaccie, and finally discuss related work and future plans.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.