Abstract:
Although a number of tool boxes for compiler construction exist, the language implementation task can often be made easier by building specialised tools. A prototype Haskell system was implemented within a four month period using such an approach. The system is currently used as a front end for a transputer array, Haskell implementation. In this article we describe the tool building aspect of the implementation process. The little language tools, tree processing function generators and error message management routines developed are described. Although the tools are specific to this implementation, this mode of work can be worthwhile in a number of cases such as the implementation of novel languages, the targeting of unconventional architectures or, the experimentation with new implementation techniques. The lessons learned during this process are summarised and the specialised tool approach is evaluated. 1
Citations
|
343
|
LaTeX: A Document Preparation System
– Lamport
- 1986
|
|
215
|
Report on the Programming Language Haskell, A Non-strict, Purely Functional Language
– Hudak, Jones, et al.
- 1992
|
|
150
|
Programming perl, O’Reilly & Associates
– Wall, Schwartz
- 1991
|
|
124
|
The Unix Programming Environment
– Kernighan, Pike
- 1984
|
|
35
|
evolution, and application of functional programming languages
– Hudak, “Conception
- 1989
|
|
19
|
Programming with modules as typed functional programming
– Burstall
- 1984
|
|
16
|
Flex - fast lexical analyzer generator
– Paxson
- 1995
|
|
12
|
Analysis of Pointer 'Rotation
– Suzuki
- 1982
|
|
10
|
A pragmatic approach to the analysis and compilation of lazy functional languages
– Glaser, Hartel, et al.
- 1990
|
|
6
|
The Mythical Man-Month
– FP
- 1975
|
|
6
|
Opium: a debugging environment for Prolog development and debugging research
– Ducass'e, Emde
- 1991
|
|
5
|
DM: The C Programming Language
– BW, Ritchie
- 1988
|
|
4
|
The Implementation of Functional Programming Languages
– SL
- 1987
|
|
2
|
Programming the User Inteface
– JR, Cunningham
- 1989
|
|
2
|
Yacc — yet another compiler-compiler. Computer Science
– SC
- 1975
|
|
2
|
Lex — a lexical analyzer generator. Computer Science
– ME
- 1975
|
|
2
|
A new implementation technique for applicative languages
– DA
- 1979
|
|
2
|
An abstract Prolog instruction set. Technical Note 309
– DHD
- 1983
|
|
1
|
Little languages
– JL
- 1986
|
|
1
|
More Programming Pearls: Confessions of a Coder
– JL
- 1988
|
|
1
|
Garbage collection in an uncooperative environment
– HJ
- 1988
|
|
1
|
my system gives excellent error messages’ — or does it
– PJ
- 1982
|
|
1
|
Error message management
– RT
- 1990
|
|
1
|
Functional Programming
– AJ, PG
- 1988
|
|
1
|
Ast — a generator for abstract syntax trees. Compiler Generation Report 15, GMD Forshungsstelle an der Universität
– Grosh
- 1989
|
|
1
|
Generating G-machine code from Haskell
– Hadjicocolis
- 1990
|
|
1
|
Language development tools
– SC, ME
- 1987
|
|
1
|
The M4 macro processor
– BW, DM
- 1982
|
|
1
|
Software engineering, the software process and their support
– MM
- 1991
|
|
1
|
Gperf: A perfect hash function generator
– DC
- 1990
|
|
1
|
An implementation of the Haskell language
– Spinellis
- 1990
|
|
1
|
Using and porting
– RM
- 1992
|
|
1
|
The design of very fast portable compilers
– AS
- 1989
|
|
1
|
Type checking for Haskell
– PA
- 1990
|
|
1
|
Analysis of pointer "rotation
– Suzuki
- 1982
|