< programs >→< external declarations >|< programs >< external declarations >
< external declarations >→< function definitions >|< declarations >
< function definition >→< type description >< declarator >< Compound statement >
< type description >→< no return type >|< character >|< integer >|< floating-point >
< declarators >→< pointers >< Direct declarations >|< Direct declarations >
< pointers >→< asterisks >|< asterisks >< pointers >
< direct declarations >→< identifiers >|< Direct declarations >[]|< Direct declarations > (< constant expressions >) |< identifiers > (< parameter table >) |< identifiers > () | < direct declaration >,< Identifier Table >
< identifier table >→< identifier >|< identifier table >,< identifiers >
< constant expressions >→< conditional expressions >
< parameter table >→< parameter declaration >|< parameter table >,< parameter declaration >
< parameter declarations >→< declaration notes >< identifiers >
< compound statement >→{}| {< Statement Table >}| {< Declaration table >< Statement table;}
< declaration table >→< declarator >|< declarator >< Declaration table >
< declarations >→< initialization declarations >|< initializing declaration tables >,< initializing declarations >
< initialization declarations >→< declarators >|< declarators >=< Initialize >
< initialization >→< Assignment expression >| {< Initialization Table >}| {< initialization table;,}
< Initialize table >→< initialize >|< initialize table >,< Initialize >
< statement tables >→< statements >|< statement tables >< 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 >) |for (< expression statement >< expression statement >) < statement >|for (< expression statement >< expression statement >< Expressions >) < statements >
< jump statements >→|continue;|break;|return;|return < expressions >;
< expressions >→< Assignment Expressions >|< Expressions >,< Assignment Expressions >
< Assignment expressions >→< conditional expressions >|< unary Expressions >< assignment operators >< Assignment Expressions >
< conditional expressions >→< logic or expressions >|< logical OR expression; < expressions >:< Conditional expressions >
< logic or expressions >→< logic and expressions >|< logic or expressions >or-op< logic and Expressions >
< logic and expressions >→< inclusiveness or expressions >|< logic and expressions >and-op< inclusiveness or expressions >
< inclusiveness or expressions >→< xor expressions >|< inclusiveness or expressions >|< xor expressions >
< XOR expressions >→< expressions >|< xor Expressions >^< and Expressions >
< expressions >→< equivalent expressions >|< and expressions >&< equivalent expressions >
< equivalent expressions >→< relational expressions >|< equivalent expressions >eq-op< relational expressions >|< equivalent expressions >ne-op< relational expressions >
< relationship expressions >→< move Expressions >|< relational Expressions ><< move expressions >|< relational Expressions >>< move expressions >|< relational Expressions >le-op < move expressions >|< relationship Expressions >ge-op< Move Expressions >
< move expression >→< expression >|< move expression >lert-op< expression >|< Move expression >right-op< 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 >:< Statements >|default:< statements >
1029c language Grammar