C/C++知识点之c语言的文法产生式代码实例
小标 2018-08-27 来源 : 阅读 2449 评论 0

摘要:本文主要向大家介绍了C/C++知识点之c语言的文法产生式代码实例,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之c语言的文法产生式代码实例,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

programà
      external_declaration
     | program external_declaration
  
external_declarationà
     function_definition
     | declaration
     
function_definitionà type_specifier declarator compound_statement
  
type_specifierà
     VOID
     | CHAR
     | INT
     | FLOAT
  
declarator
     pointer direct_declarator
     | direct_declarator
  
Pointerà
     '*'
     | '*' pointer
  
direct_declarator
     IDENTIFIER
  |direct_declarator’[‘ ‘]’
     |direct_declarator ’[’ constant_expression ’]’
     | IDENTIFIER '(' parameter_list ')'
| IDENTIFIER '(' ')'
     |direct_declarator  ‘,’  identifier_list
  
identifier_list
     : IDENTIFIER
     | identifier_list ',' IDENTIFIER
  
constant_expressionà
     conditional_expression
  
parameter_listà
      parameter_declaration
     | parameter_list ',' parameter_declaration
 
parameter_declaration à
     declaration_specifiers  IDENTIFIER
  
compound_statementà
      '{' '}'
     | '{' statement_list '}'
     | '{' declaration_list statement_list '}'
  
declaration_listà
      declaration
     | declaration_list declaration
  
Declarationà
      init_declarator
     | init_declarator_list ',' init_declarator
  
init_declaratorà
      declarator
     | declarator '=' initializer
  
Initializerà
      assignment_expression
     | '{' initializer_list '}'
     | '{' initializer_list ',' '}'
  
initializer_listà
      initializer
     | initializer_list ',' initializer
  
statement_listà
     statement
     | statement_list statement
  
Statementà
     | compound_statement
     | expression_statement
     | selection_statement
     | iteration_statement
     | jump_statement
  
expression_statementà
     ';'
     | expression ';'
  
selection_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 expression ')' statement
  
jump_statement
     | CONTINUE ';'
     | BREAK ';'
     | RETURN ';'
     | RETURN expression ';'
  
expression
     : assignment_expression
     | expression ',' assignment_expression
  
assignment_expressionà
     conditional_expression
     | unary_expression assignment_operator assignment_expression
  
conditional_expressionà
      logical_or_expression
     | logical_or_expression '?' expression ':' conditional_expression
  
logical_or_expressionà
     logical_and_expression
     | logical_or_expression OR_OP logical_and_expression
  
logical_and_expression
     : inclusive_or_expression
     | logical_and_expression AND_OP 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 EQ_OP relational_expression
     | equality_expression NE_OP relational_expression
  
relational_expression
     : shift_expression
     | relational_expression '<' shift_expression
     | relational_expression '>' shift_expression
     | relational_expression LE_OP shift_expression
     | relational_expression GE_OP shift_expression
  
shift_expression
     : additive_expression
     | shift_expression LEFT_OP additive_expression
     | shift_expression RIGHT_OP additive_expression
  
additive_expression
     : multiplicative_expression
     | additive_expression '+' multiplicative_expression
     | additive_expression '-' multiplicative_expression
  
multiplicative_expression
     : cast_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
     | INC_OP unary_expression
     | DEC_OP unary_expression
     | unary_operator cast_expression
     | SIZEOF unary_expression
     | SIZEOF '(' type_name ')'
  
postfix_expressionà
     : primary_expression
     | postfix_expression '[' expression ']'
     | postfix_expression '(' ')'
     | postfix_expression '(' argument_expression_list ')'
     | postfix_expression '.' IDENTIFIER
     | postfix_expression PTR_OP IDENTIFIER
     | postfix_expression INC_OP
     | postfix_expression DEC_OP
  
primary_expressionà
     IDENTIFIER
     | CONSTANT
     | STRING_LITERAL
     | '(' expression ')'
  
argument_expression_list
     : assignment_expression
     | argument_expression_list ',' assignment_expression
  
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_specifierà
      TYPEDEF
     | EXTERN
     | STATIC
     | AUTO
     | REGISTER
  
struct_or_union_specifier
     : struct_or_union IDENTIFIER '{' struct_declaration_list '}'
     | struct_or_union '{' 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_list ';'
specifier_qualifier_listà
      type_specifier specifier_qualifier_list
     | type_specifier
     | type_qualifier specifier_qualifier_list
     | type_qualifier
     
struct_declarator_listà
      struct_declarator
     | struct_declarator_list ',' struct_declarator
     
struct_declaratorà
     : declarator
     | ':' constant_expression
     | declarator ':' constant_expression
     
enum_specifierà
      ENUM '{' enumerator_list '}'
     | ENUM IDENTIFIER '{' enumerator_list '}'
     | ENUM IDENTIFIER
     
enumerator_listà
      enumerator
     | enumerator_list ',' enumerator
     
Enumeratorà
      IDENTIFIER
     | IDENTIFIER '=' constant_expression
     
type_qualifierà
      CONST
     | VOLATILE
     
type_qualifier_listà
      type_qualifier
     | type_qualifier_list type_qualifier
     
parameter_type_listà
      parameter_list
     | parameter_list ',' ELLIPSIS
     
parameter_listà
     : parameter_declaration
     | parameter_list ',' parameter_declaration
     
type_nameà
      specifier_qualifier_list
     | specifier_qualifier_list abstract_declarator
     
abstract_declaratorà
      pointer
     | direct_abstract_declarator
     | pointer direct_abstract_declarator
     
direct_abstract_declaratorà
      '(' abstract_declarator ')'
     | '[' ']'
     | '[' constant_expression ']'
     | direct_abstract_declarator '[' ']'
     | direct_abstract_declarator '[' constant_expression ']'
     | '(' ')'
     | '(' parameter_type_list ')'
     | direct_abstract_declarator '(' ')'
     | direct_abstract_declarator '(' parameter_type_list ')'
     
labeled_statementà
      IDENTIFIER ':' statement
     | CASE constant_expression ':' statement
     | DEFAULT ':' statement    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved