All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michele Martone <michelemartone@users.sourceforge.net>
To: Markus Elfring <Markus.Elfring@web.de>
Cc: cocci@inria.fr
Subject: Re: [cocci] EBNF for Coccinelle file formats?
Date: Mon, 11 Nov 2024 17:59:40 +0000	[thread overview]
Message-ID: <20241111175940.GC32356@localhost> (raw)
In-Reply-To: <3e4d1941-40c5-43f6-aba3-c400b0828ae7@web.de>


[-- Attachment #1.1: Type: text/plain, Size: 593 bytes --]

On 20241111@18:36, Markus Elfring wrote:
> >>> If you
> >>>  grep '^[a-z_]*:'
> >>> through the *.mly files you get a few hundred non-terminals,
> >>> each with a handful of production rules.
> >>>
> >>> In a few words: LOTS of rules.
> >>
> >> Is such a software situation influenced because of the usage
> >> of the tools “ocamlyacc”?
> > No -- you'd have the same problem with any tool I'd say.
> 
> Has EBNF the potential for more succinct grammar descriptions
> in comparison to ocamlyacc?
I think no.

How do you find the grammar description attached to this email?

[-- Attachment #1.2: parser_c.txt --]
[-- Type: text/plain, Size: 34213 bytes --]

   0  $accept : %entry% $end

   1  main : translation_unit EOF

   2  translation_unit :
   3                   | translation_unit external_declaration
   4                   | translation_unit Tnamespace TIdent TOBrace translation_unit TCBrace
   5                   | translation_unit Tnamespace TOBrace translation_unit TCBrace

   6  ident : TIdent
   7        | TypedefIdent

   8  identifier : TIdent

   9  identifier_cpp : TIdent
  10                 | ident_extra_cpp

  11  ident_cpp : TIdent
  12            | TypedefIdent
  13            | ident_extra_cpp

  14  ident_extra_cpp : TIdent TCppConcatOp identifier_cpp_list
  15                  | TCppConcatOp TIdent
  16                  | TMacroIdentBuilder TOPar param_define_list TCPar
  17                  | TQualId qual_id

  18  identifier_cpp_list : ident_or_kwd
  19                      | identifier_cpp_list TCppConcatOp ident_or_kwd

  20  qual_id : ident
  21          | TColonColon ident
  22          | qual_id TColonColon ident

  23  ident_or_kwd : TIdent
  24               | Talignas
  25               | Tasm
  26               | Tattribute
  27               | TattributeNoarg
  28               | Tauto
  29               | TautoType
  30               | Tbreak
  31               | Tcase
  32               | Tchar
  33               | Tclass
  34               | Tcomplex
  35               | Tconst
  36               | Tcontinue
  37               | Tcpp_struct
  38               | Tcpp_union
  39               | Tdecimal
  40               | Tdefault
  41               | Tdelete
  42               | Tdo
  43               | Ttry
  44               | Tdouble
  45               | Telse
  46               | Tenum
  47               | Texec
  48               | Textern
  49               | Tfinal
  50               | Tvirtual
  51               | Tfloat
  52               | Tfor
  53               | Tgoto
  54               | Tif
  55               | Tinline
  56               | Tint
  57               | Tlong
  58               | TMacroAttr
  59               | Tnamespace
  60               | Tnew
  61               | Toperator
  62               | Tprivate
  63               | Tprotected
  64               | Tptrdiff_t
  65               | Tpublic
  66               | Tregister
  67               | Trestrict
  68               | Treturn
  69               | Tshort
  70               | Tsigned
  71               | Tsizeof
  72               | Tsize_t
  73               | Tssize_t
  74               | Tstatic
  75               | Tstruct
  76               | Tswitch
  77               | Ttemplate
  78               | Ttypedef
  79               | Ttypename
  80               | Ttypeof
  81               | Tunion
  82               | Tunsigned
  83               | Tusing
  84               | Tvoid
  85               | Tvolatile
  86               | Twhile

  87  expr : assign_expr
  88       | expr TComma assign_expr

  89  assign_expr : cond_expr
  90              | unary_expr TAssign assign_expr
  91              | unary_expr TEq assign_expr
  92              | unary_expr TAssign tuple_expr
  93              | unary_expr TEq tuple_expr

  94  cond_expr : arith_expr
  95            | arith_expr TWhy gcc_opt_expr TDotDot cond_expr
  96            | Tnew cpp_type cpp_initialiser_opt
  97            | Tnew placement_params cpp_type cpp_initialiser_opt

  98  placement_params : TOPar argument_list_ne_without_paramdecl TCPar

  99  cpp_initialiser_opt : TOPar argument_list TCPar
 100                      | TOBrace argument_list TCBrace
 101                      |

 102  cpp_type : TOPar simple_type TCPar
 103           | cpp_type_noparen

 104  cpp_type_noparen : simple_type
 105                   | identifier_cpp

 106  arith_expr : cast_expr
 107             | arith_expr TMul arith_expr
 108             | arith_expr TDiv arith_expr
 109             | arith_expr TMin arith_expr
 110             | arith_expr TMax arith_expr
 111             | arith_expr TMod arith_expr
 112             | arith_expr TPlus arith_expr
 113             | arith_expr TMinus arith_expr
 114             | arith_expr TShl arith_expr
 115             | arith_expr TShr arith_expr
 116             | arith_expr TInf arith_expr
 117             | arith_expr TSup arith_expr
 118             | arith_expr TInfEq arith_expr
 119             | arith_expr TSupEq arith_expr
 120             | arith_expr TEqEq arith_expr
 121             | arith_expr TNotEq arith_expr
 122             | arith_expr TAnd arith_expr
 123             | arith_expr TOr arith_expr
 124             | arith_expr TXor arith_expr
 125             | arith_expr TAndLog arith_expr
 126             | arith_expr TOrLog arith_expr

 127  arith_expr_nosup : cast_expr
 128                   | arith_expr_nosup TMul arith_expr_nosup
 129                   | arith_expr_nosup TDiv arith_expr_nosup
 130                   | arith_expr_nosup TMin arith_expr_nosup
 131                   | arith_expr_nosup TMax arith_expr_nosup
 132                   | arith_expr_nosup TMod arith_expr_nosup
 133                   | arith_expr_nosup TPlus arith_expr_nosup
 134                   | arith_expr_nosup TMinus arith_expr_nosup
 135                   | arith_expr_nosup TShl arith_expr_nosup
 136                   | arith_expr_nosup TShr arith_expr_nosup
 137                   | arith_expr_nosup TInf arith_expr_nosup
 138                   | arith_expr_nosup TInfEq arith_expr_nosup
 139                   | arith_expr_nosup TSupEq arith_expr_nosup
 140                   | arith_expr_nosup TEqEq arith_expr_nosup
 141                   | arith_expr_nosup TNotEq arith_expr_nosup
 142                   | arith_expr_nosup TAnd arith_expr_nosup
 143                   | arith_expr_nosup TOr arith_expr_nosup
 144                   | arith_expr_nosup TXor arith_expr_nosup
 145                   | arith_expr_nosup TAndLog arith_expr_nosup
 146                   | arith_expr_nosup TOrLog arith_expr_nosup

 147  cast_expr : unary_expr
 148            | topar2 type_name tcpar2 cast_expr

 149  unary_expr : postfix_expr
 150             | TInc unary_expr
 151             | TDec unary_expr
 152             | unary_op cast_expr
 153             | Tsizeof unary_expr
 154             | Tsizeof topar2 type_name tcpar2
 155             | Tdelete cast_expr
 156             | Tdelete TOCro TCCro cast_expr
 157             | Tdefined identifier_cpp
 158             | Tdefined TOPar identifier_cpp TCPar

 159  unary_op : TAnd
 160           | TMul
 161           | TPlus
 162           | TMinus
 163           | TTilde
 164           | TBang
 165           | TAndLog

 166  postfix_expr : primary_expr
 167               | TQualExp qual_type
 168               | postfix_expr TOCro argument_list_ne TCCro
 169               | postfix_expr TOPar argument_list TCPar
 170               | postfix_expr TInf3 argument_list TSup3
 171               | postfix_expr TDot ident_cpp
 172               | postfix_expr TPtrOp ident_cpp
 173               | postfix_expr TInc
 174               | postfix_expr TDec
 175               | topar2 type_name tcpar2 TOBrace outer_initialize_list TCBrace

 176  primary_expr_without_ident : TInt
 177                             | TFloat
 178                             | TString
 179                             | TQuote string_fragments TQuote
 180                             | TChar
 181                             | TDecimal
 182                             | TOPar expr TCPar
 183                             | TMacroString
 184                             | string_elem string_list
 185                             | TOPar compound TCPar

 186  primary_expr : identifier_cpp
 187               | primary_expr_without_ident

 188  string_fragments :
 189                   | string_fragment string_fragments

 190  string_fragment : TPct string_format
 191                  | TSubString

 192  string_format : TFormat

 193  argument_ne : assign_expr
 194              | tuple_expr
 195              | parameter_decl_arg
 196              | action_higherordermacro_ne

 197  argument_ne_without_paramdecl : primary_expr_without_ident
 198                                | action_higherordermacro_ne

 199  argument : assign_expr
 200           | tuple_expr
 201           | parameter_decl_arg
 202           | action_higherordermacro

 203  action_higherordermacro_ne : taction_list_ne

 204  action_higherordermacro : taction_list

 205  const_expr : cond_expr

 206  topar2 : TOPar

 207  tcpar2 : TCPar

 208  statement : statement2

 209  statement2 : labeled
 210             | compound
 211             | expr_statement
 212             | selection
 213             | iteration
 214             | jump TPtVirg
 215             | Tasm TOPar asmbody TCPar TPtVirg
 216             | Tasm Tvolatile TOPar asmbody TCPar TPtVirg
 217             | TMacroStmt TOPar macro_argument_list TCPar
 218             | TMacroIdStmt
 219             | Texec identifier exec_list TPtVirg

 220  labeled : ident_cpp TDotDot sw_stat_or_decl
 221          | Tcase const_expr TDotDot sw_stat_or_decl
 222          | Tcase const_expr TEllipsis const_expr TDotDot sw_stat_or_decl
 223          | Tdefault TDotDot sw_stat_or_decl

 224  sw_stat_or_decl : decl
 225                  | statement

 226  end_labeled : ident_cpp TDotDot
 227              | Tcase const_expr TDotDot
 228              | Tdefault TDotDot

 229  compound : tobrace compound2 tcbrace

 230  compound2 :
 231            | stat_or_decl_list

 232  stat_or_decl_list : stat_or_decl
 233                    | end_labeled
 234                    | stat_or_decl stat_or_decl_list

 235  stat_or_decl : decl
 236               | statement
 237               | function_definition
 238               | cpp_directive
 239               | cpp_ifdef_directive

 240  expr_statement : TPtVirg
 241                 | expr TPtVirg

 242  handler : Tcatch TOPar parameter_decl TCPar compound

 243  handler_sequence : handler
 244                   | handler_sequence handler

 245  selection : Tif TOPar expr TCPar cpp_ifdef_statement
 246            | Tif TOPar expr TCPar cpp_ifdef_statement Telse cpp_ifdef_statement
 247            | Tswitch TOPar expr TCPar statement
 248            | TUifdef Tif TOPar expr TCPar statement Telse TUendif statement
 249            | TUifdef Tif TOPar expr TCPar statement Telse TUelseif statement TUendif statement
 250            | Ttry compound handler_sequence

 251  iteration : Twhile TOPar expr TCPar cpp_ifdef_statement
 252            | Twhile TOPar decl_spec init_declarator_list TCPar cpp_ifdef_statement
 253            | Tdo statement Twhile TOPar expr TCPar TPtVirg
 254            | Tfor TOPar expr_statement expr_statement TCPar cpp_ifdef_statement
 255            | Tfor TOPar expr_statement expr_statement expr TCPar cpp_ifdef_statement
 256            | Tfor TOPar decl expr_statement TCPar cpp_ifdef_statement
 257            | Tfor TOPar decl expr_statement expr TCPar cpp_ifdef_statement
 258            | Tfor TOPar decl_spec declaratorifn TDotDot initialize TCPar cpp_ifdef_statement
 259            | TMacroIterator TOPar argument_list TCPar cpp_ifdef_statement

 260  jump : Tgoto ident_cpp
 261       | Tcontinue
 262       | Tbreak
 263       | Treturn
 264       | Treturn expr
 265       | Treturn tuple_expr
 266       | Tgoto TMul expr

 267  tuple_expr : TOBrace outer_initialize_list TCBrace

 268  string_elem : TQuote string_fragments TQuote
 269              | TString
 270              | TMacroString

 271  asmbody : string_list colon_asm_list
 272          | string_list

 273  colon_asm : TDotDot colon_option_list

 274  colon_option : TString
 275               | TString TOPar asm_expr TCPar
 276               | TOCro identifier TCCro TString TOPar asm_expr TCPar
 277               | identifier
 278               |

 279  exec_list :
 280            | TDotDot identifier_cpp exec_ident exec_list
 281            | TIdent exec_ident2 exec_list
 282            | token exec_list

 283  exec_ident :
 284             | TDot TIdent exec_ident
 285             | TPtrOp TIdent exec_ident
 286             | TOCro argument_list_ne TCCro exec_ident

 287  exec_ident2 :
 288              | TDot TIdent exec_ident2

 289  asm_expr : assign_expr

 290  token : TPlus
 291        | TMinus
 292        | TMul
 293        | TDiv
 294        | TMod
 295        | TMin
 296        | TMax
 297        | TInc
 298        | TDec
 299        | TEq
 300        | TAssign
 301        | TEqEq
 302        | TNotEq
 303        | TSupEq
 304        | TInfEq
 305        | TSup
 306        | TInf
 307        | TAndLog
 308        | TOrLog
 309        | TShr
 310        | TShl
 311        | TAnd
 312        | TOr
 313        | TXor
 314        | TOBrace
 315        | TCBrace
 316        | TOPar
 317        | TCPar
 318        | TWhy
 319        | TBang
 320        | TComma
 321        | TypedefIdent
 322        | Tif
 323        | Telse
 324        | TInt
 325        | TFloat
 326        | TString
 327        | TChar

 328  simple_type : Tvoid
 329              | Tchar
 330              | Tint
 331              | Tfloat
 332              | Tdouble
 333              | Tcomplex
 334              | Tsize_t
 335              | Tssize_t
 336              | Tptrdiff_t
 337              | Tshort
 338              | Tlong
 339              | Tsigned
 340              | Tunsigned
 341              | Tdecimal TOPar const_expr TComma const_expr TCPar
 342              | Tdecimal TOPar const_expr TCPar
 343              | TautoType
 344              | Ttypeof TOPar assign_expr TCPar
 345              | Ttypeof TOPar type_name TCPar
 346              | TypedefIdent
 347              | TQualType qual_type

 348  qual_type : ident
 349            | qual_type TColonColon ident
 350            | TColonColon ident
 351            | qual_type TTemplateStart argument_list TTemplateEnd

 352  type_spec2_without_braces : simple_type
 353                            | enum_ident_independant

 354  type_spec2_with_braces : struct_or_union_spec
 355                         | enum_spec

 356  type_spec : type_spec2_without_braces
 357            | type_spec2_with_braces

 358  type_qualif : Tconst
 359              | Tvolatile
 360              | Trestrict

 361  attribute : attribute_gcc
 362            | attr_arg

 363  attr_arg : TMacroAttr
 364           | TMacroAttrArgs TOPar argument_list TCPar
 365           | TMacroAttrArgs TOPar argument_list TCParEOL

 366  attribute_gcc : Tattribute tdouble_opar_gcc_attr argument_list tdouble_cpar_gcc_attr
 367                | tdouble_ocro_cxx_attr argument_list tdouble_ccro_cxx_attr
 368                | tdouble_ocro_cxx_attr Tusing ident_cpp TDotDot argument_list tdouble_ccro_cxx_attr

 369  declarator : pointer direct_d
 370             | direct_d

 371  declarator_fn : pointer direct_d_fn
 372                | direct_d_fn

 373  pointer : tmul type_qualif_list
 374          | tmul type_qualif_list pointer

 375  tmul : TMul
 376       | TAnd
 377       | TAndLog

 378  direct_d : identifier_cpp
 379           | operator_c_plus_plus
 380           | TOPar declarator TCPar
 381           | direct_d tocro tccro
 382           | direct_d tocro const_expr tccro

 383  direct_d_fn : direct_d topar parameter_type_list tcpar

 384  operator_c_plus_plus : Toperator unary_op
 385                       | Toperator TInc
 386                       | Toperator TDec
 387                       | Toperator Tdelete
 388                       | Toperator Tnew
 389                       | Toperator TDiv
 390                       | Toperator TMin
 391                       | Toperator TMax
 392                       | Toperator TMod
 393                       | Toperator TShl
 394                       | Toperator TShr
 395                       | Toperator TInf
 396                       | Toperator TSup
 397                       | Toperator TInfEq
 398                       | Toperator TSupEq
 399                       | Toperator TEqEq
 400                       | Toperator TNotEq
 401                       | Toperator TOr
 402                       | Toperator TXor
 403                       | Toperator TOrLog
 404                       | Toperator TOCro TCCro
 405                       | Toperator TOPar TCPar
 406                       | Toperator TAssign
 407                       | Toperator TEq

 408  tocro : TOCro

 409  tccro : TCCro

 410  abstract_declarator : pointer
 411                      | direct_abstract_declarator
 412                      | pointer direct_abstract_declarator

 413  direct_abstract_declarator : TOPar abstract_declarator TCPar
 414                             | TOCro TCCro
 415                             | TOCro const_expr TCCro
 416                             | direct_abstract_declarator TOCro TCCro
 417                             | direct_abstract_declarator TOCro const_expr TCCro
 418                             | topar parameter_type_list tcpar
 419                             | direct_abstract_declarator topar parameter_type_list tcpar

 420  parameter_type_list :
 421                      | parameter_list
 422                      | parameter_list TComma TEllipsis

 423  parameter_decl2 : TKRParam
 424                  | decl_spec declaratorp
 425                  | decl_spec abstract_declaratorp
 426                  | decl_spec

 427  parameter_decl_arg : TKRParam
 428                     | decl_spec declaratorp
 429                     | decl_spec abstract_declaratorp
 430                     | decl_spec

 431  template_parameter_decl2 : Ttypename ident
 432                           | Ttypename ident TEq type_spec
 433                           | Tclass ident
 434                           | Tclass ident TEq type_spec
 435                           | type_spec2_without_braces declaratorp
 436                           | type_spec2_without_braces declaratorp TEq initialize_arg
 437                           | Tconst type_spec2_without_braces declaratorp
 438                           | Tconst type_spec2_without_braces declaratorp TEq initialize_arg
 439                           | Ttemplate TTemplateStart template_parameter_list_ne TTemplateEnd template_parameter_decl2

 440  parameter_decl : parameter_decl2

 441  template_parameter_decl : template_parameter_decl2

 442  declaratorp : declarator attributes_opt
 443              | declarator_fn attributes_opt

 444  abstract_declaratorp : abstract_declarator

 445  spec_qualif_list2 : type_spec
 446                    | type_qualif
 447                    | attribute
 448                    | type_spec spec_qualif_list
 449                    | type_qualif spec_qualif_list
 450                    | attribute spec_qualif_list

 451  spec_qualif_list : spec_qualif_list2

 452  type_qualif_list :
 453                   | type_qualif_list type_qualif
 454                   | type_qualif_list attribute

 455  type_name : spec_qualif_list
 456            | spec_qualif_list abstract_declaratort

 457  abstract_declaratort : abstract_declarator

 458  decl2 : decl_spec TPtVirg
 459        | decl_spec init_declarator_list TPtVirg
 460        | TMacroDecl TOPar macro_argument_list TCPar attributes_opt TPtVirg
 461        | TMacroDecl TOPar macro_argument_list TCPar attributes_opt teq initialize TPtVirg
 462        | decl_spec TMacroDecl TOPar macro_argument_list TCPar attributes_opt TPtVirg
 463        | decl_spec TMacroDecl TOPar macro_argument_list TCPar attributes_opt teq initialize TPtVirg

 464  decl_spec2 : storage_class_spec
 465             | type_spec
 466             | type_qualif
 467             | Tinline
 468             | align_class_prod
 469             | attribute
 470             | storage_class_spec decl_spec2
 471             | type_qualif decl_spec2
 472             | align_class_prod decl_spec2
 473             | Tinline decl_spec2
 474             | attribute decl_spec2
 475             | type_spec decl_spec2

 476  align_class_prod : Talignas TOPar argument TCPar

 477  storage_class_spec_nt : Tstatic
 478                        | Textern
 479                        | Tauto
 480                        | Tregister

 481  storage_class_spec : storage_class_spec_nt
 482                     | Ttypedef

 483  decl : decl2

 484  decl_spec : decl_spec2

 485  init_declarator2 : declaratorifn
 486                   | declaratorifn teq initialize
 487                   | declaratori topar_ini_cxx valinit tcpar_ini
 488                   | declaratori tobrace_ini valinit tcbrace_ini

 489  init_declarator_attrs2 : declaratorifn
 490                         | attributes declaratorifn
 491                         | declaratorifn teq initialize
 492                         | attributes declaratorifn teq initialize
 493                         | declaratori topar_ini_cxx valinit tcpar_ini
 494                         | attributes declaratori topar_ini_cxx valinit tcpar_ini
 495                         | declaratori tobrace_ini valinit tcbrace_ini
 496                         | attributes declaratori tobrace_ini valinit tcbrace_ini

 497  teq : TEq

 498  init_declarator : init_declarator2

 499  init_declarator_attrs : init_declarator_attrs2

 500  declaratori : declarator attributes_opt
 501              | declarator gcc_asm_decl

 502  declaratorifn : declarator attributes_opt
 503                | declarator gcc_asm_decl
 504                | declarator_fn attributes_opt
 505                | declarator_fn gcc_asm_decl

 506  gcc_asm_decl : Tasm TOPar asmbody TCPar
 507               | Tasm Tvolatile TOPar asmbody TCPar

 508  initialize : assign_expr
 509             | tobrace_ini outer_initialize_list tcbrace_ini

 510  initialize_arg : arith_expr_nosup
 511                 | tobrace_ini outer_initialize_list tcbrace_ini

 512  initialize_list : initialize2
 513                  | initialize_list TComma initialize2
 514                  | initialize_list TNoComma initialize2

 515  outer_initialize_list :
 516                        | initialize_list gcc_comma_opt_struct

 517  valinit : outer_initialize_list

 518  initialize2 : cond_expr
 519              | tobrace_ini outer_initialize_list tcbrace_ini
 520              | designator_list TEq initialize2
 521              | ident TDotDot initialize2

 522  designator : TDot ident
 523             | TOCro const_expr TCCro
 524             | TOCro const_expr TEllipsis const_expr TCCro

 525  gcc_comma_opt_struct : TComma
 526                       | TNoComma
 527                       |

 528  s_or_u_spec2 : cpp_struct_or_union ident optfinal TDotDot base_classes tobrace_struct cpp_struct_decl_list_gcc tcbrace_struct
 529               | cpp_struct_or_union ident optfinal tobrace_struct cpp_struct_decl_list_gcc tcbrace_struct
 530               | struct_or_union ident tobrace_struct struct_decl_list_gcc tcbrace_struct
 531               | cpp_struct_or_union TDotDot base_classes tobrace_struct cpp_struct_decl_list_gcc tcbrace_struct
 532               | cpp_struct_or_union tobrace_struct cpp_struct_decl_list_gcc tcbrace_struct
 533               | struct_or_union tobrace_struct struct_decl_list_gcc tcbrace_struct
 534               | struct_or_union ident
 535               | cpp_struct_or_union ident

 536  struct_or_union2 : Tstruct
 537                   | Tunion
 538                   | Tstruct attributes
 539                   | Tunion attributes

 540  cpp_struct_or_union2 : Tcpp_struct
 541                       | Tcpp_union
 542                       | Tclass
 543                       | Tcpp_struct attributes
 544                       | Tcpp_union attributes
 545                       | Tclass attributes

 546  struct_decl2 : field_declaration
 547               | TPtVirg
 548               | identifier TOPar macro_argument_list TCPar attributes_opt TPtVirg
 549               | TMacroDecl TOPar macro_argument_list TCPar attributes_opt TPtVirg
 550               | cpp_directive
 551               | cpp_ifdef_directive

 552  cpp_struct_decl2 : function_definition
 553                   | decl
 554                   | TPtVirg
 555                   | c_plus_plus_constructor_decl
 556                   | cpp_directive
 557                   | cpp_ifdef_directive
 558                   | Tpublic TDotDot
 559                   | Tprotected TDotDot
 560                   | Tprivate TDotDot

 561  c_plus_plus_constructor_decl : pre_member_function identifier TOPar parameter_type_list TCPar constr_inits post_constructor TPtVirg
 562                               | pre_member_function TTilde identifier TOPar parameter_type_list TCPar post_constructor TPtVirg
 563                               | pre_member_function identifier TOPar parameter_type_list TCPar constr_inits post_constructor compound
 564                               | pre_member_function TTilde identifier TOPar parameter_type_list TCPar post_constructor compound

 565  constr_inits : TDotDot constructor_init_list
 566               |

 567  constructor_init_list : constructor_init
 568                        | constructor_init_list TComma constructor_init

 569  constructor_init : ident_cpp TOPar argument_list TCPar
 570                   | ident_cpp TOBrace argument_list TCBrace

 571  pre_member_function : Tvirtual
 572                      |

 573  post_constructor : Tfinal
 574                   |

 575  optfinal : Tfinal
 576           |

 577  field_declaration : decl_spec struct_declarator_list TPtVirg
 578                    | decl_spec TPtVirg
 579                    | simple_type dotdot const_expr2 TPtVirg

 580  struct_declarator : declarator attributes_opt
 581                    | declarator dotdot const_expr2
 582                    | declarator_fn attributes_opt
 583                    | declarator_fn dotdot const_expr2

 584  struct_or_union_spec : s_or_u_spec2

 585  struct_or_union : struct_or_union2

 586  cpp_struct_or_union : cpp_struct_or_union2

 587  struct_decl : struct_decl2

 588  cpp_struct_decl : cpp_struct_decl2

 589  dotdot : TDotDot

 590  const_expr2 : const_expr

 591  struct_decl_list_gcc : struct_decl_list
 592                       |

 593  cpp_struct_decl_list_gcc : cpp_struct_decl_list
 594                           |

 595  enum_spec : enum_ident enum_base tobrace_enum enumerator_list gcc_comma_opt_struct tcbrace_enum

 596  enum_ident_independant : Tenum enum_key ident
 597                         | Tenum ident

 598  enum_ident_dependant : Tenum enum_key
 599                       | Tenum

 600  enum_ident : enum_ident_independant
 601             | enum_ident_dependant

 602  enum_base : TDotDot simple_type
 603            |

 604  enum_key : Tcpp_struct
 605           | Tclass

 606  enumerator : idente
 607             | idente TEq const_expr

 608  idente : ident_cpp

 609  function_definition : function_def

 610  cpp_directive_list : cpp_directive
 611                     | cpp_directive_list cpp_directive

 612  function_def : start_fun compound
 613               | start_fun cpp_directive_list compound

 614  start_fun : start_fun2

 615  start_fun2 : decl_spec declaratorfd
 616             | ctor_dtor

 617  ctor_dtor : Tconstructorname topar parameter_type_list tcpar
 618            | Tconstructorname topar parameter_type_list tcpar TDotDot constr_extra_list

 619  constr_extra : TIdent TOPar argument_list TCPar
 620               | TypedefIdent TOPar argument_list TCPar

 621  declaratorfd : declarator_fn attributes_opt

 622  cpp_directive : TIncludeStart TIncludeFilename
 623                | TDefine TIdentDefine define_val TDefEOL
 624                | TDefine TIdentDefine TOParDefine call_param_define_list TCPar define_val TDefEOL
 625                | TUndef TIdentDefine TDefEOL
 626                | TPragma TIdent pragma_strings TDefEOL
 627                | TCppDirectiveOther
 628                | Tusing TIdent TEq Ttypename cpp_type_noparen TPtVirg
 629                | Tusing TIdent TEq cpp_type_noparen TPtVirg
 630                | Tusing TypedefIdent TEq Ttypename cpp_type_noparen TPtVirg
 631                | Tusing TypedefIdent TEq cpp_type_noparen TPtVirg
 632                | Tusing identifier_cpp TPtVirg
 633                | Tusing Tnamespace identifier_cpp TPtVirg

 634  pragma_strings : TPragmaString

 635  define_val : expr
 636             | statement
 637             | decl
 638             | decl_spec
 639             | decl_spec abstract_declarator
 640             | stat_or_decl stat_or_decl_list
 641             | function_definition
 642             | TOBraceDefineInit outer_initialize_list TCBrace comma_opt
 643             | Tdo statement Twhile TOPar expr TCPar
 644             | Tasm TOPar asmbody TCPar
 645             | Tasm Tvolatile TOPar asmbody TCPar
 646             | designator_list TEq initialize2 gcc_comma_opt_struct
 647             | designator_list TEq initialize2 TComma initialize_list gcc_comma_opt_struct
 648             |

 649  param_define : TIdent
 650               | TypedefIdent
 651               | TEllipsis
 652               | TIdent TEllipsis
 653               | TypedefIdent TEllipsis
 654               | Tregister

 655  cpp_ifdef_statement : ifdef cpp_ifdef_statement cpp_ifdef_statement_tail
 656                      | statement

 657  cpp_ifdef_statement_tail : ifdefelse cpp_ifdef_statement endif
 658                           | ifdefelif cpp_ifdef_statement cpp_ifdef_statement_tail

 659  ifdef : TIfdef

 660  ifdefelse : TIfdefelse

 661  ifdefelif : TIfdefelif

 662  endif : TEndif

 663  cpp_ifdef_directive : ifdef
 664                      | ifdefelse
 665                      | ifdefelif
 666                      | endif
 667                      | TIfdefBool
 668                      | TIfdefMisc
 669                      | TIfdefVersion

 670  cpp_other : identifier TOPar macro_argument_list TCPar attributes_opt TPtVirg
 671            | identifier TOPar macro_argument_list TCPar compound
 672            | identifier TOPar macro_argument_list TCParEOL
 673            | identifier TPtVirg

 674  external_declaration : Ttemplate TTemplateStart template_parameter_list_ne TTemplateEnd external_declaration
 675                       | function_definition
 676                       | decl

 677  celem : Tnamespace ident TOBrace translation_unit TCBrace
 678        | Tnamespace TOBrace translation_unit TCBrace
 679        | external_declaration
 680        | cpp_directive
 681        | cpp_other
 682        | cpp_ifdef_directive
 683        | Tasm TOPar asmbody TCPar TPtVirg
 684        | TPtVirg
 685        | EOF

 686  base_class : base_class_name
 687             | Tpublic base_class_name
 688             | Tprotected base_class_name
 689             | Tprivate base_class_name

 690  base_class_name : ident_cpp

 691  base_classes : base_class
 692               | base_classes TComma base_class

 693  tobrace : TOBrace

 694  tcbrace : TCBrace

 695  tobrace_enum : TOBrace

 696  tcbrace_enum : TCBrace

 697  tobrace_ini : TOBrace

 698  tcbrace_ini : TCBrace

 699  topar_ini_cxx : TOParCplusplusInit

 700  tcpar_ini : TCPar

 701  tobrace_struct : TOBrace

 702  tcbrace_struct : TCBrace

 703  call_param_define_list : param_define_list

 704  topar : TOPar

 705  tcpar : TCPar

 706  tdouble_opar_gcc_attr : TOPar TOPar

 707  tdouble_cpar_gcc_attr : TCPar TCPar

 708  tdouble_ocro_cxx_attr : TOCroCro

 709  tdouble_ccro_cxx_attr : TCCro TCCro

 710  string_list : string_elem
 711              | string_list string_elem

 712  colon_asm_list : colon_asm
 713                 | colon_asm_list colon_asm

 714  colon_option_list : colon_option
 715                    | colon_option_list TComma colon_option

 716  constr_extra_list : constr_extra
 717                    | constr_extra_list TComma constr_extra

 718  argument_list :
 719                | argument_list_ne

 720  argument_list_ne : argument_ne
 721                   | argument_list_ne TComma argument

 722  argument_list_ne_without_paramdecl : argument_ne_without_paramdecl
 723                                     | argument_list_ne TComma argument_ne_without_paramdecl

 724  macro_argument_list : argument
 725                      | macro_argument_list TComma argument

 726  struct_decl_list : struct_decl
 727                   | struct_decl_list struct_decl

 728  cpp_struct_decl_list : cpp_struct_decl
 729                       | cpp_struct_decl_list cpp_struct_decl

 730  struct_declarator_list : struct_declarator
 731                         | struct_declarator_list TComma cpp_directive_list struct_declarator
 732                         | struct_declarator_list TComma struct_declarator

 733  enumerator_list : enumerator
 734                  | enumerator_list TComma cpp_directive_list enumerator
 735                  | enumerator_list TComma enumerator
 736                  |

 737  init_declarator_list : init_declarator
 738                       | init_declarator_list TComma cpp_directive_list init_declarator_attrs
 739                       | init_declarator_list TComma init_declarator_attrs

 740  parameter_list : parameter_decl
 741                 | parameter_list TComma parameter_decl

 742  template_parameter_list_ne : template_parameter_decl
 743                             | template_parameter_list_ne TComma template_parameter_decl

 744  taction_list_ne : TAction
 745                  | TAction taction_list_ne

 746  taction_list :
 747               | TAction taction_list

 748  param_define_list :
 749                    | param_define
 750                    | param_define_list TComma param_define

 751  designator_list : designator
 752                  | designator_list designator

 753  attribute_list : attribute
 754                 | attribute_list attribute

 755  attributes : attribute_list

 756  attributes_opt : attribute_list
 757                 |

 758  comma_opt : TComma
 759            |

 760  gcc_opt_expr : expr
 761               |

 762  %entry% : '\001' main
 763          | '\002' celem
 764          | '\003' statement
 765          | '\004' expr
 766          | '\005' type_name
 767          | '\006' cpp_directive
 768          | '\007' iteration
\f


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

  reply	other threads:[~2024-11-11 17:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-09 13:14 [cocci] EBNF for Coccinelle file formats? Markus Elfring
2024-11-11 16:24 ` Michele Martone
2024-11-11 17:01   ` Markus Elfring
2024-11-11 17:12     ` Michele Martone
2024-11-11 17:19       ` Markus Elfring
2024-11-11 17:31         ` Michele Martone
2024-11-11 17:36           ` Markus Elfring
2024-11-11 17:59             ` Michele Martone [this message]
2024-11-12  6:36               ` Markus Elfring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241111175940.GC32356@localhost \
    --to=michelemartone@users.sourceforge.net \
    --cc=Markus.Elfring@web.de \
    --cc=cocci@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.