⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grammar.txt

📁 C Preprocessor,antlr的grammar语言描述,用于学习词法分析,语法分析
💻 TXT
📖 第 1 页 / 共 3 页
字号:
                  using  namespace ::-opt nested_name_specifier-opt 
                    namespace_name ;
          asm_definition:
                  asm ( string_literal ) ;
          linkage_specification:
                  extern string_literal { declaration_seq-opt }
                  extern string_literal declaration

  1.7  Declarators                                       [gram.dcl.decl]
          init_declarator_list:
                  init_declarator
                  init_declarator_list , init_declarator
          init_declarator:
                  declarator initializer-opt
          declarator:
                  ptr_operator declarator
                  direct_declarator
          direct_declarator:
                  declarator_id
                  direct_declarator ( parameter_declaration_clause ) 
                    cv_qualifier_seq-opt exception_specification-opt
                  direct_declarator [ constant_expression-opt ]
                  ( declarator )
          ptr_operator:
                  * cv_qualifier_seq-opt
                  &
                  ::-opt nested_name_specifier * cv_qualifier_seq-opt
          cv_qualifier_seq:
                  cv_qualifier cv_qualifier_seq-opt
          cv_qualifier:
                  const
                  volatile
          declarator_id:
                  ::-opt id_expression
                  ::-opt nested_name_specifier-opt type_name
          type_id:
                  type_specifier_seq abstract_declarator-opt
          type_specifier_seq:
                  type_specifier type_specifier_seq-opt
          abstract_declarator:
                  ptr_operator abstract_declarator-opt
                  direct_abstract_declarator
          direct_abstract_declarator:
                  direct_abstract_declarator-opt ( parameter_declaration_clause 
                    ) cv_qualifier_seq-opt exception_specification-opt
                  direct_abstract_declarator-opt [ constant_expression-opt ]
                  ( abstract_declarator )
          parameter_declaration_clause:
                  parameter_declaration_list-opt ...-opt
                  parameter_declaration_list , ...
          parameter_declaration_list:
                  parameter_declaration
                  parameter_declaration_list , parameter_declaration
          parameter_declaration:
                  decl_specifier_seq declarator
                  decl_specifier_seq declarator = assignment_expression
                  decl_specifier_seq abstract_declarator-opt
                  decl_specifier_seq abstract_declarator-opt = 
                    assignment_expression
          function_definition:
                  decl_specifier_seq-opt declarator ctor_initializer-opt 
                    function_body
                  decl_specifier_seq-opt declarator function_try_block
          function_body:
                  compound_statement
          initializer:
                  = initializer_clause
                  ( expression_list )
          initializer_clause:
                  assignment_expression
                  { initializer_list ,-opt }
                  { }
          initializer_list:
                  initializer_clause
                  initializer_list , initializer_clause

  1.8  Classes                                              [gram.class]
          class_name:
                  identifier
                  template_id
          class_specifier:
                  class_head { member_specification-opt }
          class_head:
                  class_key identifier-opt base_clause-opt
                  class_key nested_name_specifier identifier base_clause-opt
Book line         class_key nested_name_specifier-opt template_id 
                    base_clause-opt
          class_key:
                  class
                  struct
                  union
          member_specification:
                  member_declaration member_specification-opt
                  access_specifier : member_specification-opt
          member_declaration:
                  decl_specifier_seq-opt member_declarator_list-opt ;
                  function_definition ;-opt
Old line         [qualified_id ;] (However, see p.295 C++ In a Nutshell)
Book line         ::-opt nested_name_specifier template-opt unqualified_id ;
                  using_declaration
                  template_declaration
          member_declarator_list:
                  member_declarator
                  member_declarator_list , member_declarator
          member_declarator:
                  declarator pure_specifier-opt
                  declarator constant_initializer-opt
                  identifier-opt : constant_expression
          pure_specifier:
                   = 0
          constant_initializer:
                   = constant_expression

  1.9  Derived classes                              [gram.class.derived]
          base_clause:
                  : base_specifier_list
          base_specifier_list:
                  base_specifier
                  base_specifier_list , base_specifier
          base_specifier:
                  ::-opt nested_name_specifier-opt class_name
                  virtual access_specifier-opt ::-opt nested_name_specifier-opt 
                    class_name
                  access_specifier virtual-opt ::-opt nested_name_specifier-opt 
                    class_name
          access_specifier:
                  private
                  protected
                  public

  1.10  Special member functions                          [gram.special]
          conversion_function_id:
                  operator conversion_type_id
          conversion_type_id:
                  type_specifier_seq conversion_declarator-opt
          conversion_declarator:
                  ptr_operator conversion_declarator-opt
          ctor_initializer:
                  : mem_initializer_list
          mem_initializer_list:
                  mem_initializer
                  mem_initializer , mem_initializer_list
          mem_initializer:
                  mem_initializer_id ( expression_list-opt )
          mem_initializer_id:
                  ::-opt nested_name_specifier-opt class_name
                  identifier

  1.11  Overloading                                          [gram.over]
          operator_function_id:
                  operator operator
          operator: one of
                  new  delete    new[]     delete[]
                  +    _    *    /    %    ^    &    |    ~
                  !    =    <    >    +=   -=   *=   /=   %=
                  ^=   &=   |=   <<   >>   >>=  <<=  ==   !=
                  <=   >=   &&   ||   ++   --   ,    ->*  ->
                  ()   []

  1.12  Templates                                            [gram.temp]
          template_declaration:
                  export-opt template < template_parameter_list > declaration
          template_parameter_list:
                  template_parameter
                  template_parameter_list , template_parameter
          template_parameter:
                  type_parameter
                  parameter_declaration
          type_parameter:
                  class identifier-opt
                  class identifier-opt = type_id
                  typename identifier-opt
                  typename identifier-opt = type_id
                  template < template_parameter_list > class  identifier-opt
                  template < template_parameter_list > class  identifier-opt = 
                    template_name
          template_id:
Old line         [template_name < template_argument_list >]
Book line         template_name < template_argument_list-opt >
          template_name:
                  identifier
          template_argument_list:
                  template_argument
                  template_argument_list , template_argument
          template_argument:
                  assignment_expression
                  type_id
                  template_name
          explicit_instantiation:
                  template declaration
          explicit_specialization:
                  template < > declaration

  1.13  Exception handling                                 [gram.except]
          try_block:
                   try compound_statement handler_seq
          function_try_block:
                   try  ctor_initializer-opt function_body handler_seq
          handler_seq:
                  handler handler_seq-opt
          handler:
                  catch ( exception_declaration ) compound_statement
          exception_declaration:
                  type_specifier_seq declarator
                  type_specifier_seq abstract_declarator
                  type_specifier_seq
                  ...
          throw_expression:
                  throw assignment_expression-opt
          exception_specification:
                  throw ( type_id_list-opt )
          type_id_list:
                  type_id
                  type_id_list ,  type_id

  1.14  Preprocessing directives                              [gram.cpp]
          preprocessing_file:
                  group-opt
          group:
                  group_part
                  group group_part
          group_part:
                  pp_tokens-opt new_line
                  if_section
                  control_line
          if_section:
                  if_group elif_groups-opt else_group-opt endif_line
          if_group:
                  # if     constant_expression new_line group-opt
                  # ifdef  identifier new_line group-opt
                  # ifndef identifier new_line group-opt
          elif_groups:
                  elif_group
                  elif_groups elif_group
          elif_group:
                  # elif   constant_expression new_line group-opt
          else_group:
                  # else   new_line group-opt
          endif_line:
                  # endif  new_line
          control_line:
                  # include pp_tokens new_line
                  # define  identifier replacement_list new_line
                  # define  identifier lparen identifier_list-opt ) 
                    replacement_list new_line
                  # undef   identifier new_line
                  # line    pp_tokens new_line
                  # error   pp_tokens-opt new_line
                  # pragma  pp_tokens-opt new_line
                  # new_line
          lparen:
                  the left_parenthesis character without preceding white_space
          replacement_list:
                  pp_tokens-opt
          pp_tokens:
                  preprocessing_token
                  pp_tokens preprocessing_token
          new_line:
                  the new_line character
Book line identifier_list:
Book line         identifier
Book line         identifier_list , identifier


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -