dc.contributor.author |
Ganchev, GF
|
|
dc.contributor.editor |
Steenkamp, A.L.
|
|
dc.date.accessioned |
2018-08-14T11:25:23Z |
|
dc.date.available |
2018-08-14T11:25:23Z |
|
dc.date.created |
1995 |
|
dc.date.issued |
1995 |
|
dc.identifier.citation |
Ganchev, G.F. (1995) Development of a compiler construction toolkit for an introductory course in compiling. Papers Delivered at the SAICSIT 95 Research and Development Symposium (South African Institute for Computer Scientists and Information Technologists), Film Auditorium, University of South Africa, Pretoria, 25-26 May1995, edited by A.L. Steenkamp (UNISA) (ISBN 0-86981-909-7) |
en |
dc.identifier.isbn |
0-86981-909-7 |
|
dc.identifier.uri |
http://hdl.handle.net/10500/24597 |
|
dc.description.abstract |
The compiler construction toolkit under development in the University of Botswana (UB is intended to allow the students build rapidly components of compilers for languages that they define. It consists of a case-type scanner generator, a top-down and a bottom-up parse generators a stack machine emulator, and utility programs. The two parsing strategies adopted are mixed precedence (2,1;1,1) and LL(1). The semantic routines are built by the students in an interactive regime. The toolkit allows experimenting with both one-pass and multi-pass compilation to a stack machine language. The language is always interpreted. The utility programs contain symbol -table maintenance and abstract syntax tree maintenance routines. Other routines (e.g. for code optimization) may be added after gaining more experience with the use of the tool.
The compiler construction course at UB is offered to both Mathematics and Computer Science students who do not have prior knowledge of the topic. The aim of the course is to explain the concepts from a practical perspective without ignoring the grammar theoretical issues of compiler design. The students have different backgrounds. Some of them are not familiar with formal languages and automata theory.
The syllabus provides full coverage of the basics while addressing in more detail the issues of syntax directed translation.
The UB tool kit differs from other similar systems by the intentional simplicity of the concepts used. By the experience of the author novices with little mathematical background have difficulties in understanding such topics as automata-based models, attribute-value flow, semantic specifications. In contrast, more mechanistic concepts are easily understood. For example, students understand better the construction of a case-type scanner than building a finite state automata. They understand more easily the construction of precedence-base shift-reduce parsers than LR(k) parsers. They prefer building translation schemes to defining semantic functions.
Another objective in the development is the students' involvement. The system is being built entirely in the form of coursework assignments and projects. Most of the students taking the course have gone through a thorough software engineering course just a semester earlier. Taking part in the toolkit development gives them the opportunity to get involved in a quite large project. |
en |
dc.language.iso |
en |
en |
dc.subject |
Syntax directed translation |
en |
dc.subject |
Scanning |
en |
dc.subject |
Automata theory |
en |
dc.subject |
Parsing |
en |
dc.subject |
LL(1) grammar |
en |
dc.subject |
MSP grammar |
en |
dc.subject |
Context analysis |
en |
dc.subject |
Code generation |
en |
dc.subject |
Abstract syntax tree |
en |
dc.subject |
Stack machine |
en |
dc.title |
Development of a compiler construction toolkit for an introductory course in compiling |
en |