C Language Grammar Translation

Source: Internet
Author: User

< programs >→< external declarations >|< programs >< external declarations >

< external declarations >→< function definitions >|< declarations >

< function definition >→< type specifier >< declarator >< Compound statement >

< type specifier >→< no return type >|< character >|< integer >|< floating-point >

< declarators >→< pointers >< Direct declarations >|< Direct declarations >

< pointers >→*|*< pointers >

< Direct declaration >→< identifier >|< Direct declaration >[]|< Direct Declaration >[constant Expression]|< identifier > (parameter table) |< identifier > () |< Direct Declaration >,< List of identifiers >

< identifier list >→< identifier >|< identifier list >,< identifiers >

< constant expressions >→< conditional expressions >

< parameter table >→< parameter declaration >|< parameter table;, < parameter declaration >

< parameter declarations >→< declaration specifiers >< Identifiers >

< compound statement >→{<>}| {< Statement List >}| {< Declaration list >< statement list;}

< declarations list >→< declarations >|< declarations List >< declarations >

< declarations >→< initialization declarators >|< initialization declarator list >,< Initialize declarators >

< initialize declarators >→< declarations >|< declarators >=< Initialize >

< initialization >→< Assignment expression >| {< initializer list

Initialize List >}| {< initializer list

Initialize the list;

< Initialize list >→< initialize >|< initialize list >,< Initialize >

< statement list >→< Statement >|< statement list >< statements >

< statements >→< Compound statements >|< expression statements >|< selection statement

SELECT statement >|< Iteration statement >|< jump Statement >

< expression statements >→;|< expressions >;

< SELECT statement >→if (< expression >) < statement >| if (< expression >) < statement >else< Statement >

< iteration statement >→while (< expression >) < statement >|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 expression >→< logical OR expression >|< logical or expression >?< expression >:< conditional expression >

< logic or expressions >→< logic and expressions >|< logical OR expression > or op< logic and expressions >

< logic and expressions >→< inclusions or expressions >|< logic and Expressions >and op< contains or expressions >

< include or expression >→< bitwise OR expression >|< with expression >|< bitwise OR expression >^< and expression >

< expressions >→< Equality expressions >|< with expressions >&< equation expressions >

< equation expressions >→< relational Expressions >|< Equality expressions > eq_op< relational Expressions >|< equation expressions > ne_op< relational Expressions >

< relationship expressions >→< conversion Expressions > |< Relationship Expressions ><< transformation Expressions >|< Relational Expressions >>< transform expressions >|< relational Expressions >le op < conversion expressions >|< relational Expressions >ge op< table conversion up to type >

< conversion Expressions >→< addition expressions >|< conversion Expressions >left op< addition expressions >|< conversion Expressions >right op< addition expressions >

< addition expressions >→< multiplication Expressions >|< addition expressions >+< multiplication Expressions >|< addition expressions >-< multiplication expressions >

< multiplication expressions >→< cast expressions >|< multiplication Expressions >*< cast expressions >|< multiply expressions >/< cast expressions >|< multiplicative expressions >%< cast expressions >

< cast expression >→< unary expression >| (< type name >) << cast expression >>

< unary expression >→< suffix expression >| INC op< One-dollar expression >| dec_op< unary expressions >|< unary operators >< cast expressions >| sizeof< One-dollar expression >| SIZEOF (< type name >)

< postfix expression >→< original expression >|< suffix expression >[< expression >]| < suffix expression > () |< suffix expression > (< expression argument list >) |< suffix expression;. identifier|< suffix expression > ptr op identifier|< suffix expression > ptr op identifier|< suffix expression > INC op|< suffix expression > DEC op

< original expression >→identifier| Constant| STRING literal| (< expressions >)

< argument lists for expressions >→< parameter Expressions >|< argument lists for expressions >,< parameter expressions >

< unary operator >→&|*|+|-|~|!

< assignment operator >→=| mul_assign| div_assign| mod_assign| add_assign| sub_assign| left_assign| right_assign| and_assign| xor_assign| Or_assign

< storage class Descriptor >→typedef| extern| static| auto| REGISTER

< descriptor for struct or common body >→< struct or common body > identifier{< struct Declaration list >}|< struct or common body >{< struct declaration list >}|< struct or common body > IDENTIFIER

< structure or common body >→struct| UNION

< struct declaration list >→< struct declaration >|< struct declaration list >< struct declaration >

< struct declaration >→< Descriptor Qualifier List >< struct Declaration list >;

< specifier qualifier list >→< type specifier >< specifier qualifier list >|< type specifier >|< type qualifier >< descriptor qualifier List >|< type qualifier >

< struct declarator list >→< struct declaration >|< struct declarator list >,< struct declaration >

< struct declarations >→< declarations >|:< constant Expressions >|< declarations >:< constant Expressions >

< enumeration specifier >→ENUM{< enumeration list >}| Enum identifier{< Enumeration List >}| ENUM IDENTIFIER

< enumeration list >→< Enumeration method >|< Enumeration list >,< Enumeration >

< enumeration method >→identifier| identifier=< constant-expression >

< type qualifier >→const| VOLATILE

< descriptor qualifier List >→< type qualifier >|< specifier qualifier list >< type qualifier >

< parameter type list >→< parameter table >|< parameter table; ellipsis

< parameter table >→< parameter declaration >|< parameter table >,< parameter declaration >

< type name >→< descriptor qualifier List >|< specifier qualifier List >< abstract description >

< abstract description >→< pointers >|< Direct declarators >|< pointers >< Direct declarators >

< direct declarator >→ (< abstract description >) | []| [< constant Expressions >]|< Direct declarators >[]|< Direct declarators >[< constant Expressions >]| ()| (< parameter type list >) |< direct declarator > () |< direct declarator > (< parameter type list >)

< label statement >→IDENTIFIER:< statement >| case< constant expression >:< statement >| DEFAULT: < statements >

C language Grammar translation

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.