ALGOL W

ALGOL W，一種程式語言，為ALGOL家族的一份子。它基於尼克勞斯·維爾特與東尼·霍爾在針對ALGOL X所提出的草案而設計，希望能作為ALGOL 60的後繼者。經過小幅度的修改，在史丹福大學，尼克勞斯·維爾特利用IBM System/360機器，以PL360實作出第一版的ALGOL W (Various documents for Stanford's 1972 implementation of ALGOL W; this report includes the ALGOL W Language Description.。

ALGOL W是原本ALGOL 60的相对简单的升级，它增加了字符串、位串、复数、到记录数据类型的引用，和传结果调用的参数传递，介入了while语句，将switch替代为case语句，并在总体上的紧实了这门语言。它的編譯器是用尼克勞斯·維爾特所設計的PL360組語所寫成。

 语法和语义 
ALGOL W的建造在EBCDIC字符编码集的子集之上。在ALGOL 60中，保留字是独立的词法项目，但是在ALGOL W中它们只是字符序列，而不需要被起来。保留字和标识符由空格分隔。在这种方式下，ALGOL W的语法类似于Pascal和后来的语言。

《ALGOL W语言描述》，采用了类似于巴科斯-诺尔范式（BNF）的定义了ALGOL W。这种形式文法是的先驱。

大量的ALGOL W语义是在文法上定义的：
 标识符由它们在当前作用域内的定义来区分。例如，⟨procedure identifier⟩是由过程声明定义的标识符，⟨label identifier⟩是用作goto标签的标识符。
 变量和的类型通过附缀来的表示。例如，⟨τ function identifier⟩是针对返回类型τ的值的函数的一个语法实体，如果这个标识符已经在当前作用域内被声明为整数函数，那么它被展开为⟨integer function identifier⟩。
 类型错误是文法错误。例如，⟨integer expression⟩ / ⟨integer expression⟩和⟨real expression⟩ / ⟨real expression⟩是表示表达式的有效而不同的语法实体，但是⟨real expression⟩ DIV ⟨integer expression⟩（即在浮点值上进行整数除法）是无效的语法实体。

 例子 

下面例子展示ALGOL W的记录类型设施：

RECORD PERSON (
    STRING(20) NAME; 
    INTEGER AGE; 
    LOGICAL MALE; 
    REFERENCE(PERSON) FATHER, MOTHER, YOUNGESTOFFSPRING, ELDERSIBLING
);

REFERENCE(PERSON) PROCEDURE YOUNGESTUNCLE (REFERENCE(PERSON) R);
BEGIN
    REFERENCE(PERSON) P, M;
    P := YOUNGESTOFFSPRING(FATHER(FATHER(R)));
    WHILE (P ¬= NULL) AND (¬ MALE(P)) OR (P = FATHER(R)) DO
        P := ELDERSIBLING(P);
    M := YOUNGESTOFFSPRING(MOTHER(MOTHER(R)));
    WHILE (M ¬= NULL) AND (¬ MALE(M)) DO
        M := ELDERSIBLING(M);
    IF P = NULL THEN 
        M 
    ELSE IF M = NULL THEN 
        P 
    ELSE 
        IF AGE(P) < AGE(M) THEN P ELSE M
END

 引用 

 外部链接 
aw2c – ALGOL W compiler for Linux
awe – aw2c updated version
ALGOL W @ Everything2  – informal but detailed description of the language by a former user, with sidebars extolling ALGOL W over Pascal as an educational programming language
1969 ALGOL W compiler listing at bitsavers.org
 The Michigan Terminal System Manuals, Volume 16: ALGOL W in MTS
Algol W materials More than 200 Algol W programs and documentation

Category:过程式编程语言
Category:ALGOL程式語言家族
Category:1966年建立的程式語言