H ? « »

Language peer sets for XPL:
United States
United States/1967
Designed 1967
1960s languages
Third generation
High Cold War
Genus XPLs
Multi-purpose
XPLs
PL/I Languages
Imperative
XPLs/1967
PL/I Languages/1967
Imperative/1967
XPLs/United States
PL/I Languages/United States
Imperative/United States
Multi-purpose
Multi-purpose/1967
Multi-purpose/us

XPL(ID:308/xpl001)

Compiler subset of PL/I 

alternate simple view
Country: United States
Designed 1967
Published: 1967
Genus: XPLs
Sammet category: Multi-purpose


W. M. Mckeeman Information And Computer Sciences University Of California Santa Cruz, California
J. J. Horning and D. B. Wortman Computer Science Department And Computation Center (Campus Facility) Stanford University Stanford, California

Stanford 1967-69, Santa CRuz 1968-1969.

Small dialect of PL/I used for compiler writing.

One-dimensional arrays. I/O achieved with character pseudo-variable INPUT and OUTPUT, e.g.
       OUTPUT = 'This is a line';

Inline machine code.
"Programmers are given all the rope they ask for. Novices tend to hang themselves fairly frequently."

Implemented on IBM 360, Univac 1100, ICL System 4, CDC6000 and Cyber series, XDS Sigma-5 and Sigma-7, and DEC PDP- 10.




Places
Structures:
Related languages
PL/I XPL   Subset
XPL HAL/S   Written using
XPL MALUS   Extension of
XPL PL/EXUS   Written using
XPL PL/M   Influence
XPL SB-Pascal   Written using
XPL SB-Prolog   Written using
XPL SIMPL   Influence
XPL Sue   Influence
XPL XCOM   Extension of

References:
  • McKeeman W.M. et al, (1968) McKeeman W.M. et al, "A Compiler Generator" Abstract
          in [AFIPS] (1968) [AFIPS] Proceedings of the 1968 Spring Joint Computer Conference SJCC 32
  • Rosin (1969) Rosin R F "PL/1 Implementation survey" PL/I Bulletin 7 (in ACM SIGPLAN Notices Feb 1969) Extract: Introduction
          in [AFIPS] (1968) [AFIPS] Proceedings of the 1968 Spring Joint Computer Conference SJCC 32
  • McKeeman, William (1970) McKeeman, William "A Compiler Generator" Prentice-Hall 1970
          in [AFIPS] (1968) [AFIPS] Proceedings of the 1968 Spring Joint Computer Conference SJCC 32
  • Stock (1971) Stock, Karl F. "A listing of some programming languages and their users" in RZ-Informationen. Graz: Rechenzentrum Graz 1971 286 Abstract
          in [AFIPS] (1968) [AFIPS] Proceedings of the 1968 Spring Joint Computer Conference SJCC 32
  • Leach, Geoffrey and Golde, Helmut. (1973) Leach, Geoffrey and Golde, Helmut. "Bootstrapping XPL to an XDS Sigma 5 Computer."
          in (1973) Software — Practice and Experience 3 1973
  • Sammet, Jean E. (1973) Sammet, Jean E. "Roster of Programming Languages for 1973" p147 Extract: Review
          in (1974) ACM Computing Reviews 15(04) April 1974
  • Stock and Stock (1973) Stock, Marylene and Stock, Karl F. "Bibliography of Programming Languages: Books, User Manuals and Articles from PLANKALKUL to PL/I" Verlag Dokumentation, Pullach/Munchen 1973 656 Abstract
          in (1974) ACM Computing Reviews 15(04) April 1974
  • Alexander, W.G. and Wortman, D.B. (1975) Alexander, W.G. and Wortman, D.B. "Static and Dynamic Charactersistics of XPL Programs"
          in (1975) IEEE Computer Nov 1975
  • Kamnitzer, S.H. (1975) Kamnitzer, S.H. "Bootstrapping XPL from IBM/360 to UNIVAC 1100."
          in [SIGPLAN] (1975) SIGPLAN Notices 10(05) May 1975
  • Storm, Mark W. and Jim A. Polk (1976) Storm, Mark W. and Jim A. Polk "Usage of an XPL based compiler generator system" Abstract
          in [ACM] (1976) [ACM] Proceedings of the 14th annual ACM Southeast Regional Conference 1976, Birmingham, Alabama
  • Sammet, Jean E (1978) Sammet, Jean E "Roster of programming languages for 1976-77" pp56-85
          in [SIGPLAN] (1978) SIGPLAN Notices 13(11) Nov 1978
  • Wortman, D.B. (1978) Wortman, D.B. "A roster of XPL implementations." HTML conversion
          in [SIGPLAN] (1978) SIGPLAN Notices 13(01) Jan 1978
  • Dencker, Peter; Dürre, Karl; Heuft, Johannes (1984) Dencker, Peter; Dürre, Karl; Heuft, Johannes "Optimization of parser tables for portable compilers" pp546-572
          in TOPLAS 6(4) October 1984 Lecture Notes in compute (1984) TOPLAS 6(4) October 1984 Lecture Notes in computer science Vol. 174
  • Feldbauer, Gary R (1985) Feldbauer, Gary R "Enhancement and Extensions to the XPL Compiler Generator System" Air Force Inst of Tech Wright-Patterson AFB OH Aug 78 AFIT-CI-79-85
          in TOPLAS 6(4) October 1984 Lecture Notes in compute (1984) TOPLAS 6(4) October 1984 Lecture Notes in computer science Vol. 174
  • Klumpp, Allan R. (1985) Klumpp, Allan R. "Space Station Flight Software: Hal/S or Ada?" Computer March 1985: 20-28.
          in TOPLAS 6(4) October 1984 Lecture Notes in compute (1984) TOPLAS 6(4) October 1984 Lecture Notes in computer science Vol. 174
  • Flass, Peter (2000) Flass, Peter "Languages Related to PL/I" in "The PL/I Language" Online copy at Peter Flass's PL/1 site
          in TOPLAS 6(4) October 1984 Lecture Notes in compute (1984) TOPLAS 6(4) October 1984 Lecture Notes in computer science Vol. 174
    Resources
    • <program> ::= <statement list> EOF <statement list> ::= <statement> | <statement list> <statement> <statement> ::= <basic statement> | <if statement> <basic statement> ::= <assignment> ; | <group> ; | <procedure definition> ; | <return statement> ; | <call statement> ; | <go to statement> ; | <declaration statement> ; | ; | <label definition> <basic statement> <if statement> ::= <if clause> <statement> | <if clause> <true part> <statement> | <label definition> <if statement> <if clause> ::= IF <expression> THEN <true part> ::= <basic statement> ELSE <group> ::= <group head> <ending> <group head> ::= DO ; | DO <step definition> ; | DO <while clause> ; | DO <case selector> ; | <group head> <statement> <step definition> ::= <variable> <replace> <expression> <iteration control> <iteration control> ::= TO <expression> | TO <expression> BY <expression> <while clause> ::= WHILE <expression> <case selector> ::= CASE <expression> <procedure definition> ::= <procedure head> <statement list> <ending> <procedure head> ::= <procedure name> ; | <procedure name> <type> ; | <procedure name> <parameter list> ; | <procedure name> <parameter list> <type> ; <procedure name> ::= <label definition> PROCEDURE <parameter list> ::= <parameter head> <identifier> ) <parameter head> ::= ( | <parameter head> <identifier> , <ending> ::= END | END <identifier> | <label definition> <ending> <label definition> ::= <identifier> : <return statement> ::= RETURN | RETURN <expression> <call statement> ::= CALL <variable> <go to statement> ::= <go to> <identifier> <go to> ::= GO TO | GOTO <declaration statement> ::= DECLARE <declaration element> | <declaration statement> , <declaration element> <declaration element> ::= <type declaration> | <identifier> LITERALLY <string> <type declaration> ::= <identifier specification> <type> | <bound head> <number> ) <type> | <type declaration> <initial list> <type> ::= FIXED | CHARACTER | LABEL | <bit head> <number> ) <bit head> ::= BIT ( <bound head> ::= <identifier specification> ( <identifier specification> ::= <identifier> | <identifier list> <identifier> ) <identifier list> ::= ( | <identifier list> <identifier> , <initial list> ::= <initial head> <constant> ) <initial head> ::= INITIAL ( | <initial head> <constant> , <assignment> ::= <variable> <replace> <expression> | <left part> <assignment> <replace> ::= = <left part> ::= <variable> , <expression> ::= <logical factor> | <expression> | <logical factor> <logical factor> ::= <logical secondary> | <logical factor> & <logical secondary> <logical secondary> ::= <logical primary> | ¬ <logical primary> <logical primary> ::= <string expression> | <string expression> <relation> <string expression> <relation> ::= = | < | > | ¬ = | ¬ < | ¬ > | < = | > = <string expression> ::= <arithmetic expression> | <string expression> || <arithmetic expression> <arithmetic expression> ::= <term> | <arithmetic expression> + <term> | <arithmetic expression> - <term> | + <term> | - <term> <term> ::= <primary> | <term> * <primary> | <term> / <primary> | <term> MOD <primary> <primary> ::= <constant> | <variable> | ( <expression> ) <variable> ::= <identifier> | <subscript head> <expression> ) <subscript head> ::= <identifier> ( | <subscript head> <expression> , <constant> ::= <string> | <number>

      The following definitions are hardcoded into the lexical scanner:

       <number> ::= <integer> | <bit string> <integer> ::= <decimal digit> | <integer> <decimal digit> <decimal digit> ::= 0|1|2|3|4|5|6|7|8|9 <bit string> ::= "<bit list>" <bit list> ::= <hex integer> | <bit group> | <bit list> <bit group> <bit group> ::= (1)<binary integer> | (2)<quartal integer> | (3)<octal integer> | (4)<hex integer> <binary integer> ::= <binary digit> | <binary integer> <binary digit> <binary digit> ::= 0|1 <quartal integer> ::= <quartal digit> | <quartal integer> <quartal digit> <quartal digit> ::= 0|1|2|3 <octal integer> ::= <octal digit> | <octal integer> <octal digit> <octal digit> ::= 0|1|2|3|4|5|6|7 <hex integer> ::= <hex digit> | <hex integer> <hex digit> <hex digit> ::= 0|1|2||3|4|5|6|7|8|9|A|B|C|D|E|F <string> ::= <characters> | ′′ <characters> ::= <character> | <characters> <character> <character> ::= ′′ | {any EBCDIC character other than  } <identifier> ::= <id character> | <identifier> <id character> | <identifier> <decimal digit> <id character> ::= <letter> | <break character> <letter> ::= A|B|C ... |Z|a|b|c ... |z <decimal digit> ::= 0|1| ... |9 <break character> ::= _ | @ | # | $ No identifier can exceed 256 characters. The following reserved words cannot be used as identifiers: 
      BITDECLARE GOTOPROCEDURE
      BYELSEIFRETURN
      CALLENDINITIALTHEN
      CASEEOFLABELTO
      CHARACTER FIXEDLITERALLY WHILE
      DOGOMOD
      <comment> ::= <opening bracket> <almost anything> <closing bracket> <opening bracket> ::= /* <closing bracket> ::= */ <almost anything> ::= {any string of valid characters which does not contain a <closing bracket>} A $ within a comment specifies that the next <character> is a control character. There are 256 control toggles corresponding to the 256 valid character codes. Each toggle can have a value true or false. When $<character> is encountered, the value of the corresponding toggle is complemented. Currently defined toggles are:
      toggleDescriptioninitial
      BInterlist emitted byte codes in hex.off
      DPrint statistics and symbol table.on
      EInterlist emitted assembly code.off
      LList compiled program.on
      MList program without auxiliary information.off
      NWarn if procedure args¬=parameters.off
      SDump symbol table at end of each procedure.off
      TBegin tracing. 
      UTerminate tracing. 
      ZAllow program to execute in spite of errors.off
      |Set margin. Input scan will be terminated at column containing the | 
      ');">BNF for XPL: Grammar
    • XPL Home Page at Toronto U
    • XPL distribution tape for 370 zipped
    • Source for XCOM compiler
    • Source for MULTICS XPL

    Search in: Google  Google scholar  World Cat  Yahoo  Overture  DBLP  Monash bib  NZ  IEEE  ACM portal  CiteSeer  CSB  ncstrl  jstor  Bookfinder