[英]How do I read abstract programming information
昨天我進行了測試,發現自己必須了解一些我不了解的知識。
請參見以下頁面:
declaration-list:
declaration
declaration-list declaration
declaration-specifiers:
storage-class-specifier declaration-specifiersopt
type-specifier declaration-specifiersopt
type-qualifier declaration-specifiersopt
storage-class specifier: one of
auto register static extern typedef
type specifier: one of
void char short int long float double signed
unsigned struct-or-union-specifier enum-specifier typedef-name
type-qualifier: one of
const volatile
struct-or-union-specifier:
struct-or-union identifieropt { struct-declaration-list }
struct-or-union identifier
struct-or-union: one of
struct union
struct-declaration-list:
struct declaration
struct-declaration-list struct declaration
init-declarator-list:
init-declarator
init-declarator-list, init-declarator
init-declarator:
declarator
declarator = initializer
struct-declaration:
specifier-qualifier-list struct-declarator-list;
specifier-qualifier-list:
type-specifier specifier-qualifier-listopt
type-qualifier specifier-qualifier-listopt
struct-declarator-list:
struct-declarator
struct-declarator-list , struct-declarator
struct-declarator:
declarator
declaratoropt : constant-expression
enum-specifier:
enum identifieropt { enumerator-list }
enum identifier
這是來自Brian W. Kernighan Dennis M. Ritchie的著作“ The C Programming Language”,但我在互聯網和許多其他書籍中都看到了它。
我嘗試使用Google搜索,但坦白說,我不知道該如何稱呼,因此找不到任何相關信息。 我們的教授從不讓我們讀它,我現在相信知道如何閱讀是非常重要的。
我正在尋找參考指南或有關如何使用它的簡短說明。
我很抱歉,如果那是轉發,但我找不到任何相關的帖子。
第一個定義...
declaration-list:
declaration
declaration-list declaration
...可以理解為:“聲明列表可以是聲明,也可以是聲明列表后跟聲明。”
此遞歸定義允許以下內容作為聲明列表的示例:
完整的語法定義將包含描述組成有效聲明的其他規則,依此類推。
它稱為語法符號。 在C11 6.1中進行了描述:
在本節中使用的語法符號中,句法類別(非終結符)以斜體表示,而文字詞和字符集成員(終結符)以粗體表示 。 非終結符后的冒號(:)引入其定義。 替代定義在單獨的行中列出,除非以“一個”開頭。 可選符號由下標opt表示,因此
{ expression opt }
表示用花括號括起來的可選表達式。
因此,以第一個非終端為例:
申報單 :
宣言
聲明清單聲明
表示聲明列表是單個聲明 ,或者聲明列表后跟單個聲明 (即,它將以遞歸方式定義自己)。
順便說一下,這些聲明列表是在C中鍵入函數參數的古老而又過時的方法:
some_function(a, b)
int a;
double b;
{
printf("a = %d, b = %f\n", a, b);
}
int a; double b;
int a; double b;
part是可選的clarification-list ,和double b;
是一個聲明 。 因此,聲明列表被遞歸定義為是一個聲明的聲明列表,或者是后跟聲明的聲明列表。
要真正內部化這些語法結構的含義,您最好在線閱讀C11標准草案n1570或PDF版本 。 還要注意,語法只是給出了C程序的語法,但是C程序的約束和語義是用文本編寫的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.