C++编程(6)

Educn parser double parsertermbool get namespace

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 何明显的记述负担 Beijing University of Posts & Telecommunications Beijing [email protected] 示例 namespace Parser{ double expr(bool); double prim(bool get){/* … */} double term(bool get){/* … */} double expr(bool get){/* … */} } //声明和实现同时进行 名字空间的成员必须采用如 下记法形式引入: namespace name { // 声明和定义 } void Parser::logical(bool); namespace Parser{ // Error, Parser中无logical double expr(bool); void Parser::prim(int); double prim(bool); // Error, prim要求bool参数 double term(bool); }//实现与界面分开 double Parser::expr(bool get){/* …*/} double Parser::prim(bool get){/* …*/} double Parser::term(bool get){/* …*/} Beijing University of Posts & Telecommunications Beijing [email protected] 8.2.1 带限定词的名字 名字空间是作用域,普通的作用域规则也对 名字空间成立 如果一个名字先前已经在本名字空间里或者 其外围作用域里声明过,就可以直接使用。 也可以使用来自另外一个名字空间的名字, 但需要该名字所属的名字空间作为限定词 Beijing University of Posts & Telecommunications Beijing [email protected] 带限定词的名字示例 namespace Lexer{ //定义一个新的namespace enum Token_value { NAME, NUMBER, END, MUL=‘*’}; Token_value curr_tok; double number_value; string string_value; Token_value get_token() { /* … */} } double Parser::term(bool get) // Parser作用域 { double left=prim(get); // 不需要限定词 for(;;) switch(Lexer::curr_tok) { // Lexer case Lexer::NAME: // Lexer left *= prim(true); // 不需要限定词 // … } /* … */ } Beijing University of Posts & Telecommunications Beijing [email protected] 8.2.2 使用声明 当编程中频繁使用另外一个名字空间中的变量时, 可以通过使用声明语句来避免反复书写名字空间限 定词 double Parser:...
View Full Document

{[ snackBarMessage ]}

Ask a homework question - tutors are online