C programming language BNF definition

    技术2022-05-20  40

    translation-unit :

    external-declaration

    translation-unit external-declaration

    external-declaration :

    function-definition

    declaration

    function-definition :

    declaration-specifiers opt declarator declaration-list opt compound-statement

    declaration :

    declaration-specifiers init-declarator-list opt ;

    declaration-list :

    declaration

    declaration-list declaration

    declaration-specifiers :

    storage-class-specifier declaration-specifiers opt

    type-specifier declaration-specifiers opt

    type-qualifier declaration-specifiers opt

    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 identifier opt { 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-list opt

    type-qualifier specifier-qualifier-list opt

    struct-declarator-list :

    struct-declarator

    struct-declarator-list , struct-declarator

    struct-declarator :

    declarator

    declarator opt : constant-expression

    enum-specifier :

    enum identifier opt { enumerator-list }

    enum identifier

    enumerator-list :

    enumerator

    enumerator-list , enumerator

    enumerator :

    identifier

    identifier = constant-expression

    declarator :

    pointer opt direct-declarator

    direct-declarator :

    identifier

    ( declarator )

    direct-declarator [ constant-expression opt ]

    direct-declarator ( parameter-type-list )

    direct-declarator ( identifier-list opt )

    pointer :

    * type-qualifier-list opt

    * type-qualifier-list opt pointer

    type-qualifier-list :

    type-qualifier

    type-qualifier-list type-qualifier

    parameter-type-list :

    parameter-list

    parameter-list , ...

    parameter-list :

    parameter-declaration

    parameter-list , parameter-declaration

    parameter-declaration :

    declaration-specifiers declarator

    declaration-specifiers abstract-declarator opt

    identifier-list :

    identifier

    identifier-list , identifier

    initializer :

    assignment-expression

    { initializer-list }

    { initializer-list , }

    initializer-list :

    initializer

    initializer-list , initializer

    type-name :

    specifier-qualifier-list abstract-declarator opt

    abstract-declarator :

    pointer

    pointer opt direct-abstract-declarator

    direct-abstract-declarator :

    ( abstract-declarator )

    direct-abstract-declarator opt [constant-expression opt ]

    direct-abstract-declarator opt (parameter-type-list opt )

    typedef-name :

    identifier

    statement :

    labeled-statement

    expression-statement

    compound-statement

    selection-statement

    iteration-statement

    jump-statement

    labeled-statement :

    identifier : statement

    case constant-expression : statement

    default : statement

    expression-statement :

    expression opt ;

    compound-statement :

    { declaration-list opt statement-list opt }

    statement-list :

    statement

    statement-list statement

    selection-statement :

    if (expression ) statement

    if (expression ) statement else statement

    switch (expression ) statement

    iteration-statement :

    while (expression ) statement

    do statement while (expression ) ;

    for (expression opt ; expression opt ; expression opt ) statement

    jump-statement :

    goto identifier ;

    continue;

    break;

    return expression opt ;

    expression :

    assignment-expression

    expression , assignment-expression

    assignment-expression :

    conditional-expression

    unary-expression assignment-operator assignment-expression

    assignment-operator : one of

    = *= /= %= += -= <<= >>= &= ^= |=

    conditional-expression :

    logical-OR-expression

    logical-OR-expression ? expression : conditional-expression

    constant-expression :

    conditional-expression

    logical-OR-expression :

    logical-AND-expression

    logical-OR-expression || logical-AND-expression

    logical-AND-expression :

    inclusive-OR-expression

    logical-AND-expression && inclusive-OR-expression

    inclusive-OR-expression :

    exclusive-OR-expression

    inclusive-OR-expression | exclusive-OR-expression

    exclusive-OR-expression :

    AND-expression

    exclusive-OR-expression ^ AND-expression

    AND-expression :

    equality-expression

    AND-expression & equality-expression

    equality-expression :

    relational-expression

    equality-expression == relational-expression

    equality-expression != relational-expression

    relational-expression :

    shift-expression

    relational-expression < shift-expression

    relational-expression > shift-expression

    relational-expression <= shift-expression

    relational-expression >= shift-expression

    shift-expression :

    additive-expression

    shift-expression << additive-expression

    shift-expression >> additive-expression

    additive-expression :

    multiplicative-expression

    additive-expression + multiplicative-expression

    additive-expression - multiplicative-expression

    multiplicative-expression :

    multiplicative-expression * cast-expression

    multiplicative-expression / cast-expression

    multiplicative-expression % cast-expression

    cast-expression :

    unary expression

    (type-name ) cast-expression

    unary-expression :

    postfix expression

    ++ unary expression

    -- unary expression

    unary-operator cast-expression

    sizeof unary-expression

    sizeof (type-name )

    unary operator : one of

    & * + - ~ !

    postfix-expression :

    primary-expression

    postfix-expression [expression ]

    postfix-expression (argument-expression-list opt )

    postfix-expression .identifier

    postfix-expression -> +identifier

    postfix-expression ++

    postfix-expression --

    primary-expression :

    identifier

    constant

    string

    (expression )

    argument-expression-list :

    assignment-expression

    assignment-expression-list , assignment-expression

    constant :

    integer-constant

    character-constant

    floating-constant

    enumeration-constant


    最新回复(0)