<commit_before>/* NOTE: in the symbol table, local definition must replace type definition
**		in order to correctly parse local variable in functions body.
**		This is the only way to correctly handle this kind of exception,
**		that is,
**
**		typedef ... ID;
**		int f(int *p) {int ID; return (ID) * *p;}
**		If ID isn't overload, last expression is parsed as a type cast,
**		if it isn't, this a multiplication.
**
** IMPLEMENT:
**		(1) Old-parameter passing style with an exception: 
**                  the first old-style
**		parameter name can't be a type name.
**		(2) GNU __attribute__ modifier, 
**                  GNU ({ }) statement in expression form.
**
** HISTORY
**	1.0	2.19.99	<NAME>	First version.
**	2.0	3.22.99	<NAME>	Large simplification 
**                                      about declarations.
**					"register" parameters added, 
**                                      function pointers,
**					GCC attributes, typedef full supported.
**	2.1	4.23.99	<NAME>	GNU Statement embedded statements 
**                                      managed.
**		a	&x == y was analyzed as ADDROF(EQ(x, y)) corrected
**                      into the right form EQ(ADDROF(x), y)
**		b	typedef struct ID ... ID; is now accepted.
**		c	{v1, v2, v3, } now accepted.
**		d	Spaced string components now accepted. 
**                      Example: "Hel" "lo !".
**	3.0	6.1.99	<NAME>	Solve fully the problem of 
**                                      local/field/parameter with the same 
**                                      identifier to a typedef.
**	a		  const and volatile accepted for basic types
**			  for fields and only-types.
**	b	10.9.99	<NAME>	Correct priorities of type algebra:
**			   ()() > * > []. Add typalg.c for testing it.	
**
**      <NAME>. 12/12/00: extended the syntax to process GNU C
*/
%{
open Cabs<commit_msg>Cleaned up cparser<commit_after>/* NOTE: in the symbol table, local definition must replace type definition
**		in order to correctly parse local variable in functions body.
**		This is the only way to correctly handle this kind of exception,
**		that is,
**
**		typedef ... ID;
**		int f(int *p) {int ID; return (ID) * *p;}
**		If ID isn't overload, last expression is parsed as a type cast,
**		if it isn't, this a multiplication.
**
** IMPLEMENT:
**		(1) Old-parameter passing style with an exception: 
**                  the first old-style
**		parameter name can't be a type name.
**		(2) GNU __attribute__ modifier, 
**                  GNU ({ }) statement in expression form.
**
** HISTORY
**	1.0	2.19.99	<NAME>	First version.
**	2.0	3.22.99	<NAME>	Large simplification 
**                                      about declarations.
**					"register" parameters added, 
**                                      function pointers,
**					GCC attributes, typedef full supported.
**	2.1	4.23.99	<NAME>	GNU Statement embedded statements 
**                                      managed.
**		a	&x == y was analyzed as ADDROF(EQ(x, y)) corrected
**                      into the right form EQ(ADDROF(x), y)
**		b	typedef struct ID ... ID; is now accepted.
**		c	{v1, v2, v3, } now accepted.
**		d	Spaced string components now accepted. 
**                      Example: "Hel" "lo !".
**	3.0	6.1.99	<NAME>	Solve fully the problem of 
**                                      local/field/parameter with the same 
**                                      identifier to a typedef.
**	a		  const and volatile accepted for basic types
**			  for fields and only-types.
**	b	10.9.99	<NAME>	Correct priorities of type algebra:
**			   ()() > * > []. Add typalg.c for testing it.	
**
**      <NAME>. 12/12/00: extended the syntax to process GNU C
**      <NAME>. 1/4/00: completely rewrote the parsing of types
*/
%{
open Cabs
{'fraction_non_alphanumeric': 0.1191806331471136, 'fraction_numerical': 0.023942537909018357, 'mean_word_length': 1.9746835443037976, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 20, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1965895', 'n_tokens_mistral': 1232, 'n_tokens_neox': 1127, 'n_words': 433}