< programs >→< external declarations >|< programs >< external declarations >
< external declarations >→< function definitions >|< declarations >
< function definition >→< type declaration >< declarator >< Compound statement >
< type declaration >→< no return type >< character >< integer >< floating-point >
< declarators >→< pointers >< Path declarations >|< path declarations >
< pointers >→*|*< pointers >
< path declaration >→< identifier >|< Path declaration >[] |< Path declaration >[< constant expression,] |< identifier > (< parameter table >) < identifier > () |< Path declaration >,< Identifier Table >
< identifier table >→< identifier >|< identifier table >,< identifiers >
< constant expressions >→< conditional statements >
< parameter table >→< parameter declaration >|< parameter table >,< parameter declaration >
< parameter declarations >→< declaration notes >< identifiers >
< compound statement >→{}| {< Statement Table >}| {< Declaration table >< Statement table;}
< statement tables >→< statements >|< statements >
< statements >→|< Compound statements >|< expression Statements >|< SELECT statements >|< loop statements >|< jump statements >
< expression statements >→;|< expressions >;
< SELECT statement >→if (< expression >) < statement >|if (< expression >) < statement >else< Statement >
< Loop statement >→while (< expression >) < statement >|for (< expression >< Statement >) < statement >|for (< expression >< expression > < expressions >) < statements >
< jump statements >→continue;|break;|return;|return< expressions >
< expressions >→< Assignment Expressions >|< Expressions >,< Assignment Expressions >
< Assignment expression >→
< Assignment expression >→< logical OR expression >|< logical or expression >?< expression >:< Assignment expression >
< logic or expressions >→< logic and Expressions >
< logic and expressions >→< inclusions or expressions >|
< include or expression >→< or expression >|< or expression >| | < include or expression >
< XOR expressions >→< expressions >|< xor Expressions >^< and Expressions >
< expressions >→< equations >|< with expressions >&< equations >
< equations >→< relationship expressions >|<>|< equivalent expressions >eq-op< relational expressions >|< equivalent expressions >ne-op< relational expressions >
< relationship expressions >→< moving expressions >|< Relational Expressions > < < moving expressions >|< relational expressions > > < moving expressions >|< relational Expressions >ge-op < move an expression >
< moving Expressions >→< addition expressions >|<><>
Operation Expressions >|< Moving expressions >lert-op< expression >|< moving expressions >right-op< expression >
< expressions >→< multiplication expressions >|< expression >+< multiplication Expressions >|< op-expressions >-< multiplication Expressions >
< multiplication expressions >→< conversion Expressions >|< multiplication Expressions >*< conversion Expressions >|< multiplication Expressions >/< conversion Expressions >|< multiplication Expressions >%< conversion expressions >
< convert expression >→< unary expression >| (< type name >) < conversion expression >
< unary expression >→< suffix expression >|inc-op < unary expression >|dec-op < unary expression >|< unary expression >< transform expression >|sizeof< unary expression >|sizeof (< type name >)
< suffix expression >→< primary expression >|< postfix expression >[< expression >]|< suffix expression > () |< suffix expression > (< parameter expression table >) |< suffix expression >.< identifier >|< suffix expression >ptr-op< identifier >|< suffix expression >inc-op|< suffix expression >dec-op
< main expressions >→< identifiers >|< constants >|< string >| (< expression >)
< parameter expression table >→< assignment expression >|< parameter expression table >,< assignment expression >
< unary operator >→&|*|+|-|~|!
< Assignment expression >→=| mul_assign| div_assign| mod_assign| add_assign| sub_assign| left_assign| right_assign| and_assign| xor_assign| Or_assign
< storage class Description >→< claim type >|< external variable declaration >|< static storage >|< Automatic storage >|< Register variable >
< structure or joint description >→< struct or union >< identifier >{< struct declaration table >}|< struct or union >{< struct Declaration table >}|< struct or union >< identifier >
< structure or union >→< structure >|< Union >
< struct declaration table >→< Struct declaration >|< struct Declaration table >< struct declaration >
< structure declaration >→< struct Declaration table >
< description Qualifying Table >→< type description >< description Qualifying Table >|< type description >|< type qualification >< description qualifying table >|< type limit >
< struct declaration table >→< Struct declaration >|< struct Declaration table >,< struct declaration >
< struct declarations >→:< declarators >|:< constant Expressions >|< declarators >:< constant Expressions >
< enumeration Description >→< enumeration >{< enumeration Table >}|< Enumeration >< identifier >{< enumeration Table >}|< enumeration >< identifier >
< enumeration tables >→< enumerations >|< enumeration tables >,< enumerations >
< enumeration >→< identifiers >|< identifiers >=< constant Expressions >
< type limit >→< constants >|< variables >
< type qualification Table >→< type qualification >|< type qualification table >< type qualification >
< parameter type table >→< parameter table >|< parameter table >,< ellipsis >
< parameter table >→< parameter declaration >|< parameter table >,< parameter declaration >
< type name >→< Description Qualification Table >|< Description Qualifying Table >< Abstract Declaration >
< abstract declarations >→< pointers >|< Direct abstract declarations >|< pointers >< Direct Abstract declarations >
< direct abstract declaration >→ (< abstract declaration >) | [ ]| [< constant expression >]|< Direct Abstract declaration >[] |< Direct Abstract Declaration >[< constant Expression >]| () | (< parameter type table >) |< Direct Abstract Declaration > () |< Direct Abstract Declaration > (< parameter type table >)
< tag statements >→< identifiers >:< statements > |case< constant Expressions >:< statement >|default:
1029c language Grammar