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

📄 grammar.txt

📁 C Preprocessor,antlr的grammar语言描述,用于学习词法分析,语法分析
💻 TXT
📖 第 1 页 / 共 3 页
字号:
                  postfix_expression . pseudo_destructor_name
                  postfix_expression -> pseudo_destructor_name
                  postfix_expression ++
                  postfix_expression --
                  dynamic_cast < type_id > ( expression )
                  static_cast < type_id > ( expression )
                  reinterpret_cast < type_id > ( expression )
                  const_cast < type_id > ( expression )
                  typeid ( expression )
                  typeid ( type_id )
          expression_list:
                  assignment_expression
                  expression_list , assignment_expression
          pseudo_destructor_name:
                  ::-opt nested_name_specifier-opt type_name :: ~ type_name
Book line         ::-opt nested_name_specifier template template_id :: ~
                    type_name
                  ::-opt nested_name_specifier-opt ~ type_name
          unary_expression:
                  postfix_expression
                  ++  cast_expression
                  --  cast_expression
                  unary_operator cast_expression
                  sizeof unary_expression
                  sizeof ( type_id )
                  new_expression
                  delete_expression
          unary_operator: one of
                  *  &  +  -  !  ~
          new_expression:
                  ::-opt new new_placement-opt new_type_id new_initializer-opt
                  ::-opt new new_placement-opt ( type_id ) new_initializer-opt
          new_placement:
                  ( expression_list )
          new_type_id:
                  type_specifier_seq new_declarator-opt
          new_declarator:
                  ptr_operator new_declarator-opt
                  direct_new_declarator
          direct_new_declarator:
                  [ expression ]
                  direct_new_declarator [ constant_expression ]
          new_initializer:
                  ( expression_list-opt )
          delete_expression:
                  ::-opt delete cast_expression
                  ::-opt delete [ ] cast_expression
          cast_expression:
                  unary_expression
                  ( type_id ) cast_expression
          pm_expression:
                  cast_expression
                  pm_expression .* cast_expression
                  pm_expression ->* cast_expression
          multiplicative_expression:
                  pm_expression
                  multiplicative_expression * pm_expression
                  multiplicative_expression / pm_expression
                  multiplicative_expression % pm_expression
          additive_expression:
                  multiplicative_expression
                  additive_expression + multiplicative_expression
                  additive_expression - multiplicative_expression
          shift_expression:
                  additive_expression
                  shift_expression << additive_expression
                  shift_expression >> additive_expression
          relational_expression:
                  shift_expression
                  relational_expression < shift_expression
                  relational_expression > shift_expression
                  relational_expression <= shift_expression
                  relational_expression >= shift_expression
          equality_expression:
                  relational_expression
                  equality_expression == relational_expression
                  equality_expression != relational_expression
          and_expression:
                  equality_expression
                  and_expression & equality_expression
          exclusive_or_expression:
                  and_expression
                  exclusive_or_expression ^ and_expression
          inclusive_or_expression:
                  exclusive_or_expression
                  inclusive_or_expression | exclusive_or_expression
          logical_and_expression:
                  inclusive_or_expression
                  logical_and_expression && inclusive_or_expression
          logical_or_expression:
                  logical_and_expression
                  logical_or_expression || logical_and_expression
          conditional_expression:
                  logical_or_expression
                  logical_or_expression ? expression : assignment_expression
          assignment_expression:
                  conditional_expression
                  logical_or_expression assignment_operator            
                    assignment_expression
                  throw_expression
          assignment_operator: one of
                  =  *=  /=  %=   +=  -=  >>=  <<=  &=  ^=  |=
          expression:
                  assignment_expression
                  expression , assignment_expression
          constant_expression:
                  conditional_expression

  1.5  Statements                                       [gram.stmt.stmt]
          statement:
                  labeled_statement
                  expression_statement
                  compound_statement
                  selection_statement
                  iteration_statement
                  jump_statement
                  declaration_statement
                  try_block
          labeled_statement:
                  identifier : statement
                  case constant_expression : statement
                  default : statement
          expression_statement:
                  expression-opt ;
          compound_statement:
                   { statement_seq-opt }
          statement_seq:
                  statement
                  statement_seq statement
          selection_statement:
                  if ( condition ) statement
                  if ( condition ) statement else statement
                  switch ( condition ) statement
          condition:
                  expression
                  type_specifier_seq declarator = assignment_expression
          iteration_statement:
                  while ( condition ) statement
                  do statement while ( expression ) ;
			      for ( for_init_statement condition-opt ; expression-opt ) 
                    statement
          for_init_statement:
                  expression_statement
                  simple_declaration
          jump_statement:
                  break ;
                  continue ;
                  return expression-opt ;
                  goto identifier ;
          declaration_statement:
                  block_declaration

  1.6  Declarations                                       [gram.dcl.dcl]
          declaration_seq:
                  declaration
                  declaration_seq declaration
          declaration:
                  block_declaration
                  function_definition
                  template_declaration
                  explicit_instantiation
                  explicit_specialization
                  linkage_specification
                  namespace_definition
          block_declaration:
                  simple_declaration
                  asm_definition
                  namespace_alias_definition
                  using_declaration
                  using_directive
          simple_declaration:
                  decl_specifier_seq-opt init_declarator_list-opt ;
          decl_specifier_seq:
                  decl_specifier_seq-opt decl_specifier
          decl_specifier:
                  storage_class_specifier
                  type_specifier
                  function_specifier
                  friend
                  typedef
          storage_class_specifier:
                  auto
                  register
                  static
                  extern
                  mutable
          function_specifier:
                  inline
                  virtual
                  explicit
          typedef_name:
                  identifier
          type_specifier:
                  simple_type_specifier
                  class_specifier
                  enum_specifier
                  elaborated_type_specifier
                  cv_qualifier
          simple_type_specifier:
                  ::-opt nested_name_specifier-opt type_name
Book line         ::-opt nested_name_specifier template-opt template_id
                  char
                  wchar_t
                  bool
                  short
                  int
                  long
                  signed
                  unsigned
                  float
                  double
                  void
          type_name:
                  class_name
                  enum_name
                  typedef_name
          elaborated_type_specifier:
                  class_key ::-opt nested_name_specifier-opt identifier
Nutshell          class_key ::-opt nested_name_specifier-opt template-opt 
                    template_id
                  enum ::-opt nested_name_specifier-opt identifier
                  typename ::-opt nested_name_specifier identifier
Old line         [typename ::-opt nested_name_specifier identifier < template_argument_list >]
Book line         typename ::-opt nested_name_specifier template-opt template_id
          enum_name:
                  identifier
          enum_specifier:
                  enum identifier-opt { enumerator_list-opt }
          enumerator_list:
                  enumerator_definition
                  enumerator_list , enumerator_definition
          enumerator_definition:
                  enumerator
                  enumerator = constant_expression
          enumerator:
                  identifier
          namespace_name:
                  original_namespace_name
                  namespace_alias
          original_namespace_name:
                  identifier
          namespace_definition:
                  named_namespace_definition
                  unnamed_namespace_definition
          named_namespace_definition:
                  original_namespace_definition
                  extension_namespace_definition
          original_namespace_definition:
                  namespace identifier { namespace_body }
          extension_namespace_definition:
                  namespace original_namespace_name  { namespace_body }
          unnamed_namespace_definition:
                  namespace { namespace_body }
          namespace_body:
                  declaration_seq-opt
          namespace_alias:
                  identifier
          namespace_alias_definition:
                  namespace identifier = qualified_namespace_specifier ;
          qualified_namespace_specifier:
                  ::-opt nested_name_specifier-opt namespace_name
          using_declaration:
                  using typename-opt ::-opt nested_name_specifier unqualified_id 
                    ;
                  using ::  unqualified_id ;
          using_directive:

⌨️ 快捷键说明

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