Use of transition matrices in compiling

The construction of efficient parsing algorithms for programming languages has been the subject of many papers in the last few years. Techniques for efficient parsing and algorithms which generate the parser from a grammar or phrase structure system have been derived. Some of the well-known methods are the precedence techniques of Floyd, and Wirth and Weber, and the production langauge of Feldman. Perhaps the first such discussion was by Samelson and Bauer. There the concept of the push-down stack was introduced, along with the idea of a transition matrix. A transition matrix is just a switching table which lets one determine from the top element of the stack (denoting a row of the table) and the next symbol of the program to be processed (represented by a column of the table) exactly what should be done. Either a reduction is made in the stack, or the incoming symbol is pushed onto the stack. Considering its efficiency, the transition matrix technique does not seem to have achieved much attention, probably because it was not sufficiently well-defined. The purpose of this paper is to define the concept more formally, to illustrate that the technique is very efficient, and to describe an algorithm which generates a transition matrix from a suitable grammar. The report also describes other uses of transition matrices besides the usual ones of syntax checking and compiling.

[1]  Jerome A. Feldman A formal semantics for computer languages and its application in a compiler-compiler , 1966, CACM.

[2]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[3]  Friedrich L. Bauer,et al.  A syntax controlled generator of formal language processors , 1963, CACM.

[4]  David Gries,et al.  Some techniques used in the ALCOR ILLINOIS 7090 , 1965, CACM.

[5]  GriesDavid Use of transition matrices in compiling , 1968 .

[6]  Melvin E. Conway,et al.  Design of a separable transition-diagram compiler , 1963, CACM.

[7]  F. L. Bauer,et al.  Report on the algorithmic language ALGOL 60 , 1960, CACM.

[8]  Rudolf Bayer,et al.  User's manual for the ALCØR-ILLINØIS-7090 ALGØL-60 translator, University of Illinois, 2nd edition , 1964 .

[9]  Jerome A. Feldman,et al.  Translator writing systems , 1968, Commun. ACM.

[10]  Robert W. Floyd,et al.  Bounded context syntactic analysis , 1964, CACM.

[11]  Vincent Tixier Recursive functions of regular expressions in language analysis , 1967 .

[12]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[13]  Robert W. Floyd,et al.  Syntactic Analysis and Operator Precedence , 1963, JACM.

[14]  Niklaus Wirth,et al.  EULER: A generalization of ALGOL and its formal definition: Part 1 , 1966, Commun. ACM.

[15]  Friedrich L. Bauer,et al.  Report on the algorithmic language ALGOL 60 , 1960, Commun. ACM.