scribbled a60
svn: r8312
This commit is contained in:
parent
1bb2aad735
commit
21d43e4635
71
collects/algol60/algol60.scrbl
Normal file
71
collects/algol60/algol60.scrbl
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
#lang scribble/doc
|
||||||
|
@(require scribble/manual
|
||||||
|
(for-label algol60/algol60))
|
||||||
|
|
||||||
|
@title{Algol 60}
|
||||||
|
|
||||||
|
@section{Implementation}
|
||||||
|
|
||||||
|
The ``Algol 60'' language for DrScheme implements the language defined
|
||||||
|
by the ``Revised Report on the Algorithmic Language Algol 60,'' edited
|
||||||
|
by Peter Naur.
|
||||||
|
|
||||||
|
@section{Including Algol 60 Programs}
|
||||||
|
|
||||||
|
Although Algol 60 is mainly provided as a DrScheme language,
|
||||||
|
@scheme[include-algol] supports limited use of Algol 60 programs in
|
||||||
|
larger programs.
|
||||||
|
|
||||||
|
@defmodule[algol60/algol60]
|
||||||
|
|
||||||
|
@defform[(include-algol path-string)]{
|
||||||
|
|
||||||
|
Includes the Algol 60 program indicated by @scheme[path-string] as an
|
||||||
|
expression in a Scheme program. The included Algol 60 program is
|
||||||
|
closed (i.e., it doesn't see any bindings in the included context),
|
||||||
|
and the result is always @|void-const|.}
|
||||||
|
|
||||||
|
|
||||||
|
@section{Language}
|
||||||
|
|
||||||
|
The DrScheme and @scheme[include-algol] implementation departs from
|
||||||
|
the Algol 60 specification in the following minor ways:
|
||||||
|
|
||||||
|
@(itemize (item "Strings are not permitted to contain nested quotes.")
|
||||||
|
(item "Identifiers cannot contain whitespace.")
|
||||||
|
(item "Argument separators are constrained to be identifiers (i.e., they
|
||||||
|
cannot be keywords, and they cannot consist of multiple
|
||||||
|
identifiers separated by whitespace.)")
|
||||||
|
(item "Numbers containing exponents (using the ``10'' subscript) are not
|
||||||
|
supported."))
|
||||||
|
|
||||||
|
Identifiers and keywords are case-sensitive. The boldface/underlined
|
||||||
|
keywords of the report are represented by the obvious character
|
||||||
|
sequence, as are most operators. A few operators do not fit into
|
||||||
|
ASCII, and they are mapped as follows:
|
||||||
|
|
||||||
|
@(verbatim
|
||||||
|
" times *
|
||||||
|
quotient div
|
||||||
|
exponential ^
|
||||||
|
less or equal <=
|
||||||
|
greater or equal >=
|
||||||
|
not equal !=
|
||||||
|
equivalence ==
|
||||||
|
implication =>
|
||||||
|
and &
|
||||||
|
or |
|
||||||
|
negation !")
|
||||||
|
|
||||||
|
In addition to the standard functions, the following output functions
|
||||||
|
are supported:
|
||||||
|
|
||||||
|
@(verbatim
|
||||||
|
" prints(E) prints the string E
|
||||||
|
printsln(E) prints the string E followed by a newline
|
||||||
|
printn(E) prints the number E
|
||||||
|
printnln(E) prints the number E followed by a newline")
|
||||||
|
|
||||||
|
A prompt in DrScheme's Interactions window accepts whole programs only
|
||||||
|
for the Algol 60 language.
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
_Algol 60_
|
|
||||||
|
|
||||||
The "Algol 60" language for DrScheme implements the language defined
|
|
||||||
by the "Revised Report on the Algorithmic Language Algol 60", edited
|
|
||||||
by Peter Naur.
|
|
||||||
|
|
||||||
|
|
||||||
The "algol60.ss" library provides an `include-algol' form for including
|
|
||||||
an Algol 60 program as an expression in a Scheme program:
|
|
||||||
|
|
||||||
> (include-algol file-path-string)
|
|
||||||
|
|
||||||
The included Algol 60 program is closed (i.e., it doesn't see any
|
|
||||||
bindings in the included context), and the result is always void.
|
|
||||||
|
|
||||||
|
|
||||||
Language
|
|
||||||
--------
|
|
||||||
|
|
||||||
The DrScheme/`include-algol' implementation departs from the
|
|
||||||
specification in the following minor ways:
|
|
||||||
|
|
||||||
* strings are not permitted to contain nested quotes;
|
|
||||||
|
|
||||||
* identifiers cannot contain whitespace;
|
|
||||||
|
|
||||||
* argument separators are constrained to be identifiers (i.e., they
|
|
||||||
cannot be keywords, and they cannot consistent of multiple
|
|
||||||
identifiers separated by whitespace); and
|
|
||||||
|
|
||||||
* numbers containing exponents (using the "10" subscript) are not
|
|
||||||
supported.
|
|
||||||
|
|
||||||
Identifiers and keywords are case-sensitive. The boldface/underlined
|
|
||||||
keywords of the report are represented by the obvious character
|
|
||||||
sequence, as are most operators. A few operators do not fit into
|
|
||||||
ASCII, and they are mapped as follows:
|
|
||||||
|
|
||||||
times *
|
|
||||||
quotient div
|
|
||||||
exponential ^
|
|
||||||
less or equal <=
|
|
||||||
greater or equal >=
|
|
||||||
not equal !=
|
|
||||||
equivalence ==
|
|
||||||
implication =>
|
|
||||||
and &
|
|
||||||
or |
|
|
||||||
negation !
|
|
||||||
|
|
||||||
In addition to the standard functions, the following output functions
|
|
||||||
are supported:
|
|
||||||
|
|
||||||
prints(E) prints the string E
|
|
||||||
printsln(E) prints the string E followed by a newline
|
|
||||||
printn(E) prints the number E
|
|
||||||
printnln(E) prints the number E followed by a newline
|
|
||||||
|
|
||||||
A prompt in DrScheme's Interactions window accepts whole programs only
|
|
||||||
for the Algol 60 language.
|
|
||||||
|
|
|
@ -2,5 +2,7 @@
|
||||||
(define name "Algol 60")
|
(define name "Algol 60")
|
||||||
(define doc.txt "doc.txt")
|
(define doc.txt "doc.txt")
|
||||||
(define tools '(("tool.ss")))
|
(define tools '(("tool.ss")))
|
||||||
(define tool-names '("Algol 60")))
|
(define tool-names '("Algol 60"))
|
||||||
|
(define scribblings '(("algol60.scrbl")))
|
||||||
|
(define doc-categories '(other)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user