File parse-yacc.c

C Cross Referencing & Documentation tool. Version 1.6e.
C parser.

References Variables: first parse-yacc.c

Included Files


Preprocessor definitions

#define YYBISON 1

#define YYBISON_VERSION "3.0.4"

#define YYSKELETON_NAME "yacc.c"

#define YYPURE 0

#define YYPUSH 0

#define YYPULL 1

#define yylex cxref_yylex

The variable must be LOCAL or EXTERNAL or GLOBAL, so this checks and sets that.

#define SCOPE

#define YY_NULLPTR 0

#define YYERROR_VERBOSE 1

#define YY_YY_Y_TAB_H_INCLUDED

#define YYTOKENTYPE

#define IDENTIFIER 258

#define TYPE_NAME 259

#define LITERAL 260

#define STRING_LITERAL 261

#define ELLIPSES 262

#define MUL_ASSIGN 263

#define DIV_ASSIGN 264

#define MOD_ASSIGN 265

#define ADD_ASSIGN 266

#define SUB_ASSIGN 267

#define LEFT_ASSIGN 268

#define RIGHT_ASSIGN 269

#define AND_ASSIGN 270

#define XOR_ASSIGN 271

#define OR_ASSIGN 272

#define EQ_OP 273

#define NE_OP 274

#define PTR_OP 275

#define AND_OP 276

#define OR_OP 277

#define DEC_OP 278

#define INC_OP 279

#define LE_OP 280

#define GE_OP 281

#define LEFT_SHIFT 282

#define RIGHT_SHIFT 283

#define SIZEOF 284

#define TYPEDEF 285

#define EXTERN 286

#define STATIC 287

#define AUTO 288

#define REGISTER 289

#define CONST 290

#define VOLATILE 291

#define VOID 292

#define INLINE 293

#define CHAR 294

#define SHORT 295

#define INT 296

#define LONG 297

#define SIGNED 298

#define UNSIGNED 299

#define FLOAT 300

#define DOUBLE 301

#define BOOL 302

#define STRUCT 303

#define UNION 304

#define ENUM 305

#define CASE 306

#define DEFAULT 307

#define IF 308

#define ELSE 309

#define SWITCH 310

#define WHILE 311

#define DO 312

#define FOR 313

#define GOTO 314

#define CONTINUE 315

#define BREAK 316

#define RETURN 317

#define ASM 318

#define YYSIZE_T __SIZE_TYPE__

#define YYSIZE_MAXIMUM

#define YY_( Msgid )

#define YY_ATTRIBUTE( Spec )

#define YY_ATTRIBUTE_PURE

#define YY_ATTRIBUTE_UNUSED

#define YYUSE( E )

#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN

#define YY_IGNORE_MAYBE_UNINITIALIZED_END

#define YY_INITIAL_VALUE( Value )

#define YYSTACK_ALLOC YYMALLOC

#define YYSTACK_FREE YYFREE

#define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM

#define YYMALLOC malloc

#define YYFREE free

#define YYSTACK_GAP_MAXIMUM

#define YYSTACK_BYTES( N )

#define YYCOPY_NEEDED 1

#define YYSTACK_RELOCATE( Stack_alloc, Stack )

#define YYCOPY( Dst, Src, Count )

#define YYFINAL 92

#define YYLAST 1500

#define YYNTOKENS 88

#define YYNNTS 172

#define YYNRULES 379

#define YYNSTATES 572

#define YYUNDEFTOK 2

#define YYMAXUTOK 318

#define YYTRANSLATE( YYX )

#define YYPACT_NINF -406

#define yypact_value_is_default( Yystate )

#define YYTABLE_NINF -246

#define yytable_value_is_error( Yytable_value )

#define yyerrok

#define yyclearin

#define YYEMPTY -2

#define YYEOF 0

#define YYACCEPT

#define YYABORT

#define YYERROR

#define YYRECOVERING

#define YYBACKUP( Token, Value )

#define YYTERROR 1

#define YYERRCODE 256

#define YYFPRINTF fprintf

#define YYDPRINTF( Args )

#define YY_LOCATION_PRINT( File, Loc )

#define YY_SYMBOL_PRINT( Title, Type, Value, Location )

#define YY_STACK_PRINT( Bottom, Top )

#define YY_REDUCE_PRINT( Rule )

#define YYINITDEPTH 200

#define YYMAXDEPTH 10000

#define yystrlen strlen

#define YYCASE_( N, S )

#define YYPOPSTACK( N )

#define YYSYNTAX_ERROR


Typedef stack

A structure to hold the information about an object.

typedef struct _stack stack

struct _stack  
   {  
      char* name; The name of the object.
      char* type; The type of the object.
      char* qual; The type qualifier of the object.
   }  

Type enum yytokentype


enum yytokentype
enum yytokentype  
   {  
      IDENTIFIER;  
      TYPE_NAME;  
      LITERAL;  
      STRING_LITERAL;  
      ELLIPSES;  
      MUL_ASSIGN;  
      DIV_ASSIGN;  
      MOD_ASSIGN;  
      ADD_ASSIGN;  
      SUB_ASSIGN;  
      LEFT_ASSIGN;  
      RIGHT_ASSIGN;  
      AND_ASSIGN;  
      XOR_ASSIGN;  
      OR_ASSIGN;  
      EQ_OP;  
      NE_OP;  
      PTR_OP;  
      AND_OP;  
      OR_OP;  
      DEC_OP;  
      INC_OP;  
      LE_OP;  
      GE_OP;  
      LEFT_SHIFT;  
      RIGHT_SHIFT;  
      SIZEOF;  
      TYPEDEF;  
      EXTERN;  
      STATIC;  
      AUTO;  
      REGISTER;  
      CONST;  
      VOLATILE;  
      VOID;  
      INLINE;  
      CHAR;  
      SHORT;  
      INT;  
      LONG;  
      SIGNED;  
      UNSIGNED;  
      FLOAT;  
      DOUBLE;  
      BOOL;  
      STRUCT;  
      UNION;  
      ENUM;  
      CASE;  
      DEFAULT;  
      IF;  
      ELSE;  
      SWITCH;  
      WHILE;  
      DO;  
      FOR;  
      GOTO;  
      CONTINUE;  
      BREAK;  
      RETURN;  
      ASM;  
   }  

Typedef yytype_uint8

typedef unsigned char yytype_uint8


Typedef yytype_int8

typedef signed char yytype_int8


Typedef yytype_uint16

typedef unsigned short int yytype_uint16


Typedef yytype_int16

typedef short int yytype_int16


Type union yyalloc


union yyalloc
union yyalloc  
   {  
      yytype_int16 yyss_alloc;  
      yystype yyvs_alloc;  
   }  

Global Variable yydebug

int yydebug

Visible in:   cxref.c
    func.c
    parse-lex.c
    parse-yacc.c
    parse-yy.h
    preproc.c
    type.c
    var.c
Used in: DocumentTheFile() cxref.c
  yydestruct() parse-yacc.c
  yyparse() parse-yacc.c

Global Variable yylval

yystype yylval

Visible in:   cxref.c
    func.c
    parse-lex.c
    parse-yacc.c
    parse-yacc.h
    parse-yy.h
    preproc.c
    type.c
    var.c
Used in: cxref_yylex() parse-yacc.c
  yyerror() parse-yacc.c
  yylex() parse-lex.c
  yyparse() parse-yacc.c

Global Variable in_typedef

A flag that is set to true when typedef is seen in a statement.

int in_typedef

Visible in:   parse-yacc.c
    type.c
Used in: ResetParser() parse-yacc.c
  SeenStructUnionEnd() type.c
  SeenStructUnionStart() type.c
  yyparse() parse-yacc.c

Global Variable yychar

int yychar

Visible in:   parse-yacc.c
Used in: yyerror() parse-yacc.c
  yyparse() parse-yacc.c

Global Variable yynerrs

int yynerrs

Visible in:   parse-yacc.c
Used in: yyparse() parse-yacc.c

External Variables

in_header

When in a header file, some stuff can be skipped over quickly.

extern int in_header

Defined in: preproc.c

Local Variables

scope

The scope of the function / variable that is being examined.

static int scope

Used in: ResetParser()  
  yyparse()  

in_function

When in a function or a function definition, the behaviour is different.

static int in_function

Used in: ResetParser()  
  yyparse()  

in_funcdef

When in a function or a function definition, the behaviour is different.

static int in_funcdef

Used in: ResetParser()  
  yyparse()  

in_funcbody

When in a function or a function definition, the behaviour is different.

static int in_funcbody

Used in: ResetParser()  
  yyparse()  

first

The parsing stack first value.

static stack first

Used in:   parse-yacc.c
  ResetParser()  
  push()  

list

The parsing stack list of all values.

static stack* list

Used in: ResetParser()  
  pop()  
  push()  

current

The parsing stack current values.

static stack* current

Used in: ResetParser()  
  pop()  
  push()  
  reset()  
  yyparse()  

depth

The depth of the stack currently in use.

static int depth

Used in: ResetParser()  
  pop()  
  push()  

maxdepth

The depth of the stack total malloced.

static int maxdepth

Used in: ResetParser()  
  push()  

common_comment

Declarations that are in the same statement share this comment.

static char* common_comment

Used in: ResetParser()  
  yyparse()  

in_structunion

When inside a struct / union / enum definition, this is the depth.

static int in_structunion

Used in: ResetParser()  
  cxref_yylex()  
  yyparse()  

comp_type

When inside a struct / union definition, this is the component type.

static char* comp_type

Used in: ResetParser()  
  yyparse()  

in_type_spec

To solve the problem where a type name is used as an identifier.

static int in_type_spec

Used in: ResetParser()  
  cxref_yylex()  
  yyparse()  

yytranslate

static const yytype_uint8 yytranslate[]

Used in: yyerror()  
  yyparse()  

yyrline

static const yytype_uint16 yyrline[]

Used in: yy_reduce_print()  

yytname

static const char* const yytname[]

Used in: yy_symbol_print()  
  yyerror()  
  yysyntax_error()  

yytoknum

static const yytype_uint16 yytoknum[]

yypact

static const yytype_int16 yypact[]

Used in: yyparse()  
  yysyntax_error()  

yydefact

static const yytype_uint16 yydefact[]

Used in: yyparse()  

yypgoto

static const yytype_int16 yypgoto[]

Used in: yyparse()  

yydefgoto

static const yytype_int16 yydefgoto[]

Used in: yyparse()  

yytable

static const yytype_int16 yytable[]

Used in: yyparse()  

yycheck

static const yytype_int16 yycheck[]

Used in: yyparse()  
  yysyntax_error()  

yystos

static const yytype_uint16 yystos[]

Used in: yy_reduce_print()  
  yyparse()  

yyr1

static const yytype_uint16 yyr1[]

Used in: yyparse()  

yyr2

static const yytype_uint8 yyr2[]

Used in: yy_reduce_print()  
  yyparse()  

last_yylex

static int last_yylex[11]

Used in: cxref_yylex()  
  yyerror()  

last_yylval

static char* last_yylval[11]

Used in: cxref_yylex()  
  yyerror()  

count

static int count

Used in: cxref_yylex()  
  yyerror()  

modcount

static int modcount

Used in: cxref_yylex()  
  yyerror()  

Global Function ResetParser()

Reset the Parser, ready for the next file.

void ResetParser ( void )

Prototyped in: cxref.h
Calls: SafeFree() memory.c
  reset() parse-yacc.c
Called by: main() cxref.c
References Variables: common_comment parse-yacc.c
  comp_type parse-yacc.c
  current parse-yacc.c
  depth parse-yacc.c
  first parse-yacc.c
  in_funcbody parse-yacc.c
  in_funcdef parse-yacc.c
  in_function parse-yacc.c
  in_structunion parse-yacc.c
  in_type_spec parse-yacc.c
  in_typedef parse-yacc.c
  list parse-yacc.c
  maxdepth parse-yacc.c
  scope parse-yacc.c

Global Function yyparse()

int yyparse ( void )

Prototyped in: parse-yy.h
Calls: CheckFunctionVariableRef() func.c
  ConcatStrings() memory.c
  CopyString() memory.c
  DownScope() var.c
  GetCurrentComment() comment.c
  IsAScopeVariable() var.c
  IsATypeName() type.c
  SeenFunctionArg() func.c
  SeenFunctionCall() func.c
  SeenFunctionDeclaration() func.c
  SeenFunctionDefinition() func.c
  SeenFunctionProto() func.c
  SeenScopeVariable() var.c
  SeenStructUnionComp() type.c
  SeenStructUnionEnd() type.c
  SeenStructUnionStart() type.c
  SeenTypedef() type.c
  SeenTypedefName() type.c
  SeenVariableDefinition() var.c
  SetCurrentComment() comment.c
  UpScope() var.c
  cxref_yylex() parse-yacc.c
  pop() parse-yacc.c
  push() parse-yacc.c
  reset() parse-yacc.c
  yy_reduce_print() parse-yacc.c
  yy_stack_print() parse-yacc.c
  yy_symbol_print() parse-yacc.c
  yydestruct() parse-yacc.c
  yyerror() parse-yacc.c
  yysyntax_error() parse-yacc.c
  __builtin_memcpy(), fprintf(), free(), malloc(), strcmp(), strlen(), strstr()
Called by: DocumentTheFile() cxref.c
References Variables: common_comment parse-yacc.c
  comp_type parse-yacc.c
  current parse-yacc.c
  in_funcbody parse-yacc.c
  in_funcdef parse-yacc.c
  in_function parse-yacc.c
  in_header preproc.c
  in_structunion parse-yacc.c
  in_type_spec parse-yacc.c
  in_typedef parse-yacc.c
  scope parse-yacc.c
  yychar parse-yacc.c
  yycheck parse-yacc.c
  yydebug parse-yacc.c
  yydefact parse-yacc.c
  yydefgoto parse-yacc.c
  yylval parse-yacc.c
  yynerrs parse-yacc.c
  yypact parse-yacc.c
  yypgoto parse-yacc.c
  yyr1 parse-yacc.c
  yyr2 parse-yacc.c
  yystos parse-yacc.c
  yytable parse-yacc.c
  yytranslate parse-yacc.c

Local Function cxref_yylex()

Call the lexer, the feedback from the parser to the lexer is applied here.

static int cxref_yylex ( void )

int cxref_yylex
Returns the value from the lexer, modified due to parser feedback.

Prototyped in: parse-yacc.c
Calls: yylex() parse-lex.c
Called by: yyerror() parse-yacc.c
  yyparse() parse-yacc.c
References Variables: count parse-yacc.c
  in_structunion parse-yacc.c
  in_type_spec parse-yacc.c
  last_yylex parse-yacc.c
  last_yylval parse-yacc.c
  modcount parse-yacc.c
  yylval parse-yacc.c

Local Function pop()

Pop a level from the stack.

static void pop ( void )

Calls: reset() parse-yacc.c
Called by: yyparse() parse-yacc.c
References Variables: current parse-yacc.c
  depth parse-yacc.c
  list parse-yacc.c

Local Function push()

Push a level onto the stack.

static void push ( void )

Calls: SafeMalloc() memory.c
  SafeRealloc() memory.c
  reset() parse-yacc.c
Called by: yyparse() parse-yacc.c
References Variables: current parse-yacc.c
  depth parse-yacc.c
  first parse-yacc.c
  list parse-yacc.c
  maxdepth parse-yacc.c

Local Function reset()

Reset the current level on the stack.

static void reset ( void )

Called by: ResetParser() parse-yacc.c
  pop() parse-yacc.c
  push() parse-yacc.c
  yyparse() parse-yacc.c
References Variables: current parse-yacc.c

Local Function yy_reduce_print()

static void yy_reduce_print ( yytype_int16* yyssp, yystype* yyvsp, int yyrule )

Calls: yy_symbol_print() parse-yacc.c
  fprintf()
Called by: yyparse() parse-yacc.c
References Variables: yyr2 parse-yacc.c
  yyrline parse-yacc.c
  yystos parse-yacc.c

Local Function yy_stack_print()

static void yy_stack_print ( yytype_int16* yybottom, yytype_int16* yytop )

Calls: fprintf()
Called by: yyparse() parse-yacc.c

Local Function yy_symbol_print()

static void yy_symbol_print ( FILE* yyoutput, int yytype, yystype const* const yyvaluep )

Calls: yy_symbol_value_print() parse-yacc.c
  fprintf()
Called by: yy_reduce_print() parse-yacc.c
  yydestruct() parse-yacc.c
  yyparse() parse-yacc.c
References Variables: yytname parse-yacc.c

Local Function yy_symbol_value_print()

static void yy_symbol_value_print ( FILE* yyoutput, int yytype, yystype const* const yyvaluep )

Calls: printf()
Called by: yy_symbol_print() parse-yacc.c

Local Function yydestruct()

static void yydestruct ( const char* yymsg, int yytype, yystype* yyvaluep )

Calls: yy_symbol_print() parse-yacc.c
  fprintf()
Called by: yyparse() parse-yacc.c
References Variables: yydebug parse-yacc.c

Local Function yyerror()

Stop parsing the current file, due to an error.

static void yyerror ( const char* s )

char *s The error message to print out.

Prototyped in: parse-yacc.c
Calls: cxref_yylex() parse-yacc.c
  yylex() parse-lex.c
  fflush(), fprintf()
Called by: yyparse() parse-yacc.c
References Variables: count parse-yacc.c
  last_yylex parse-yacc.c
  last_yylval parse-yacc.c
  modcount parse-yacc.c
  parse_file parse-lex.c
  parse_line parse-lex.c
  yychar parse-yacc.c
  yylval parse-yacc.c
  yytname parse-yacc.c
  yytranslate parse-yacc.c

Local Function yystpcpy()

static char* yystpcpy ( char* yydest, const char* yysrc )

Called by: yytnamerr() parse-yacc.c

Local Function yysyntax_error()

static int yysyntax_error ( long unsigned int* yymsg_alloc, char** yymsg, yytype_int16* yyssp, int yytoken )

Calls: yytnamerr() parse-yacc.c
  strlen()
Called by: yyparse() parse-yacc.c
References Variables: yycheck parse-yacc.c
  yypact parse-yacc.c
  yytname parse-yacc.c

Local Function yytnamerr()

static long unsigned int yytnamerr ( char* yyres, const char* yystr )

Calls: yystpcpy() parse-yacc.c
  strlen()
Called by: yysyntax_error() parse-yacc.c