| R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986. |
....There is, therefore, a desperate need for computer text processing technology applicable to Chinese language. The importance of computer text processing has long been appreciated in the Western world. This led to the development of the programming language, SNOBOL [1] and its successor Icon [2,3,4,5] which were designed with efficient built in text manipulation utilities. These languages are suitable for applications in natural language processing, compiler, text editing and formatting, questionnaire analysis. etc. Direct application of the aforesaid programming languages to Chinese text ....
....frequent usage of these functions, the implementation of cset is performance critical. Implementation of the cset data structure, i.e. a cset block, was divided into two parts. The first part is for the 256 different single byte characters. This part is similar to the cset data structure in Icon [3]. It uses eight 32 bit words to record the presence or absence of each of the 256 characters. Each bit represents one character. This is quite efficient in terms of both time and space. The second part was designed to accommodate the cset extension for the Chinese characters. It would have been ....
[Article contains additional citation context not shown here]
Griswold, R. E. and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton, N.J., Princeton University Press. 1986.
....[2] Icon expressions are translated to a flow chart language with conditional, direct and indirect jumps using templates; a subsequent optimization which, amongst other things, reorders code and performs branch chaining, is necessary to produce compact code. The reference implemention of Icon [12] compiles Icon into byte code; this byte code is then executed by an interpreter that controls the control flow by keeping a stack of expression frames. In this article, we present a unified approach to goal directed evaluation: 1. We consider a spectrum of semantics for a small goal directed ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
....: words(2. word] end loop; statetab(words) nonword] add tail words : npfx [ nonword] for i in [ 1. maxgen] loop if (word : random statetab(words) nonword then stop; end if; print(word) words : words(2. word] end loop; 6.9. 2 Icon Icon [97, 96] is an interesting high level language for programming in the small. It has no type declarations, and its variable declarations and scope rules are similar to those of SETL. It represents something of an extreme in programming language design in that its expression evaluation mechanism is fully ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
.... and its powerful combination of generators and goal directed evaluation [1, 2] Icon is available for virtually every significant computer architecture and operating system [3] Until now, every available implementation was based on the same source code written in the C programming language [4]. Using Java, we have reimplemented Icon to produce a new implementation called Jcon . An object oriented design yields a runtime system that is much shorter, simpler, and easier to understand. Although this particular system is specifically tailored to Icon, the techniques are equally ....
....various operators in a goal directed language. The reference Icon translation system, which translates Icon into a bytecode for interpretation, controls goal directed evaluation by maintaining a stack of generator frames that indicate, among other things, what action should be taken upon failure [4, 13]. Special bytecodes act to manipulate this stack by pushing, popping or modifying generator frames to achieve the desired goal directed behavior. Icon s reference implementation is an interpreter that consumes bytecode for the Icon Virtual Machine. The Icon VM is stack based and relies on ....
[Article contains additional citation context not shown here]
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
....interested in extending, or changing the Icon language [Gri82] GG83] to reflect these innovations in language design. Icon is distributed with a flexible interpreter and run time system. This flexibility is seen most notably in the ease with which one may to add new types and run time operations [GG86] and change syntax [GW90] However, using the Icon system to experiment with language extensions that have pervasive semantic implications, such as scoping or adding first class procedures, requires extensive modifications to the run time system. The Icon implementation is large, consisting of ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
.... its powerful combination of generators and goal directed evaluation [GG97, GG96] Icon is available for virtually every significant computer architecture and operating system [Ico] Until now, every available implementation was based on the same source code written in the C programming language [GG86]. Using Java, we have reimplemented Icon to produce a new implementation called Jcon . An objectoriented design yields a runtime system that is much shorter, simpler, and easier to understand. Although this particular system is specifically tailored to Icon, the techniques are equally ....
....various operators in a goal directed language. The reference Icon translation system, which translates Icon into a bytecode for interpretation, controls goal directed evaluation by maintaining a stack of generator frames that indicate, among other things, what action should be taken upon failure [GG86, ALS78]. Special bytecodes act to manipulate this stack by pushing, popping or modifying generator frames to achieve the desired goal directed behavior. Icon s reference implementation is an interpreter that consumes bytecode for the Icon Virtual Machine. The Icon VM is stack based and relies on ....
[Article contains additional citation context not shown here]
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
....source language, except that it is dynamically typed. This covers a wide variety of languages, e.g. functional programming languages such as Lisp and Scheme (e.g. see [18] logic programming languages such as Prolog [3] Strand [6] GHC [19] and Janus [11, 15] imperative languages such as Icon [10] and SETL [16] and object oriented languages such as Smalltalk [9] and SELF [5] The optimization we discuss is likely to be most beneficial for languages and programs where procedure calls are common, and which are therefore liable to benefit significantly from reducing the cost of procedure ....
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, Princeton, 1986.
....into Unix executable files. 72 lines of utility functions for C functions that manipulate ML objects. 38 lines of assembly language to handle simulated process switching. 195 lines of assembly language to implement primitive functions callable by ML programs. For comparison, the Icon runtime system[15] (excluding its interpreter) is 18,000 lines of C; the T3[19] runtime system is 1,900( lines of C and assembly language; and the FranzLisp runtime system (including interpreter) is 19,500 lines of C. 24 Conclusion The runtime data structures of Standard ML of New Jersey are particularly simple. ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
....an inordinate amount of work to compile. At the same time it had to be complex enough to enable realistic evaluation. The Icon programming language [12] was chosen because translation of Icon is of intermediate difficulty and a welldocumented implementation of the language is freely available [13]. Icon is a general purpose procedural language with particularly good support for string processing and high level data structures such as tables and lists. More unusual features included in Icon are goal directed evaluation, generators and co expressions. 2.1 Icont The baseline for the ....
....features included in Icon are goal directed evaluation, generators and co expressions. 2.1 Icont The baseline for the experiment was provided by the program Icont, part of the Icon implementation from the University of Arizona. 1 Icont translates Icon programs into a target form called Ucode [13]. Ucode is a stack based, postfix language designed explicitly for implementing Icon programs but similar in style to conventional assembly languages. The distributed version of Icont was modified in the following ways: 1. Invocation of the Icon pre processor was disabled. Since we were not ....
GRISWOLD, R. E., AND GRISWOLD, M. T. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
....of specific systems make measurement results difficult to interpret and to apply. Few real systems are documented well enough to understand fully the ramifications of their designs and implementations and how they might be reflected in other systems. Icon s implementation is well documented [17], and its source code is available publicly. The results reported here are, of course, specific to Icon, but Reference [17] and the source code provide a context in which to evaluate the applicability of these results to other systems. Icon Icon is a very high level imperative language with a ....
....enough to understand fully the ramifications of their designs and implementations and how they might be reflected in other systems. Icon s implementation is well documented [17] and its source code is available publicly. The results reported here are, of course, specific to Icon, but Reference [17] and the source code provide a context in which to evaluate the applicability of these results to other systems. Icon Icon is a very high level imperative language with a rich repertoire of facilities for string and structure processing [1] It is available on a wide range of computers from ....
[Article contains additional citation context not shown here]
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
....of utility functions for C functions that manipulate ML objects. objects.c) 38 lines of assembly language to handle simulated process switching. prim.s) 195 lines of assembly language to implement primitive functions callable by ML programs. prim.s) For comparison, the Icon runtime system[15] (excluding its interpreter) is 18,000 lines of C; the T3[18] runtime system is 1,900( lines of C and assembly language; the FranzLisp runtime system (including interpreter) is 19,500 lines of C; the Poly ML runtime system is lines of . 24 Conclusion It s easy to implement a hi tech ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
....identifier represents the undeferenced form of the argument and the second identifier represents the dereferenced form. This third form of declaration may not be used with the variable part of an argument list. These identifiers are of type descriptor. Descriptors are implemented as C structs. See [5] for a detailed explanation of descriptors. Examples of operation headers: detab(s,i, replace tabs with spaces, with stops at columns indicated. function 1 detab(s, i[n] actions end x y swap values of x and y. Reverses swap if resumed. operator 0,1 rswap(underef x ....
....Declarations The extension to declarations consists of a new storage class specifier, tended (register is an example of an existing storage class specifier) Understanding its use requires some knowledge of Icon storage management. Only a brief description of storage management is given here; see [5] for details. Icon values are represented by descriptors. A descriptor contains both type information and value information. For large values (everything other than integers and the null value) the descriptor only contains a pointer to the value, which resides elsewhere. When such a value is ....
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
....as a separate facility and usually restrict it to data. Persistence pervades EZ and applies to both data and active objects, like procedure activations and processes. As described in Reference [15] EZ has an interpreter based implementation similar in detail to other very high level languages [11]. The virtual address space resides on disk and is managed by a virtual memory manager that caches pages in memory. Currently, all memory management is done by software. The interface between the interpreter and memory manager consists of two functions: GetPage(a, mode) returns a handle to the ....
....spaces could be encapsulated as tables much like strings encapsulate files. The cost, however, is that the interpreter must take special action in order to access these tables. Efficient implementation techniques for this kind of dereferencing have been used in other high level language systems [11], in heterogeneous systems [7] and for implementing implicit synchronization [14] Pages would not migrate in this approach, which simplifies memory management and increases reliability. Remote dereferencing translates into essentially remote procedure calls to GetPage and PutPage. Reliability ....
R. E. Griswold and M. T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
.... Tagging schemes are usually chosen primarily to make type dispatching, arithmetic operations, and pointer dereferencing as fast as possible; which scheme is best depends largely on the language semantics and the strategy for ensuring that the most frequent operations are fast [KKR 86, GG86, SH87, Ros88, Gud93] In some systems, individual objects do not have headers, and type information is encoded by segregating objects of particular types into separate sets of pages. This big bag of pages or BiBOP technique associates types with pages, and constrains the allo 44 On many ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, New Jersey, 1986.
....etc. Notice that all such structures may be built from the map alone, as well. Among all those known to the author, only one language outside POPS Lisp (and its successor, HimML [20] a Standard ML implementation with maps) has something looking like maps: ICON, with its table data structure [21]. However, it is a current trend in programming, and in particular in object oriented systems, to develop the notion of relation (mapping some object to other objects, i.e. maps) as a central notion, rivalling in importance with inheritance itself [27] 3.1.2 Illustration To give an ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton Series in Computer Science. Princeton University Press, 1986.
....generators, except for a few special operators. In many cases, expression evaluation in Icon and Duel is similar to evaluation in other languages, e.g. x y adds x and y; there is only one possible value for each operand. The semantics and efficient implementation of generators are well documented [2, 4, 5]. Icon is only one of several languages that might be used as a basis for a high level debugging language. The use of generators in Duel is more limited than in Icon, which is a complete, generalpurpose, very high level language. In addition to its generators, Duel includes some APL style ....
....prints 3 5, 3 6, 3 7, 4 5, 4 6, 4 7, Aliases As suggested above, name x ) fetches the value of the variable x. x can be a variable in the target program or an alias. Aliases are created by (define a e) which defines a to be an alias for e. If e is an lvalue, so is a, e.g. after (define b x[5]) changing b changes x[5] If e is a generator, a is aliased to each value in turn and define returns those values. case DEFINE: while (u = eval(n kids[1] alias(n name, u) yield u The operator (with e 1 e 2 ) evaluates e 2 in the scope of e 1 . When e 1 is a structure, opening the ....
[Article contains additional citation context not shown here]
R. E. Griswold and M. T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
....translation of Icon s goaldirected evaluation. The popular Icon translation system, which translates Icon into a bytecode for interpretation, controls goal directed evaluation by maintaining a stack of generator frames that indicate, among other things, what action should be taken upon failure [GG86]. Special bytecodes act to manipulate this stack by pushing,popping or modifying generator frames to achieve the desired goaldirected behavior. The new scheme requires nothing more powerful than conditional, direct, and indirect jumps. O Bagy and Griswold developed a technique for translating ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986. ISBN 0-691-08431-9.
....like intersection and comparison remain expensive. Hash tables are better [19] especially with separate chaining. Trabb Pardo [32] shows that destructive intersection is then linear in the lower of the cardinals of the two input sets. Hash tables are provided in Common Lisp [31] or Icon [16] for example, but operations on them are destructive: this is not suited to functional languages like ML. If non destructiveness is a need, Trabb Pardo showed that hash tries [19] are good candidates for access, update and intersection (see also [33, 13] This is the approach we took in HimML ....
R. E. Griswold and M. T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, 1986.
....a significant amount of nongenerated code, limiting the utility of the comparison. The Icon programming language [Griswold and Griswold 1983] was chosen because translation of Icon is of intermediate difficulty and because a well documented implementation of the language is freely available [Griswold and Griswold 1986]. Icon is a general purpose procedural language with particularly good support for string processing and high level data structures such as tables and lists. Moreunusual features included in Icon are goal directed evaluation, generators, and coexpressions. 2.1 Icont The baseline for the ....
....in Icon are goal directed evaluation, generators, and coexpressions. 2.1 Icont The baseline for the experiment was provided by the program Icont, part of the Icon implementation from the University of Arizona (version 8. 10) 2 Icont translates Icon programs into a target form called Ucode [Griswold and Griswold 1986]. Ucode is a stack based, postfix language designed explicitly for implementing Icon programs but similar in style to conventional assembly languages. The distributed version of Icont was modified in the following ways: 1) Invocation of the Icon preprocessor was disabled. Since we were not ....
Griswold, R. E. and Griswold, M. T. 1986. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, N.J.
....this further level of indirection reduces speed even further. 4.2 Hooked Values Object pointer representations and executable type descriptions are convenient for representing hooked values. A hooked value is a value that causes special things to happen when it is accessed. For example, in Icon [8] there is a hooked variable 6 pos that must have an integer value in a restricted range. An attempt to assign a value outside of this range to pos causes a piece of code to be executed that does something special. Icon has other hooked values as well. For example an Icon substring expression ....
....word sized values (which means using pointers for larger values) and if the number of types is restricted to the number of word representations, then wrapped values can be represented in two words: one for the type encoding and one for the value encoding. The implementations of Icon described in [8] and [22] both represent dynamically typed data in such pairs (with some extra information in the type word) In the following, such two word representations are called double wrappers . 5.1 Double Wrappers Since double wrappers have the type code and the value code in different registers, the ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
Ralph E. Griswold and Madge T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, Princeton, New Jersey, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
....of some constructions than is possible in most other programming languages. It is often possible to express constructions more concisely and closer to the way programmers think in mathematical and natural languages. For further information about this aspect of Icon, see Reference [7] Reference [4] describes an implementation of Icon in detail. Status Icon has been implemented on a wide range of computers, from personal computers to large scale mainframes. It is the most widely used and generally available high level string processing language. Other String Processing Languages Ambit ....
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.
No context found.
Griswold, R. E. and Griswold, M. T. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, New Jersey, 1986.
No context found.
Griswold, R. E. and Griswold, M. T. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, New Jersey, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
No context found.
Griswold, R. E. and Griswold, M. T. The Implementation of the Icon Programming Language. Princeton University Press, Princeton, New Jersey, 1986.
No context found.
Ralph E. Griswold and Madge T. Griswold. The Implementation of the Icon Programming Language. Peer-to-Peer Communications, third edition, 1996.
No context found.
R. E. Griswold and M. T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
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