请输入您要查询的百科知识:

 

词条 Snostorm
释义

  1. Features added

  2. Example

  3. Use

  4. References

  5. External links

Snostorm (Snostorm3) is a version of the SNOBOL4 language with structured programming constructs added. It compensates for the near absence of structured programming constructs in SNOBOL4 by providing IF, ELSEIF, ELSE, LOOP, CASE, and PROCEDURE statements, among others. It was originally designed and implemented by Fred G. Swartz as a preprocessor for SPITBOL running under the Michigan Terminal System (MTS) at the University of Michigan Computing Center during the 1970s.[1]

Features added

Added features include logical operators, control structures including procedures, initialization blocks, enhanced comments, and listing control.[1]

The grammar includes these added constructs:[1]

Logical operators
  • AND, OR, and NOT logical operators.
Control structures
  • IF, ELSEIF, ELSE, and ENDIF statements.
  • LOOP, LOOP WHILE, LOOP UNTIL, LOOP FOR, EXITLOOP, NEXTLOOP, ENDLOOP, and ENDLOOP REPEAT statements.
  • DOCASE, CASE, ELSECASE, and ENDCASE statements.
  • PROCEDURE (PROC), EXITPROCEDURE (EDITPROC), and ENDPROCEDURE (ENDPROC) statements.
Initialization
  • INITIAL and ENDINITIAL statements.
Enhanced comments
  • Comments starting with an asterisk () in columns other than column 1.
  • Blank lines treated as comments.
Listing control
  • EJECT, TITLE, SUBTITLE, SPACE, LIST ON, LIST OFF, LIST PUSHON, LIST PUSHOFF, and LIST POP statements.

In addition MTS Snostorm provided options for prettyprinting and for debugging with the Spitbol compiler.

The syntax of Snostorm is largely insensitive to spaces and newlines, but not entirely so because of its dependence upon SNOBOL4 for execution.

Example

A SNOBOL4 program as given in The SNOBOL4 Programming Language by Griswold, Poage, and Polonsky[2] followed by the same program rewritten in Snostorm.[1]

 * The original SNOBOL4 program.        ... READ   OUTPUT         = INPUT          :F(DISPLAY)        TEXT           = OUTPUT NEXT   TEXT CHAR      =                :F(READ)        COUNT      = COUNT + 1  :(NEXT)        DISPLAY OUTPUT = LOOP   LETTERS CHAR   =                :F(END)        OUTPUT         = NE(COUNT) CH ' OCCURS ' COUNT ' TIMES' +                                      :(LOOP) END
 * The same program, rewritten in Snostorm.         ...        LOOP WHILE TEXT = INPUT           OUTPUT = TEXT           LOOP WHILE TEXT CHAR =              COUNT = COUNT + 1           ENDLOOP        ENDLOOP        OUTPUT =        LOOP WHILE LETTERS CHAR =           IF NE(COUNT)              OUTPUT = CH ’ OCCURS ’ COUNT ’ TIMES’           ENDIF        ENDLOOP END

Use

In addition to its use at the eight to fifteen sites that ran the Michigan Terminal System,[1] a Snostorm3 compiler existed at University College London (UCL) from 1982 to 1984 and worked by compiling Snostorm3 into SNOBOL4, which could then be executed using the SNOBOL4 interpreter or by using a SPITBOL compiler to create an executable.{{citation needed |date=September 2014}}

References

1. ^[https://books.google.com/books?id=WxVXAAAAMAAJ&pg=PA114&lpg=PA114&dq=snostorm+preprocessor&source=bl&ots=H5fdaCJj5n&sig=xvuW41x302-Je8xI1q8SbMSTM4Y&hl=en&sa=X&ei=E4f3U5jaOaLFigLOyYD4DQ&redir_esc=y#v=onepage&q=snostorm%20preprocessor&f=false "SNOSTORM"], MTS Volume 9: SNOBOL4 in MTS, Computing Center, University of Michigan, June 1979, pages 99-120. Retrieved 1 September 2014.
2. ^Griswold, Ralph E., J. F. Poage, and I. P. Polonsky (1968). The SNOBOL4 Programming Language. Englewood Cliffs, NJ: Prentice Hall, {{ISBN|0-13-815373-6}}.

External links

  • Fred Swartz's description of Snostorm, 2010.
  • "The SNOSTORM Returneth", source files for a modern re-implementation.
  • MTS source and object code for the Snostorm preprocessor, component 678 in MTS Distribution 6.0, April 1988, available from Bitsavers and the U-M's Deep Blue digital archive.

3 : Text-oriented programming languages|SNOBOL programming language family|University of Michigan

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/15 2:36:28