| R. D. Tennent. Principles of Programming Languages. Prentice Hall, 1981. |
....Because it is not simulated, because it is not an optional discipline or programming method used at the programmer s discretion, it will be correctly and efficiently implemented by the system rather than the programmer (or user) 2.1. From Pascal binding to view binding Binding arrows [20] can be used to indicate the binding occurrences of names from where they are applied. In figure 1, a simple Pascal program has been decorated with such arrows, making clear which bindings x and y are associated with in the two separate calls to the procedure write. Program prog; const x = 1; y ....
R. D. TENNENT (1981), Principles of Programming Languages, Prentice-Hall. -- 16 --
....2) above are examples of scope rules. Type rules are generally used for specifying the type of each language term, making it possible to check that each operation is applied to operands of appropriate type. There are several ways of defining the syntax of programming languages (see for example [Ten81, Wat91, Mit96] The use of a formalism based on logic, using axioms and inference rules, allows the definition of context sensitive conditions and is being increasingly used in the study of programming languages. 2 The basic idea of these formal systems is the definition of rules for the ....
....e ) e 0 then Gamma e 0 : oe is provable. Property 4 (Well typed programs do not go wrong) If Gamma p : oe is provable, then eval F (p) 6= error 8 See section 3, page 9. 9 A detailed discussion of reduction strategies, with consequences of using each of them, can be found in e.g. Ten81, Mit96] 10 Note that the term context defined later refers to a typing context and is different from the concept defined here, which can be seen as an incomplete term, with a hole where another term can be inserted. 11 The notation of expressions is described in section 3. Intuitively, x : ....
R.D. Tennent. Principles of Programming Languages. Prentice-Hall, 1981.
....naming the macro, a parameter list specifying the invocation syntax, and a body that must comply with the result type. The result type declares the type of the body and thereby the syntactic contexts in which invocations of the macro are permitted. Adhering to Tennent s Principle of Abstraction [22], we allow nonterm to range over all nonterminals of the host language grammar. Of course, the nonterminals are from a particular standardized abstract grammar. In the case of the bigwig host language, 55 nonterminals are available. As in MS 2 , a macro must start with an identifier. It is ....
R. D. Tennent. Principles of Programming Languages. Prentice Hall, 1981.
....means, we need to do a complete page translation and inspect the resulting code. Naive server pages provide just a very thin layer of veneer that hides a few calls to Response.Write, but they do not make HTML fragments into first class citizens. Hence they break Tennent s principle of abstraction [32,27] that says that values of a syntactically relevant domain can be given a name. An abstraction mechanism that does not satisfy this basic principle is rather useless As an example server page that shows the lack of abstraction, we will generate an HTML table of 16x16 cells, where the background ....
R.D. Tennent. Principles of Programming Languages. Prentice-Hall, 1981.
....is defined along with a means for combining component states into an architecture state. The formal vspec model of the state of a component is based on Chalin s state model [8, Chapter 6] for lcl. This model partitions the computational state of an lcl description into an environment and a store [14]. The environment maps (variable) identifiers into objects and the store binds objects to the values they contain: Env: Id Obj Store: Obj Value Separating the environment and the store is common among formal models of programming language semantics. In a language such as lcl, one of the ....
R.D. Tennent. Principles of Programming Languages. Computer Science Series. Prentice-Hall International, 1981.
....environment where it is used; and ffl parameterization which refers to the ability to create a generalized abstraction that has the flexibility to perform a variety of activities based on the values of parameters. In other words, the basic components of a procedural abstraction mechanism are [Ten81] ffl a body, a construct whose interpretation is deferred until the subprogram is invoked by being supplied with appropriate arguments; and ffl a formal parameter part (possibly empty) which contains binding occurrences of the formal parameter identifiers . The advantages of using subprograms ....
R. D. Tennent. Principles of Programming Languages. Prentice-Hall, New York, 1981.
....naming the macro, a parameter list specifying the invocation syntax, and a body that must comply with the result type. The result type declares the type of the body and thereby the syntactic contexts in which invocations of the macro are permitted. Adhering to Tennent s Principle of Abstraction [18], we allow nonterm to range over all nonterminals of the host language grammar. Of course, the nonterminals are from a particular standardized abstract grammar. In the case of the bigwig host language, 55 nonterminals are available. As in MS 2 , a macro must start with an identifier. It is ....
Robert D. Tennent. Principles of Programming Languages. Prentice Hall, 1981.
....means, we need to do a complete page translation and inspect the resulting code. Naive server pages provide just a very thin layer of veneer that hides a few calls to Response.Write, but they do not make HTML fragments into rst class citizens. Hence they break Tennent s principle of abstraction [32, 27] that says that values of a syntactically relevant domain can be given a name. An abstraction mechanism that does not satisfy this basic principle is rather useless As an example server page that shows the lack of abstraction, we will generate an HTML table of 16x16 cells, where the background ....
R.D. Tennent. Principles of Programming Languages. Prentice-Hall, 1981.
.... noted, this correspondence is exposed as two uses of the same semantical notational pattern in the semantics of the two respective phrases [51] Following this tack, Tennent proposed other situations where semantical patterns can be used to design a language with internal coherency in binding [52]: ffl abstraction principle: the elements of any semantically meaningful syntactic class can be named, and the names can be invoked (e.g. a procedure is a named command, a module is a named declaration, a class is a named type structure, etc. ffl qualification principle: every semantically ....
R.D. Tennent. Principles of Programming Languages. Prentice-Hall International, Englewood Cliffs, New Jersey, 1981.
.... syntax of this baby language can be defined using BNF as follows: pg : d ; c d : id : t t : Bool j Bin id : x j y c : id v v : true j false j n n : 0 j 1 j n 0 j n 1 3 For some approaches, see e.g. BJ82, Chapter 2] Ten81, Section 13.5] Pag81, Sections 2.3.1 and 2.4.2] Des84, Kap85] Ast91, Sections 2.5 and 4.2] vD91] 4 See e.g. JW74] 5 Note that we have, in a sequent calculus, sequents and formulas. The sequents are the basic syntactic elements of the inference system (usually, but not in a sequent ....
R.D. Tennent. Principles of Programming Languages. Prentice-Hall, 1981.
....it seems problematic to reflect a lot of details through the diagrammatic notation. As already discussed earlier in this paper we have used other approaches in DYNAMO to deal with the details (pop up graphics and the underlying browsers) In programming languages the principle of abstraction [ 21 ] section 7.4) is an important means in battling an overwhelming amount of details. The subscenario concept of SCED is an important counterpart in scenario diagrams. By defining part of scenario to be a named subscenario, the space limitation of interaction diagrams are alleviated in the vertical ....
R.D. Tennent. Principles of Programming Languages. Prentice Hall, 1981.
....the cut indicators in [JM]a, DM]a and [Vi]a. The next section will feature a straightforward equivalence proof, to be contrasted with [DM]a, Vi]a. By now a standard approach has been established for defining a denotational semantics of a sequential procedural language. cf. MS] St] Ba1] [Te2]. We show that a semantics of B in this section and Prolog in section 6 can also be given along these lines. Standard semantics uses environments and continuations. Environments are needed because the denotation [ s ] s of a statement s depends amongst others on the meaning of the procedure ....
....will be described using continuations. For languages like PASCAL, where flow of control is not very intricate, a denotation [ s ] s needs only one continuation as a parameter. Languages containing backtrack constructs, like SNOBOL4, are best described using two continuations, cf. Te1] [Te2]a. In order to capture the effects of the cut operator yet another continuation will be needed. As is observed independently by M. Felleisen in [Wi] p. 273. In order to explain how these continuations will be used we introduce them one after another. First we shall discuss the PASCAL subset of ....
R.D. Tennent, Principles of Programming Languages, Prentice Hall International 22. (1981).
....of Standard ML are also required to conform to a standard semantics of the language [96] 1.1. 1 Bindings: their Semantics and their Implementation The design of a programming language hinges upon the development of a core language of values and operations that characterize its capabilities [49, 71, 134, 142]. For example, a while loop language [124] is the core language for a Modula like language. One possible BNF for this language is shown in Figure 1.1. There are several levels in the lanc 2 Command e 2 Expression 2 Location n 2 Numeral c : e j c 0 ; c 1 j if e c 0 c 1 j while e do c ....
....an expression can be named and this gives rise to a function, etc. The concept of user defined names lies at the heart of a variety of features that the programmer uses routinely: parameters, local definitions, variable declarations, encapsulation, modules, functions, procedures, and so on [123, 124, 133, 134]. What is the semantics of a binding One of the earliest attempts to formalize the semantics was made by the Algol 60 committee In Algol 60, bindings are understood via the copy rule [100, 144, 116] In symbols, this means that a definition of the form, define I = U in V 1 is understood as ....
[Article contains additional citation context not shown here]
Tennent, R. D. Principles of Programming Languages. Prentice-Hall, Englewood Cliffs, New Jersey, 1981.
....another dedicated machine, These aspects are related to the architecture of the system to be audited, they necessitate ad hoc solutions. ASAX does not make any a priori assumptions about these architectures. Appendix : Abstract Syntax for RUSSEL The abstract syntax formalism is borrowed from [Tennent81] Syntactic domains A actions O arithmetic operators B logical operators P formal parameters C conditions Q rule names E expressions R rules F field names S relational operators G parameter declarations T types H variable declarations V local variables L literals X external function names M ....
R.D. Tennent, "Principles of Programming Languages", PrinticeHall International, 1981
....of the formal parameter in the procedure body by the actual parameter. We adopt a design principle for programming languages called the Correspondence Principle, which states that for any parameter passing mechanism, there should be a corresponding definition (block) mechanism, and vice versa [Tennent 81] Here passby value corresponds to new block, pass by reference corresponds to alias block, and pass by name corresponds to macro block. This principle will be illustrated by the semantic correspondences between blocks and procedures (Section 4) 1.3 Compositionality Principle A meaning for ....
Tennent R.D., Principles of Programming Languages, Prentice-Hall, 1981.
....The denotational semantics of this language is a straightforward adaptation of the semantics of functional programming languages, with environment but without state. One way to give semantics to languages with pattern matching and failure is to view them as backtracking and use continuations (see [13]) This would be involved in a translation of the language into Prolog, for example. However, general backtracking is not available in TXL, and therefore such an account would introduce semantic bias. Instead, I interpret patterns as a kind of function which creates extensions to the environment ....
R. D. Tennent. Principles of Programming Languages. Prentice-Hall, 1981.
.... 1 Opening structure S seems to bind variable x, but if structure X, about which nothing is known, contains a sub structure S without a variable x, then x is actually free in this code. Language constructs that, like Pascal s with [JW78] bind identifiers implicitly have been criticized before [Ten81, section 6.2.3. A feature that confuses dependency analysis tools will not be easy to understand by the human reader. Similar constructs, for example import in Java or using in C , can behave like open in SML with all the same implications for dependency analysis. Ada s use [Ada80] is not ....
R. D. Tennent. Principles of Programming Languages. Prentice-Hall, Englewood Cliffs, NJ, 1981.
.... type checking of polymorphic code, nor generation of shared object code really are just glorified macros (Modula 3 generic modules, C templates) Constrained parametric polymorphism was first introduced for CLU [6, 7] Parametric polymorphism for a Pascal like language was proposed by Tennent in [16]. All functional programming languages in the tradition of ML, and some related languages, such as Napier 88 [9] support parametric polymorphism. Many modern object oriented languages also support parametric polymorphism, including Eiffel [8] Sather [14, 15] or Theta [3, 5] In all these ....
R D Tennent. Principles of Programming Languages. Prentice Hall Int., 1981.
....space construction. In the rest of this paper, we define our metalanguage, outline the proof of the correspondence theorem, and state an application to compiling. 2 The Metalanguage One way to obtain correspondence is to force it upon a language. Landin [8] Reynolds [18, 19] and Tennent [23, 24] observed that correspondence must hold if both definition binding and parameter binding are desugared purely into abstractions: define i = U in V desugars to ( i : V) U define j(i) V in j(U) desugars to define j = i : V in j(U) which desugars to ( i : V) U, when i : V is copied for j ....
....declaration parameters, can be introduced for each of a language s syntax domains. Again, each formal parameter construct is desugared into a abstraction. Properly applied, the two principles extend systematically a core programming language into a language for programming in the large [1, 21, 24, 26]. 2.1 The need for records Desugaring both definitions and parameters into purely abstractions confuses definitions with parameters, which is problematic when a Pascal like language is studied. Indeed, for the correspondence principle to be of value as a language design criterion, it must be ....
Robert D. Tennent. Principles of Programming Languages. Prentice-Hall, Englewood Cliffs, New Jersey, 1981.
No context found.
R. D. Tennent. Principles of Programming Languages. Prentice Hall, 1981.
No context found.
R. Tennent, Principles of Programming Languages, Prentice-Hall, Englewood Cliffs, 1981.
No context found.
Tennent R.D. [81], Principle of Programming Languages, Prentice-Hall International, London, 1981.
No context found.
Tennent, R. D.: Principles of Programming Languages. Prentice Hall, 1981.
No context found.
Tennent, R. Principles of Programming Languages. Prentice-Hall, 1981.
No context found.
R. D. Tennent. Principles of Programming Languages. Prentice-Hall, 1981.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC