Path: csiph.com!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: gah4 Newsgroups: comp.compilers Subject: STEP compiler generator Date: Tue, 14 Jun 2022 00:00:35 -0700 (PDT) Organization: Compilers Central Lines: 35 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-06-045@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="53016"; mail-complaints-to="abuse@iecc.com" Keywords: tools, history Posted-Date: 14 Jun 2022 06:27:48 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:3074 The program called STEP, that I worked on as part of a summer undergraduate project is described here: http://www.bitsavers.org/pdf/stanford/slac/The_STEP_Processor.pdf According to its manual, it is a: "Recursive descent compiler generator", and so possibly an answer to the previous question about compiler generators. In one program it has a parser generator, interpreter for the generated parser, replacement procedure (what Bison calls action) compiler, and interpreter for compiled replacement procedures. STEP originated from the same group that did Mortran, and might be considered the next generation. It is designed as a macro processor that can fully parse its arguments. It can be used as a more ordinary macro processor, though with error checking on arguments, but to use it as a compiler generator, you write one macro with the whole input program as its argument. It is then parsed, while generating the appropriate output. As usual for compilers (and macro processors) it is written using itself, to allow for a language that is a structured, and otherwise improved language based on Fortran 66. It is well designed for writing source to source compilers, as source language translators. Less well designed for generating assembly code or machine code. It took a little while to get it running again, as the version I started with had some bugs that the version I had so many years ago did not have. (Partly because I wanted it to run with subscript checks on.)