An APL CompilerPresents the results of an investigation into the issues raised by the development of a compiler for APL, a very high level computer programming language. APL presents a number of novel problems for a compiler writer: weak variable typing, run time changes in variable shape, and a host of primitive operations. Through the integration of several recently developed compiler construction techniques, such as data flow analysis, and a novel and space efficient demand driven or lazy evaluation approach to code generation, the author has been able to produce a true compiler for the language while still maintaining the felxibility and ease that are the hallmarks of APL. |
Other editions - View all
Common terms and phrases
abstract syntax tree algorithms allocate anen APL compiler APL functions APL systems argument at position assignment function attributes axis begin boolean catenation code to compute column vector compression function compute the value compute value constant counter dataflow analysis declared demand driven evaluation described desired element determined at compile error("undefined value example execution expansion vector expression trees fset mod given i2++ identifier identity implementation index expression index origin inner product integer intraprocedural ith dimension left argument left subexpression loop mpl.iptrs1.value.ip niladic node Note offset div offset mod offset vector operation optimizations outer product parse tree passed position of fset produce rank and shape ravel ordering reduction represent request right argument right side right subexpression settrs(&trs1 shape phase ẞ div statement stepper stmtno storage struct trs struct structural functions subscripted expression syntax tree talloc(&trs1 technique UKTYPE value of subexpression value op result Value Phase