簡體   English   中英

我如何閱讀抽象編程信息

[英]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中進行了描述:

  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標准草案n1570PDF版本 還要注意,語法只是給出了C程序的語法,但是C程序的約束和語義是用文本編寫的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM