第1章历史回顾与语言分类 ·说明程序设计语言的发展阶段,并列出每一个 阶段出现的两到三种最重要语言。 程序设计语言的成功=设计好坏+实现难易+权 势支持+社会需要: FORTRON-Alogo160; Modula2-Ada; BASIC- Pascal; Pascal-C; 第1页
第1页 第1章 历史回顾与语言分类 • 说明程序设计语言的发展阶段,并列出每一个 阶段出现的两到三种最重要语言。 • 程序设计语言的成功=设计好坏+实现难易+权 势支持+社会需要: –FORTRON-Alogol60; Modula2-Ada; BASICPascal;Pascal-C;
第2章程序设计语言设计概述* ·程序设计语言的几个设计目标、设计准 则之间的关系。 ·掌握程序设计语言的规格说明 第2页
第2页 第2章 程序设计语言设计概述* • 程序设计语言的几个设计目标、设计准 则之间的关系。 • 掌握程序设计语言的规格说明
第一次随堂作业 1.请用扩展的BNF描述C语言里语句的结构; 假定有语法类<exp>表示一般表达式,<s-exp>表示可用于 switch标号的静态表达式; 2.请用扩展的BNF描述C++语言里类声明的结构; 假定有语句类<statement>表示语句,有参数列表类 <parameter list>表达参数列表; 3.请用扩展的BNF描述Java语言里类声明的结构; 假定有语句类<statement>表示语句,有参数列表类 parameter list表达参数列表,有表达式类 <expression>表达表达式;
1. 请用扩展的 BNF 描述 C语言里语句的结构; 假定有语法类 <exp> 表示一般表达式,<s-exp> 表示可用于 switch 标号的静态表达式; 2. 请用扩展的 BNF 描述 C++语言里类声明的结构; 假定有语句类<statement>表示语句,有参数列表类 <parameter_list>表达参数列表; 3. 请用扩展的 BNF 描述 Java语言里类声明的结构; 假定有语句类<statement>表示语句,有参数列表类 <parameter_list>表达参数列表,有表达式类 <expression>表达表达式; 第一次随堂作业
EBNF BNF::=代替→BNF表达能力同EBNF >指示非终结终结符直接写出(或黑体) 或者 有扩充:[]括号内容是可选的 {}括号内容可重复0至多次 或扩充:C+’Kleene加’C可重复1至多次 C*Kleene星C可重复0至多次 EBNF:左端取消ㄑ>,空白加‘- 减少递归表示再加‘(’,)’, 尽量用正则表达式 终结符号加‘’号或黑体
EBNF BNF: ::=代替→ BNF表达能力同EBNF < > 指示非终结 终结符直接写出(或黑体) | 或者 有扩充: [ ] 括号内容是可选的 { } 括号内容可重复0至多次 或扩充: C+ 'Kleene加' C可重复1至多次 C* ‘Kleene星’ C可重复0至多次 EBNF: 左端取消< >, 空白加‘-’ 减少递归表示再加‘(’ , ‘)’ , ‘.’ , 尽量用正则表达式 终结符号加‘ ’号或黑体
EBNF示例 program : <program-heading>'; <program-block>'.' program-heading-::=program'<identifier> [’(<program-parameters->)] program-parameters-:=<identifier--list> identifier-list::=<identifier>{,’<identifier>}. program-block-::=block> block:=<label-declaration---part><constant-declaration---part> <type-declaration-partvariable-declaration-----part> <procedure-and-function-declaration-part)statement-part). variable-declaration---part::=[var'variable-declaration->’; {variabe-declaration->’;’}]. variable-declaration-::=<identifier-list>’;’<type-denoter> statement-part= compound-statement-
EBNF示例 program ::= <program-heading> ';' <program-block> '.'. program-heading ::= 'program' <identifier> [ '('<program-parameters> ')']. program-parameters ::= <identifier-list>. identifier-list ::= <identifier> {',' <identifier>} . program-block ::= <block>. block ::= <label-declaration-part> <constant-declaration-part> <type-declaration-part><variable-declaration-part> <procedure-and-function-declaration-part><statement-part>. variable-declaration-part ::= ['var' <variable-declaration> ';' {<variabe-declaration> ';' }]. variable-declaration ::= <identifier-list> ';' <type-denoter>. statement-part ::= compound-statement