1710:
1700:
361:
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
567:, 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 example, the opcode
1101:
346:
or structures to it. To achieve its syntax-extensibility, IMP uses a powerful parse algorithm based on a syntax graph and several connectivity matrices. The programmer may add new
1092:
629:
1736:
929:
767:
1704:
342:
Being an extensible syntax programming language, IMP allows a programmer to extend its syntax, although no specific means are provided to add new
1741:
315:
since 1967. Although the compiler is slower than comparable ones for non-extensible languages, it has been used for practical production work.
1278:
1164:
1016:
1391:
1123:
1075:
785:
704:
669:
237:
34:
1386:
1746:
1435:
1315:
1682:
1624:
1144:
760:
312:
278:
575:
instruction, and thus the result of the above syntax statement will be to compile code to compute the absolute value of
370:
266:
965:
861:
111:
1260:
960:
753:
1181:
660:
204:
1154:
1059:
363:
274:
158:
153:
82:
1453:
1149:
1029:
897:
1096:
282:
146:
50:
46:
42:
38:
1535:
1307:
1250:
1159:
1118:
1043:
954:
347:
229:
29:
270:
1569:
1225:
824:
1545:
1325:
1220:
908:
794:
716:
683:
175:
77:
1024:
16:
This article is about Irons' IMP. For the contemporary and unrelated programming language, see
1714:
1550:
1425:
1320:
1240:
300:
features of that language, while supporting a very non-ALGOL-like one: syntax extensibility.
1644:
1639:
1558:
1440:
708:
673:
591:
224:
199:
1601:
1585:
1577:
1481:
1406:
1335:
1005:
563:
is a semantic routine which respectively takes as its arguments a PDP-10 machine language
67:
1657:
1476:
1363:
1340:
1273:
1245:
1128:
887:
1730:
1593:
1506:
1414:
1401:
1381:
1330:
924:
891:
607:
17:
695:
Bilofsky, Walter (May 1974). "Syntax
Extension and the IMP72 Programming Language".
687:
559:, which is the object on top of the stack at the moment this production is invoked.
1634:
1629:
1606:
1540:
1514:
1458:
1430:
1371:
1230:
720:
588:
1522:
739:
1619:
1527:
1376:
1353:
1348:
1268:
1235:
1215:
358:
142:
137:
734:
543:
The semantic part of this statement consists of a call on the semantic routine
369:
Basically, the syntax statement is an augmented BNF production with associated
1445:
1396:
1358:
857:
852:
1081:
867:
847:
832:
343:
208:
712:
678:
655:
1677:
1672:
1495:
1292:
1203:
988:
984:
814:
809:
804:
319:
308:
304:
254:
180:
168:
980:
882:
877:
872:
212:
1468:
993:
970:
949:
564:
331:
327:
192:
188:
745:
1087:
Euro-Asian
Council for Standardization, Metrology and Certification
1069:
999:
975:
939:
902:
837:
776:
398:
For example, to add the construct described by the following BNF:
291:
60:
1086:
933:
919:
913:
842:
334:
computers. Important IMP versions were IMP65, IMP70, and IMP72.
323:
216:
184:
749:
362:
also a simple form of the syntax statement which looks like a
307:
for IMP existed as early as 1965 and was used to program the
630:"High-Performance Computing at the National Security Agency"
429:, the programmer would only need to insert the following
277:(NSA). Unlike most other systems languages, IMP supports
290:
its designer refers to the language as "being based on
353:
IMP72's syntax is extended by means of extended-BNF
1695:^ = full name and link in prior ALGOL version above
1666:
1494:
1467:
1291:
1259:
1202:
1195:
1174:
1137:
1111:
1093:
International
Federation for Information Processing
1058:
1051:
1042:
1015:
823:
793:
784:
248:
235:
223:
198:
174:
164:
152:
136:
110:
88:
76:
66:
56:
28:
932:(ESPOL) â New Executive Programming Language (
273:in the late 1960s through early 1970s, at the
761:
587:IMP was the language used on NSA's homegrown
311:time-sharing system, which was in use at the
8:
1102:Society of Applied Mathematics and Mechanics
466:The semantic-part can also contain calls to
23:
930:Executive Systems Problem Oriented Language
1297:
1208:
1199:
1055:
1048:
790:
768:
754:
746:
22:
677:
656:"Experience with an Extensible Language"
470:, as in the following syntax statement:
1737:Extensible syntax programming languages
620:
547:. The arguments are the octal constant
1165:Massachusetts Institute of Technology
318:IMP compilers were developed for the
7:
1076:Association for Computing Machinery
998:Small Machine ALGOL Like Language (
705:Association for Computing Machinery
670:Association for Computing Machinery
14:
1709:
1708:
1699:
1698:
654:Irons, Edgar T. (January 1970).
636:. University of California Press
350:(BNF) productions to the graph.
1673:ALGOL 58 influence on ALGOL 60
634:Frontiers of Supercomputing II
313:Institute for Defense Analyses
1:
1742:Systems programming languages
735:PDP-10 IMP72 Reference Manual
1145:Case Institute of Technology
723:– via Yale University.
551:, the semantic routine call
267:systems programming language
1678:ALGOL 68 to other languages
119:; 52 years ago
94:; 59 years ago
1763:
338:Extensible syntax in IMP72
15:
1690:
1300:
1211:
1182:Royal Radar Establishment
661:Communications of the ACM
583:Folklore operating system
253:
243:
132:
106:
1747:National Security Agency
1155:University of St Andrews
472:
435:
421:with the semantics that
400:
375:
275:National Security Agency
83:National Security Agency
1454:Adriaan van Wijngaarden
1150:University of Edinburgh
1030:Van Wijngaarden grammar
165:Implementation language
1097:IFIP Working Group 2.1
283:extensible programming
269:that was developed by
1536:Cornelis H. A. Koster
1308:Roland Carl Backhouse
1251:Joseph Henry Wegstein
1160:Manchester University
1119:Burroughs Corporation
713:10.1145/987413.987416
679:10.1145/361953.361966
425:should translate to
373:added on the right:
366:to the casual user.
296:, IMP excludes many
1570:Willem van der Poel
1226:Hermann Bottenbruch
610:language (contrast)
244:IMP65, IMP70, IMP72
89:First appeared
25:
1715:Category: ALGOL 60
1546:Charles H. Lindsey
1326:Edsger W. Dijkstra
1221:Friedrich L. Bauer
909:Dartmouth ALGOL 30
1724:
1723:
1653:
1652:
1615:
1614:
1551:Barry J. Mailloux
1490:
1489:
1426:Jacob T. Schwartz
1321:Stephen R. Bourne
1287:
1286:
1241:Heinz Rutishauser
1191:
1190:
1038:
1037:
468:semantic routines
461:"AâA+1"
355:syntax statements
260:
259:
138:Typing discipline
1754:
1712:
1711:
1702:
1701:
1645:John C. Reynolds
1590:van Wijngaarden^
1559:Lambert Meertens
1441:Bernard Vauquois
1298:
1279:Robert M. Graham
1209:
1200:
1124:Elliott Brothers
1056:
1049:
791:
770:
763:
756:
747:
724:
691:
681:
646:
645:
643:
641:
628:Cotter, George.
625:
592:operating system
578:
574:
570:
562:
558:
554:
550:
546:
539:
536:
532:
529:
525:
522:
519:
515:
512:
509:
506:
503:
499:
495:
491:
487:
484:
481:
477:
462:
459:
455:
451:
447:
444:
440:
428:
424:
416:
412:
409:
405:
394:
391:
387:
384:
380:
348:BackusâNaur form
295:
127:
125:
120:
102:
100:
95:
68:Designed by
26:
1762:
1761:
1757:
1756:
1755:
1753:
1752:
1751:
1727:
1726:
1725:
1720:
1705:Category: ALGOL
1697:
1686:
1683:ALGOL 68 to C++
1662:
1649:
1611:
1602:Philip Woodward
1586:Michel Sintzoff
1578:Douglas T. Ross
1486:
1482:Kristen Nygaard
1463:
1407:John E. L. Peck
1336:Robert W. Floyd
1283:
1255:
1187:
1170:
1133:
1107:
1061:
1034:
1025:Jensen's device
1011:
898:Burroughs ALGOL
819:
796:
786:Implementations
780:
774:
731:
697:SIGPLAN Notices
694:
653:
650:
649:
639:
637:
627:
626:
622:
617:
604:
585:
576:
572:
571:designates the
568:
560:
556:
552:
548:
544:
541:
540:
537:
534:
530:
527:
523:
520:
517:
513:
510:
507:
504:
501:
497:
493:
489:
485:
482:
479:
475:
464:
463:
460:
457:
453:
449:
445:
442:
438:
427:V ← V + 1
426:
422:
419:
418:
414:
410:
407:
403:
396:
395:
392:
389:
385:
382:
378:
340:
289:
238:implementations
128:
123:
121:
118:
117:IMP72 / 1972
98:
96:
93:
21:
12:
11:
5:
1760:
1758:
1750:
1749:
1744:
1739:
1729:
1728:
1722:
1721:
1719:
1718:
1691:
1688:
1687:
1685:
1680:
1675:
1670:
1668:
1664:
1663:
1661:
1660:
1658:ALGOL Bulletin
1654:
1651:
1650:
1648:
1647:
1642:
1637:
1632:
1627:
1622:
1616:
1613:
1612:
1610:
1609:
1604:
1599:
1596:
1591:
1588:
1583:
1580:
1575:
1572:
1567:
1564:
1561:
1556:
1553:
1548:
1543:
1538:
1533:
1530:
1525:
1520:
1517:
1512:
1509:
1504:
1500:
1498:
1492:
1491:
1488:
1487:
1485:
1484:
1479:
1477:Ole-Johan Dahl
1473:
1471:
1465:
1464:
1462:
1461:
1456:
1451:
1448:
1443:
1438:
1433:
1428:
1423:
1420:
1417:
1412:
1409:
1404:
1399:
1394:
1392:Carroll Morgan
1389:
1384:
1379:
1374:
1369:
1366:
1361:
1356:
1351:
1346:
1343:
1341:Jeremy Gibbons
1338:
1333:
1328:
1323:
1318:
1313:
1310:
1305:
1301:
1295:
1289:
1288:
1285:
1284:
1282:
1281:
1276:
1274:Bernard Galler
1271:
1265:
1263:
1257:
1256:
1254:
1253:
1248:
1246:Klaus Samelson
1243:
1238:
1233:
1228:
1223:
1218:
1212:
1206:
1197:
1193:
1192:
1189:
1188:
1186:
1185:
1178:
1176:
1172:
1171:
1169:
1168:
1162:
1157:
1152:
1147:
1141:
1139:
1135:
1134:
1132:
1131:
1129:Regnecentralen
1126:
1121:
1115:
1113:
1109:
1108:
1106:
1105:
1099:
1090:
1084:
1079:
1073:
1066:
1064:
1053:
1046:
1040:
1039:
1036:
1035:
1033:
1032:
1027:
1021:
1019:
1013:
1012:
1010:
1009:
1003:
996:
991:
978:
973:
968:
963:
958:
952:
947:
942:
937:
927:
922:
917:
911:
906:
900:
895:
888:Atlas Autocode
885:
880:
875:
870:
865:
855:
850:
845:
840:
835:
829:
827:
821:
820:
818:
817:
812:
807:
801:
799:
788:
782:
781:
775:
773:
772:
765:
758:
750:
744:
743:
737:
730:
729:External links
727:
726:
725:
692:
648:
647:
619:
618:
616:
613:
612:
611:
603:
600:
584:
581:
573:Load Magnitude
473:
436:
401:
376:
357:included in a
339:
336:
271:Edgar T. Irons
258:
257:
251:
250:
246:
245:
241:
240:
233:
232:
227:
221:
220:
202:
196:
195:
178:
172:
171:
166:
162:
161:
156:
150:
149:
140:
134:
133:
130:
129:
116:
114:
112:Stable release
108:
107:
104:
103:
90:
86:
85:
80:
74:
73:
72:Edgar T. Irons
70:
64:
63:
58:
54:
53:
35:Multi-paradigm
32:
13:
10:
9:
6:
4:
3:
2:
1759:
1748:
1745:
1743:
1740:
1738:
1735:
1734:
1732:
1717:
1716:
1707:
1706:
1696:
1693:
1692:
1689:
1684:
1681:
1679:
1676:
1674:
1671:
1669:
1665:
1659:
1656:
1655:
1646:
1643:
1641:
1640:Peter O'Hearn
1638:
1636:
1633:
1631:
1628:
1626:
1623:
1621:
1618:
1617:
1608:
1605:
1603:
1600:
1597:
1595:
1594:Niklaus Wirth
1592:
1589:
1587:
1584:
1581:
1579:
1576:
1573:
1571:
1568:
1565:
1562:
1560:
1557:
1554:
1552:
1549:
1547:
1544:
1542:
1539:
1537:
1534:
1531:
1529:
1526:
1524:
1521:
1518:
1516:
1513:
1510:
1508:
1507:Susan G. Bond
1505:
1502:
1501:
1499:
1497:
1493:
1483:
1480:
1478:
1475:
1474:
1472:
1470:
1466:
1460:
1457:
1455:
1452:
1449:
1447:
1444:
1442:
1439:
1437:
1434:
1432:
1429:
1427:
1424:
1421:
1418:
1416:
1415:Brian Randell
1413:
1410:
1408:
1405:
1403:
1402:Maurice Nivat
1400:
1398:
1395:
1393:
1390:
1388:
1387:John McCarthy
1385:
1383:
1382:Conor McBride
1380:
1378:
1375:
1373:
1370:
1367:
1365:
1362:
1360:
1357:
1355:
1352:
1350:
1347:
1344:
1342:
1339:
1337:
1334:
1332:
1331:Andrey Ershov
1329:
1327:
1324:
1322:
1319:
1317:
1314:
1311:
1309:
1306:
1303:
1302:
1299:
1296:
1294:
1290:
1280:
1277:
1275:
1272:
1270:
1267:
1266:
1264:
1262:
1258:
1252:
1249:
1247:
1244:
1242:
1239:
1237:
1234:
1232:
1229:
1227:
1224:
1222:
1219:
1217:
1214:
1213:
1210:
1207:
1205:
1201:
1198:
1194:
1183:
1180:
1179:
1177:
1173:
1166:
1163:
1161:
1158:
1156:
1153:
1151:
1148:
1146:
1143:
1142:
1140:
1136:
1130:
1127:
1125:
1122:
1120:
1117:
1116:
1114:
1110:
1103:
1100:
1098:
1094:
1091:
1088:
1085:
1083:
1080:
1077:
1074:
1071:
1068:
1067:
1065:
1063:
1057:
1054:
1052:Organizations
1050:
1047:
1045:
1041:
1031:
1028:
1026:
1023:
1022:
1020:
1018:
1014:
1007:
1004:
1001:
997:
995:
992:
990:
986:
982:
979:
977:
974:
972:
969:
967:
964:
962:
959:
956:
953:
951:
948:
946:
943:
941:
938:
935:
931:
928:
926:
925:Elliott ALGOL
923:
921:
918:
915:
912:
910:
907:
904:
901:
899:
896:
893:
892:Edinburgh IMP
889:
886:
884:
881:
879:
876:
874:
871:
869:
866:
863:
859:
856:
854:
851:
849:
846:
844:
841:
839:
836:
834:
831:
830:
828:
826:
822:
816:
813:
811:
808:
806:
803:
802:
800:
798:
792:
789:
787:
783:
778:
771:
766:
764:
759:
757:
752:
751:
748:
741:
740:IMP72 Sources
738:
736:
733:
732:
728:
722:
718:
714:
710:
706:
702:
698:
693:
689:
685:
680:
675:
671:
667:
663:
662:
657:
652:
651:
635:
631:
624:
621:
614:
609:
608:Edinburgh IMP
606:
605:
601:
599:
597:
593:
590:
582:
580:
566:
471:
469:
434:
432:
431:IMP statement
399:
393:semantic-part
374:
372:
367:
365:
360:
356:
351:
349:
345:
337:
335:
333:
329:
325:
321:
316:
314:
310:
306:
301:
299:
293:
286:
284:
280:
276:
272:
268:
264:
256:
252:
249:Influenced by
247:
242:
239:
234:
231:
228:
226:
222:
218:
214:
210:
206:
203:
201:
197:
194:
190:
186:
182:
179:
177:
173:
170:
167:
163:
160:
157:
155:
151:
148:
144:
141:
139:
135:
131:
115:
113:
109:
105:
91:
87:
84:
81:
79:
75:
71:
69:
65:
62:
59:
55:
52:
48:
44:
40:
36:
33:
31:
27:
19:
18:Edinburgh IMP
1713:
1703:
1694:
1635:Ron Morrison
1630:Tony Brooker
1607:Nobuo Yoneda
1541:Peter Landin
1523:Gerhard Goos
1515:Robert Dewar
1459:Mike Woodger
1436:David Turner
1431:Micha Sharir
1419:Rutishauser^
1372:Peter Landin
1345:Julien Green
1316:Richard Bird
1231:Charles Katz
1062:associations
1060:Professional
944:
700:
696:
665:
659:
638:. Retrieved
633:
623:
595:
589:time-sharing
586:
542:
467:
465:
430:
420:
397:
368:
354:
352:
341:
317:
302:
297:
288:Even though
287:
265:is an early
262:
261:
1625:John Barnes
1620:Hal Abelson
1528:Michael Guy
1377:Tom Maibaum
1364:Jørn Jensen
1354:Eric Hehner
1349:David Gries
1269:Bruce Arden
1236:Alan Perlis
1216:John Backus
779:programming
553:AREG1(1,13)
423:INCREMENT V
386:syntax-part
359:source code
230:Proprietary
1731:Categories
1667:Comparison
1446:Eiiti Wada
1397:Peter Naur
1359:Tony Hoare
1175:Government
1017:Formalisms
858:ALGOL 68RS
853:ALGOL 68-R
742:(dcus:*.*)
615:References
344:data types
51:extensible
47:structured
43:imperative
39:procedural
1582:Samelson^
1555:McCarthy^
1519:Dijkstra^
1450:Wegstein^
1422:Samelson^
1138:Education
1082:BSI Group
1044:Community
955:Kidsgrove
868:ALGOL 68S
848:ALGOL 68C
833:ABC ALGOL
797:standards
795:Technical
707:: 13â30.
672:: 31â40.
446:INCREMENT
411:INCREMENT
371:semantics
78:Developer
30:Paradigms
1598:Woodger^
1574:Randell^
1496:ALGOL 68
1293:ALGOL 60
1204:ALGOL 58
1112:Business
989:Napier88
985:PS-algol
825:Dialects
815:ALGOL 68
810:ALGOL 60
805:ALGOL 58
688:17635545
602:See also
596:Folklore
320:CDC 6600
309:CDC 6600
305:compiler
298:defining
255:ALGOL 60
219:, others
181:CDC 6600
176:Platform
169:ALGOL 60
1511:Bourne^
1411:Perlis^
1304:Backus^
1095:(IFIP)
981:S-algol
883:ALGOL X
878:ALGOL W
873:ALGOL N
721:2170981
225:License
213:TOPS-10
159:Lexical
122: (
97: (
1532:Hoare^
1503:Bauer^
1469:Simula
1312:Bauer^
1196:People
1104:(GAMM)
1089:(EASC)
994:Simula
971:NELIAC
950:JOVIAL
719:
686:
640:25 May
594:named
565:opcode
555:, and
478:>::
456:>::
441:>::
406:>::
381:>::
332:PDP-11
328:PDP-10
279:syntax
236:Major
193:PDP-11
189:PDP-10
147:strong
143:Static
57:Family
1566:Peck^
1563:Naur^
1368:Katz^
1184:(RRE)
1167:(MIT)
1078:(ACM)
1072:Group
1070:ALCOR
1008:ALGOL
1000:SMALL
976:RTL/2
957:Algol
940:FLACC
916:ALGOL
903:CORAL
838:ALCOR
777:ALGOL
717:S2CID
703:(5).
684:S2CID
668:(1).
561:DEWOP
545:DEWOP
518:AREG1
505:DEWOP
417:>
379:class
364:macro
292:ALGOL
209:SCOPE
154:Scope
61:ALGOL
1006:SMIL
966:Mary
934:NEWP
920:DG/L
914:DASK
862:ELLA
843:ALGO
642:2012
569:214B
549:214B
496:>
490:ATOM
488:<
476:ATOM
474:<
448:<
437:<
413:<
402:<
377:<
330:and
324:Cray
217:Unix
185:Cray
124:1972
99:1965
92:1965
1261:MAD
961:MAD
945:IMP
709:doi
674:doi
511:214
483:ABS
450:VBL
439:EXP
415:VBL
404:EXP
263:IMP
205:COS
24:IMP
1733::
987:,
983:,
905:66
715:.
699:.
682:.
666:13
664:.
658:.
632:.
598:.
579:.
528:13
500:::
433::
388:::
326:,
322:,
303:A
285:.
215:,
211:,
207:,
200:OS
191:,
187:,
183:,
145:,
49:,
45:,
41:,
37::
1002:)
936:)
894:)
890:(
864:)
860:(
769:e
762:t
755:v
711::
701:9
690:.
676::
644:.
577:A
557:A
538:)
535:A
533:,
531:)
526:,
524:1
521:(
516:,
514:B
508:(
502:=
498:)
494:A
492:,
486:(
480:=
458:=
454:A
452:,
443:=
408:=
390:=
383:=
294:"
281:-
126:)
101:)
20:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.