Presentation is loading. Please wait.

Presentation is loading. Please wait.

第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;

Similar presentations


Presentation on theme: "第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;"— Presentation transcript:

1 第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
假定有语法类 <exp> 表示一般表达式,<s-exp> 表示可用于 switch 标号的静态表达式; 请用扩展的 BNF 描述 C++语言里类声明的结构; 假定有语句类<statement>表示语句,有参数列表类<parameter_list>表达参数列表; 请用扩展的 BNF 描述 Java语言里类声明的结构; 假定有语句类<statement>表示语句,有参数列表类<parameter_list>表达参数列表,有表达式类<expression>表达表达式;

2 一、扩展BNF描述C语言中的语句 语句 <statement> ::= <block> | <variable-statement> |<assignment-statement> |<labeled-statement> | <expression-statement> | <condition-statement> | <iteration-statement> | <jump-statement> |<empty-statement> 2. 语句块 block ::= '{' [<statement-list>] '}' statement-list ::= [<statement-list>] <statement>

3 3.变量声明 variable-statement ::= <variable-type> <variable-declaration-list> ';' variable-declaration-list ::= <variable-declaration> {','<variable-declaration>} variable-declaration ::= <identifier> [ '=' <exp>] 4.赋值语句 assignment-statement ::= <identifier> '=' <exp> ';' 5.带标签语句 label-statement ::= <identifier> : <statement> | 'case' <s-exp> : <statement> | 'default : '<statement> 6.表达式语句 expression-statement ::= <exp> ';'

4 7.条件语句 condition-statement ::= 'if' '(' <exp> ')' <statement> | 'if' '(' <exp> ')' <statement> 'else' <statement> | 'switch' '(' <exp> ')' <statement> 8.循环语句 iteration-statement ::= 'while' '(' <exp> ')' <statement> | 'do' <statement> 'while' '(' <exp> ')' ';' | 'for' '(' [<exp>] ';' [<exp>] ';' [<exp>] ')' <statement> 9.跳转语句 jump-statement ::= 'continue' ';' | 'break' ';' | 'return' [<exp>] ';' | 'goto' <identifier> ';' 10.空语句 empty-statement ::= ';'

5 二、扩展BNF描述C++语言中的类声明 类声明
class_declaration ::= 'class' <identifier> '{' {field_declaration} '}' ';' 2. 域声明 field_declaration ::= |<modifier> ':' {<method_declaration> | |<constructor_declaration> |<destructor-declaration>} |<modifier> ':' {<variable_declaration>} 变量声明 variable_declaration ::= <type> <identifier> { ',' <identifier> } ';‘

6 4. 方法声明 method_declaration ::= <type> <identifier> '(' [<parameter_list>] ')' ';' 5. 构造函数声明 constructor_declaration ::= <identifier> '(' [<parameter_list>] ')' '{' {<statement>} '}' ';' 6. 析构函数声明 destructor-declaration ::= '~' <identifier> '(' ')' '{' {<statement>} '}' ';'

7 三、扩展BNF描述Java语言中的类声明
class_declaration ::= <modifier> 'class' <identifier> ['extends' <class_name>] ['implements' <interface_name> {',' <interface_name> } ] '{' <field_declaration> '}' 2. 域声明 field_declaration ::= [doc_comment] | <method_declaration> |<constructor_declaration> | <variable_declaration> |<static_initializer> ";"

8 3. 方法声明 method_declaration ::= <modifier> <type> <identifier> '(' [<parameter_list>] ')' <statement_block> ';' 4. 构造声明 constructor_declaration ::= <modifier> <identifier> '(' [<parameter_list>] ')' <statement_block> 5. 语句块 statement_block ::= '{' { <statement> } '}'

9 6. 变量声明 variable_declaration ::= <modifier> <type> <variable_declarator> {',' <variable_declarator>} ';' 7. 变量声明符 variable_declarator ::= <identifier> { '[' ']' } [ '=' <variable_initializer>] 8. 变量初始化 variable_initializer ::= <expression> |'{' [<variable_initializer > { ',' <variable_initializer>} ] '}' 9. 静态初始化 static_initializer ::= 'static' <statement_block>

10 欢迎大家提出质疑并交流。 谢谢!


Download ppt "第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;"

Similar presentations


Ads by Google