Content deleted Content added
Jerryobject (talk | contribs) Template:Infobox programming language add, parameters: fill, WP:LINKs add. |
m Open access bot: doi added to citation with #oabot. |
||
(10 intermediate revisions by 10 users not shown) | |||
Line 27:
| influenced =
}}
'''IMP''' is an early [[systems
Even though {{citation needed span|date=June 2020|reason=While presumably true, the actual quote deserves a specific cite amongst a plethora of similar statements|its designer refers to the language as "being based on [[ALGOL]]"}}, IMP excludes many ''defining'' features of that language, while supporting a very non-ALGOL-like one: syntax extensibility.
A [[compiler]] for IMP existed as early as 1965 and was used
IMP compilers were developed for the [[CDC
==Extensible syntax in IMP72==
Being an
IMP72's syntax is extended by means of extended-BNF ''syntax statements'' included in a [[source code]] program. The mechanism is so powerful, that it allowed the implementation of the language by itself, i.e., by an IMP72 source file consisting entirely of syntax statements, which was input to a trivial compiler which was initially able to translate the simplest case of the syntax statement. There is also a simple form of the syntax statement which looks like a [[Macro (computer science)|macro]] to the casual user.
Basically, the syntax statement is an augmented BNF production with associated [[Semantics (computer science)|semantics]] added on the right:
<
<class> ::= syntax-part ::= semantic-part
</syntaxhighlight>
For example, to add the construct described by the following BNF:
<
<EXP> ::= INCREMENT <VBL>
</syntaxhighlight>
with the semantics that <code>INCREMENT V</code> should translate to <code>V ← V + 1</code>, the programmer would only need to insert the following ''IMP statement'':
<
<EXP> ::= INCREMENT <VBL,A> ::= "A←A+1"
</syntaxhighlight>
The semantic-part can also contain calls to ''semantic routines'', as in the following syntax statement:
<
<ATOM> ::= ABS ( <ATOM,A> ) ::= DEWOP(214B,AREG1(1,13),A)
</syntaxhighlight>
The semantic part of this statement consists of a call on the semantic routine <code>DEWOP</code>. The arguments are the octal constant <code>214B</code>, the semantic routine call <code>AREG1(1,13)</code>, and <code>A</code>, which is the object on top of the stack at the moment this production is invoked. <code>DEWOP</code> is a semantic routine which respectively takes as its arguments a PDP-10 machine language [[opcode]], a register object, and any other object, and produces an object whose value is the result of executing the designated machine instruction using as address field the object which is its last argument. In this
==Folklore
IMP was the language used on NSA's homegrown [[time-sharing]] [[operating system]] named ''Folklore''.<ref>{{cite web |last=Cotter |first=George |title=High-Performance Computing at the National Security Agency |url=http://publishing.cdlib.org/ucpressebooks/view?docId=ft0f59n73z&chunk.id=d0e12339&toc.depth=1&toc.id=d0e12308&brand=ucpress |work=Frontiers of Supercomputing II |publisher=
▲<ref>{{cite web|last=Cotter|first=George|title=High-Performance Computing at the National Security Agency|url=http://publishing.cdlib.org/ucpressebooks/view?docId=ft0f59n73z&chunk.id=d0e12339&toc.depth=1&toc.id=d0e12308&brand=ucpress|work=Frontiers of Supercomputing II|publisher=UNIVERSITY OF CALIFORNIA PRESS|accessdate=25 May 2012}}</ref>
==See also==
* [[Edinburgh IMP
==References==
{{Reflist}}
*{{Cite journal |last=Irons |first=Edgar T. |date=January 1970 |title=Experience with an Extensible Language |journal=[[Communications of the ACM]] |volume=13 |issue=1 |pages=31–40 |publisher=[[Association for Computing Machinery]]|doi=10.1145/361953.361966 |s2cid=17635545 |doi-access=free }}
*{{Cite
==External links==
* [https://www.saildart.org/IMP.BO%5B11,DOC%5D1 PDP-10 IMP72 Reference Manual]
* [http://pdp-10.trailing-edge.com/decuslib10-03/
{{ALGOL programming}}
{{DEFAULTSORT:Imp Programming Language}}
[[Category:Extensible syntax programming languages]]
[[Category:Systems programming languages]]
[[Category:National Security Agency]]
|