利用者:Ef3/C.N1570.BNF
< 利用者:Ef3
- token
- keyword
- identifier
- constant
- string-literal
- punctuator
- preprocessing-token
- header-name
- identifier
- pp-number
- character-constant
- string-literal
- punctuator
- each non-white-space character that cannot be one of the above
- keyword
- auto
- break
- case
- char
- const
- continue
- default
- do
- double
- else
- enum
- extern
- float
- for
- goto
- if
- inline
- int
- long
- register
- restrict
- return
- short
- signed
- sizeof
- static
- struct
- switch
- typedef
- union
- unsigned
- void
- volatile
- while
- _Alignas
- _Alignof
- _Atomic
- _Bool
- _Complex
- _Generic
- _Imaginary
- _Noreturn
- _Static_assert
- _Thread_local
- identifier
- identifier-nondigit
- identifier identifier-nondigit
- identifier digit
- identifier-nondigit
- nondigit
- universal-character-name
- other implementation-defined characters
- nondigit
- _abcdefghijklm
- nopqrstuvwxyz
- ABCDEFGHIJKLM
- NOPQRSTUVWXYZ
- digit
- 0123456789
- universal-character-name
- \u hex-quad
- \U hex-quad hex-quad
- hex-quad
- hexadecimal-digit hexadecimal-digit
- hexadecimal-digit hexadecimal-digit
- constant
- integer-constant
- floating-constant
- enumeration-constant
- character-constant
- integer-constant
- decimal-constant integer-suffixopt
- octal-constant integer-suffixopt
- hexadecimal-constant integer-suffixopt
- decimal-constant
- nonzero-digit
- decimal-constant digit
- octal-constant
- 0
- octal-constant octal-digit
- hexadecimal-constant
- hexadecimal-prefix hexadecimal-digit
- hexadecimal-constant hexadecimal-digit
- hexadecimal-prefix
- 0x 0X
- nonzero-digit
- 123456789
- octal-digit
- 01234567
- hexadecimal-digit
- 0123456789
- abcdef
- ABCDEF
- integer-suffix
- unsigned-suffix long-suffixopt
- unsigned-suffix long-long-suffix
- long-suffix unsigned-suffixopt
- long-long-suffix unsigned-suffixopt
- unsigned-suffix
- u U
- long-suffix
- l L
- long-long-suffix
- ll LL
- floating-constant
- decimal-floating-constant
- hexadecimal-floating-constant
- decimal-floating-constant
- fractional-constant exponent-partopt floating-suffixopt
- digit-sequence exponent-part floating-suffixopt
- hexadecimal-floating-constant
- hexadecimal-prefix hexadecimal-fractional-constant
- binary-exponent-part floating-suffixopt
- hexadecimal-prefix hexadecimal-digit-sequence
- binary-exponent-part floating-suffixopt
- fractional-constant
- digit-sequenceopt . digit-sequence
- digit-sequence .
- exponent-part
- e signopt digit-sequence
- E signopt digit-sequence
- sign
- + -
- digit-sequence
- digit
- digit-sequence digit
- hexadecimal-fractional-constant
- hexadecimal-digit-sequenceopt .
- hexadecimal-digit-sequence
- hexadecimal-digit-sequence .
- binary-exponent-part
- p signopt digit-sequence
- P signopt digit-sequence
- hexadecimal-digit-sequence
- hexadecimal-digit
- hexadecimal-digit-sequence hexadecimal-digit
- floating-suffix
- flFL
- enumeration-constant
- identifier
- character-constant
- ' c-char-sequence '
- L' c-char-sequence '
- u' c-char-sequence '
- U' c-char-sequence '
- c-char-sequence
- c-char
- c-char-sequence c-char
- c-char
- any member of the source character set except
- the single-quote ', backslash \, or new-line character
- escape-sequence
- escape-sequence
- simple-escape-sequence
- octal-escape-sequence
- hexadecimal-escape-sequence
- universal-character-name
- simple-escape-sequence
- \' \" \? \\
- \a \b \f \n \r \t \v
- octal-escape-sequence
- \ octal-digit
- \ octal-digit octal-digit
- \ octal-digit octal-digit octal-digit
- hexadecimal-escape-sequence
- \x hexadecimal-digit
- hexadecimal-escape-sequence hexadecimal-digit
- string-literal
- encoding-prefixopt " s-char-sequenceopt "
- encoding-prefix
- u8
- u
- U
- L
- s-char-sequence
- s-char
- s-char-sequence s-char
- s-char
- any member of the source character set except
- the double-quote ", backslash \, or new-line character
- escape-sequence
- punctuator
- [ ] ( ) { } . ->
- ++ -- & * + - ~ !
- / % << >> < > <= >= == != ^ | && ||
- ? : ; ...
- = *= /= %= += -= <<= >>= &= ^= |=
- , # ##
- <: :> <% %> %: %:%:
- header-name
- < h-char-sequence >
- " q-char-sequence "
- h-char-sequence
- h-char
- h-char-sequence h-char
- h-char
- any member of the source character set except
- the new-line character and >
- q-char-sequence
- q-char
- q-char-sequence q-char
- q-char
- any member of the source character set except
- the new-line character and "
- pp-number
- digit
- . digit
- pp-number digit
- pp-number identifier-nondigit
- pp-number e sign
- pp-number E sign
- pp-number p sign
- pp-number P sign
- pp-number .
- primary-expression
- identifier
- constant
- string-literal
- ( expression )
- generic-selection
- generic-selection
- _Generic ( assignment-expression , generic-assoc-list )
- generic-assoc-list
- generic-association
- generic-assoc-list , generic-association
- generic-association
- type-name : assignment-expression
- default : assignment-expression
- postfix-expression
- primary-expression
- postfix-expression [ expression ]
- postfix-expression ( argument-expression-listopt )
- postfix-expression . identifier
- postfix-expression -> identifier
- postfix-expression ++
- postfix-expression --
- ( type-name ) { initializer-list }
- ( type-name ) { initializer-list , }
- argument-expression-list
- assignment-expression
- argument-expression-list , assignment-expression
- unary-expression
- postfix-expression
- ++ unary-expression
- -- unary-expression
- unary-operator cast-expression
- sizeof unary-expression
- sizeof ( type-name )
- _Alignof ( type-name )
- unary-operator
- &*+-~!
- cast-expression
- unary-expression
- ( type-name ) cast-expression
- multiplicative-expression
- cast-expression
- multiplicative-expression * cast-expression
- multiplicative-expression / cast-expression
- multiplicative-expression % cast-expression
- additive-expression
- multiplicative-expression
- additive-expression + multiplicative-expression
- additive-expression - multiplicative-expression
- shift-expression
- additive-expression
- shift-expression << additive-expression
- shift-expression >> additive-expression
- relational-expression
- shift-expression
- relational-expression < shift-expression
- relational-expression > shift-expression
- relational-expression <= shift-expression
- relational-expression >= shift-expression
- equality-expression
- relational-expression
- equality-expression == relational-expression
- equality-expression != relational-expression
- AND-expression
- equality-expression
- AND-expression & equality-expression
- exclusive-OR-expression
- AND-expression
- exclusive-OR-expression ^ AND-expression
- inclusive-OR-expression
- exclusive-OR-expression
- inclusive-OR-expression | exclusive-OR-expression
- logical-AND-expression
- inclusive-OR-expression
- logical-AND-expression && inclusive-OR-expression
- logical-OR-expression
- logical-AND-expression
- logical-OR-expression || logical-AND-expression
- conditional-expression
- logical-OR-expression
- logical-OR-expression ? expression : conditional-expression
- assignment-expression
- conditional-expression
- unary-expression assignment-operator assignment-expression
- assignment-operator
- = *= /= %= += -= <<= >>= &= ^= |=
- expression
- assignment-expression
- expression , assignment-expression
- constant-expression
- conditional-expression
- declaration
- declaration-specifiers init-declarator-listopt ;
- static_assert-declaration
- declaration-specifiers
- storage-class-specifier declaration-specifiersopt
- type-specifier declaration-specifiersopt
- type-qualifier declaration-specifiersopt
- function-specifier declaration-specifiersopt
- alignment-specifier declaration-specifiersopt
- init-declarator-list
- init-declarator
- init-declarator-list , init-declarator
- init-declarator
- declarator
- declarator = initializer
- storage-class-specifier
- typedef
- extern
- static
- _Thread_local
- auto
- register
- type-specifier
- void
- char
- short
- int
- long
- float
- double
- signed
- unsigned
- _Bool
- _Complex
- atomic-type-specifier
- struct-or-union-specifier
- enum-specifier
- typedef-name
- struct-or-union-specifier
- struct-or-union identifieropt { struct-declaration-list }
- struct-or-union identifier
- struct-or-union
- struct
- union
- struct-declaration-list
- struct-declaration
- struct-declaration-list struct-declaration
- struct-declaration
- specifier-qualifier-list struct-declarator-listopt ;
- static_assert-declaration
- 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 identifieropt { enumerator-list , }
- enum identifier
- enumerator-list
- enumerator
- enumerator-list , enumerator
- enumerator
- enumeration-constant
- enumeration-constant = constant-expression
- atomic-type-specifier
- _Atomic ( type-name )
- type-qualifier
- const
- restrict
- volatile
- _Atomic
- function-specifier
- inline
- _Noreturn
- alignment-specifier
- _Alignas ( type-name )
- _Alignas ( constant-expression )
- declarator
- pointeropt direct-declarator
- direct-declarator
- identifier
- ( declarator )
- direct-declarator [ type-qualifier-listopt assignment-expressionopt ]
- direct-declarator [ static type-qualifier-listopt assignment-expression ]
- direct-declarator [ type-qualifier-list static assignment-expression ]
- direct-declarator [ type-qualifier-listopt * ]
- direct-declarator ( parameter-type-list )
- direct-declarator ( identifier-listopt )
- pointer
- * type-qualifier-listopt
- * type-qualifier-listopt 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-declaratoropt
- identifier-list
- identifier
- identifier-list , identifier
- type-name
- specifier-qualifier-list abstract-declaratoropt
- abstract-declarator
- pointer
- pointeropt direct-abstract-declarator
- direct-abstract-declarator
- ( abstract-declarator )
- direct-abstract-declaratoropt [ type-qualifier-listopt
- assignment-expressionopt ]
- direct-abstract-declaratoropt [ static type-qualifier-listopt
- assignment-expression ]
- direct-abstract-declaratoropt [ type-qualifier-list static
- assignment-expression ]
- direct-abstract-declaratoropt [*]
- direct-abstract-declaratoropt ( parameter-type-listopt )
- typedef-name
- identifier
- initializer
- assignment-expression
- { initializer-list }
- { initializer-list , }
- initializer-list
- designationopt initializer
- initializer-list , designationopt initializer
- designation
- designator-list =
- designator-list
- designator
- designator-list designator
- designator
- [ constant-expression ]
- . identifier
- static_assert-declaration
- _Static_assert ( constant-expression , string-literal ) ;
- statement
- labeled-statement
- compound-statement
- expression-statement
- selection-statement
- iteration-statement
- jump-statement
- labeled-statement
- identifier : statement
- case constant-expression : statement
- default : statement
- compound-statement
- { block-item-listopt }
- block-item-list
- block-item
- block-item-list block-item
- block-item
- declaration
- statement
- expression-statement
- expressionopt ;
- selection-statement
- if ( expression ) statement
- if ( expression ) statement else statement
- switch ( expression ) statement
- iteration-statement
- while ( expression ) statement
- do statement while ( expression ) ;
- for ( expressionopt ; expressionopt ; expressionopt ) statement
- for ( declaration expressionopt ; expressionopt ) statement
- jump-statement
- goto identifier ;
- continue ;
- break ;
- return expressionopt ;
- translation-unit
- external-declaration
- translation-unit external-declaration
- external-declaration
- function-definition
- declaration
- function-definition
- declaration-specifiers declarator declaration-listopt compound-statement
- declaration-list
- declaration
- declaration-list declaration
- preprocessing-file
- groupopt
- group
- group-part
- group group-part
- group-part
- if-section
- control-line
- text-line
- # non-directive
- if-section
- if-group elif-groupsopt else-groupopt endif-line
- if-group
- # if constant-expression new-line groupopt
- # ifdef identifier new-line groupopt
- # ifndef identifier new-line groupopt
- elif-groups
- elif-group
- elif-groups elif-group
- elif-group
- # elif constant-expression new-line groupopt
- else-group
- # else new-line groupopt
- endif-line
- # endif new-line
- control-line
- # include pp-tokens new-line
- # define identifier replacement-list new-line
- # define identifier lparen identifier-listopt )
- replacement-list new-line
- # define identifier lparen ... ) replacement-list new-line
- # define identifier lparen identifier-list , ... )
- replacement-list new-line
- # undef identifier new-line
- # line pp-tokens new-line
- # error pp-tokensopt new-line
- # pragma pp-tokensopt new-line
- # new-line
- text-line
- pp-tokensopt new-line
- non-directive
- pp-tokens new-line
- lparen
- a ( character not immediately preceded by white-space
- replacement-list
- pp-tokensopt
- pp-tokens
- preprocessing-token
- pp-tokens preprocessing-token
- new-line
- the new-line character