Knowledge (XXG)

IMP (programming language)

Source 📝

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:.

Index

Edinburgh IMP
Paradigms
Multi-paradigm
procedural
imperative
structured
extensible
ALGOL
Designed by
Developer
National Security Agency
Stable release
Typing discipline
Static
strong
Scope
Lexical
ALGOL 60
Platform
CDC 6600
Cray
PDP-10
PDP-11
OS
COS
SCOPE
TOPS-10
Unix
License
Proprietary

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑