热门问题
时间线
聊天
视角

ALGOL W

来自维基百科,自由的百科全书

Remove ads

ALGOL W,一种编程语言,为ALGOL家族的一分子。它基于尼克劳斯·维尔特东尼·霍尔IFIP Working Group 2.1英语IFIP Working Group 2.1针对ALGOL X所提出的草案而设计,希望能作为ALGOL 60的后继者[1]。经过小幅度的修改[2],在斯坦福大学尼克劳斯·维尔特利用IBM System/360机器,以PL360实作出第一版的ALGOL W[3][4]

事实速览 编程范型, 语言家族 ...

ALGOL W是原本ALGOL 60的相对简单的升级,它增加了字符串、位串、复数、到记录数据类型引用,和传结果调用参数传递,介入了while语句,将switch替代为case语句,并在总体上的紧实了这门语言。它的编译器是用尼克劳斯·维尔特所设计的PL360组语所写成[5]

Remove ads

语法和语义

ALGOL W的语法英语Syntax (programming languages)建造在EBCDIC字符编码集的子集之上。在ALGOL 60中,保留字是独立的词法项目,但是在ALGOL W中它们只是字符序列,而不需要被索绕英语Stropping (syntax)起来。保留字和标识符由空格分隔[3]。在这种方式下,ALGOL W的语法类似于Pascal和后来的语言。

《ALGOL W语言描述》[6],采用了类似于巴科斯-诺尔范式(BNF)的附缀文法英语affix grammar定义了ALGOL W。这种形式文法van Wijngaarden文法英语Van Wijngaarden grammar的先驱[1][7]

大量的ALGOL W语义是在文法上定义的[6]

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

例子

下面例子展示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
Remove ads

引用

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads