Robert W. Floyd
CA Technologies
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Robert W. Floyd.
Archive | 1993
Robert W. Floyd
This paper attempts to provide an adequate basis for formal definitions of the meanings of programs in appropriately defined programming languages, in such a way that a rigorous standard is established for proofs about computer programs, including proofs of correctness, equivalence, and termination. The basis of our approach is the notion of an interpretation of a program: that is, an association of a proposition with each connection in the flow of control through a program, where the proposition is asserted to hold whenever that connection is taken. To prevent an interpretation from being chosen arbitrarily, a condition is imposed on each command of the program. This condition guarantees that whenever a command is reached by way of a connection whose associated proposition is then true, it will be left (if at all) by a connection whose associated proposition will be true at that time. Then by induction on the number of commands executed, one sees that if a program is entered by a connection whose associated proposition is then true, it will be left (if at all) by a connection whose associated proposition will be true at that time. By this means, we may prove certain properties of programs, particularly properties of the form: ‘If the initial values of the program variables satisfy the relation R l, the final values on completion will satisfy the relation R 2’.
Journal of the ACM | 1967
Robert W. Floyd
Programs to solve combinatorial search problems may often be simply written by using multiple-valued functions. Such programs, although impossible to execute directly on conventional computers, may be converted in a mechanical way into conventional backtracking programs. The process is illustrated with algorithms to find all solutions to the eight queens problem on the chessboard, and to find all simple cycles in a network.
Journal of the ACM | 1963
Robert W. Floyd
libstmct. Three increasingly restricted types of formal grammar are phrase structure grammars, operator grammars and precedence grammars. Precedence grammars form models of mathematical and algorithmic languages which may Le analyzed mechanically by a simple procedure based on a matrix representation of a relation between character pairs.
Communications of The ACM | 1964
Robert W. Floyd
Certain phase structure grammars define languages in which the phrasehood and structure of a substring of a sentence may be determined by consideration of only a bounded context of the substring. It is possible to determine, for any specified bound on the number of contextual characters considered, whether a given grammar is such a bounded context grammar. Such grammars are free from syntactic ambiguity. Syntactic analysis of sentences in a bounded context language may be performed by a standard process and requires a number of operations proportional to the length of sentence analyzed.nBounded context grammars form models for most languages used in computer programming, and many methods of syntactic analysis, including analysis by operator precedence, are special cases of bounded context analysis.
IEEE Transactions on Electronic Computers | 1964
Robert W. Floyd
The syntactic rules for many programming languages have been expressed by formal grammars, generally variants of phrase-structure grammars. The syntactic analysis essential to translation of programming languages can be done entirely mechanically for such languages. Major problems remain in rendering analyzers efficient in use of space and time and in finding fully satisfactory formal grammars for present and future programming languages.
Communications of The ACM | 1962
Robert W. Floyd
ALGOL 60 is defined partly by formal mechanisms of phrase structure grammar, partly by informally stated restrictions. It is shown that no formal mechanisms of the type used are sufficient to define ALGOL 60.
Journal of the ACM | 1961
Robert W. Floyd
The algebraic command languages (ALGOL, IT, FORTRAN, UNICODE), although useful in preparing numerical algorithms, have not in the authors opinion proven themselves useful for symbol manipulation algorithms, particularly compilers. List processors, in fact, have been designed primarily to fill this gap. Analogously, the traditional flowchart serves well as a descriptive language for numerical algorithms, but does not lend itself to description of symbol manipulation algorithms in such a way that the intent of the process is clear. I t will be the purpose of this paper to present a more suitable notation for description of compilers and other complicated symbol manipulation algorithms. The algorithms used in formula translation consist principally of the following elements: (1) A set of linguistic transformations upon the input string, together with conditions determining the applicability of each transformation. (2) A set of actions, such as the generation of machine language coding, associated with each transformation. (3) A rule for transfering the attention of the translator from one portion of the input string to another. The notation presented here greatly simplifies the representation of the first and third elements. For illustrative purposes, a compilation process for a small subset of ALGOL is described below. The subset consists of assignment statements constructed from identifiers, the five binary arithmetic operators ( T, × , / , 4 , ), the two unary arithmetic operators (-{-, --), the replacement operator ( : = ) , parentheses, and the library functions of one variable (sin, exp, sqrt, etc.). The assignment statement Z to be translated is initially taken in the augmented form ~ A2~ ~ , where the characters ~and ~ serve as termination symbols and a is a pointer which indicates the portion of the statement where the translators attention is currently focused. The following productions and the associated generation rules respectively decompose the original statement in accordance with its structure, and simultaneously create coding to implement the statement. Coding will be represented by ALGOL statements with at most one operator, to avoid reference to particular computers.
Communications of The ACM | 1962
Robert W. Floyd
A new subroutine that effects certain scanning and related operations and which can be called in FORTRAN programs has been coded recently [15]. This SAPST subroutine adopts the syntax machine approach of Glennie [16] and can be used to deal with expanded recta-vocabularies. Scanning time, particularly of verbal material, depends on comparisons of quotations in the definition table with portions of the input string. Simultaneous comparisons of input material with several quotations would speed some scans considerably-a computer with several accumulators would be suited to this type of work. Publication of this material has been delayed for some years in the hope that the implications of scanning and syntax definition would become clearer. There is no doubt now that syntax description and analysis are important, and they may provide new bridges between computing and biology [6] and between science and scholarship. A general translation program for phrase structure languages. Let a phrase structure language be defined informally as a language defined by a set of definitions in the Backus notation [1] (more formal definitions may be found in [2, 3, 4]). The set of definitions is itself called a phrase structure grammar. A phrase structure grammar is a m b i g u o u s if there exists a sentence in the defined language which may be assigned more t h a n one structure consistent with the grammar. Such an ambiguity in ALGOL 60, for example, is i f ~l t h e n 6 i f B2 t h e n Z1 else Z2 where ~ represents any Boolean expression, ¢ a for clause, and an unconditional statement. Attempts have been made to devise an algorithm to determine for an arbitrarily given phrase structure grammar whether or not it is ambiguous. Such attempts may yield useful heuristic procedures , but, as will be shown below, a general algorithm does not exist. Consider two sets of strings {x~} and {y~} over an alphabet, where i ranges from 1 to k. Let n~ signify the digit string which represents the integer i in decimal notation. Define a language by the following grammar: 1 S i , ~ xl ; n~ ~ X2 ; n 2 ~ • • • ~ X k ; n k ~_j xlS1 , nl k....2 x 2 S i , n 2 ~ X k S 1 , n b
Communications of The ACM | 1961
Robert W. Floyd
2 …
Information & Computation | 1961
Robert W. Floyd
Most previously published algorithms for formula translation depend uport a left-to-right scan of the formula, during which each symbol encountered either causes generation of coding or is saved on a list until it can be correctly interpreted in context. An exception is the GAT translator, which scans from right to left. In coding arithmetic operators for machines with accumulators (i.e., oneor two-address machines), right-to-left scans potcntiMly generate more efficient eoding than left-to-right scans. The reason can be seen by considering the formula