SYNOPSIS

Compile it with

eyapp -b '' Cplusplus

Run it with:

./Cplusplus.pm -t -nos -i

or

./Cplusplus.pm -t -i -c 'int (x) + 2;'

try with inputs:

int (x) = 2;
int (x) + 2;

the output will be a description of the generated abstract syntax tree

C++ Ambiguities

This grammar models a problematic part of the C++ grammar the ambiguity between certain declarations and statements. For example,

int (x) = y+z;

parses as either an expr or a stmt.

Eyapp detects this as a reduce/reduce conflict:

  State 17 contains 1 reduce/reduce conflict

  State 17:

	expr -> ID .	(Rule 5)
	declarator -> ID .	(Rule 11)

	')'	[reduce using rule 11 (declarator)]
	$default	reduce using rule 5 (expr)

The C++ disambiguation rule is: take it as a declaration if it looks as a declaration, otherwise is an expression.

This Eyapp parser solves the problem by dynamically changing the parser.

SEE ALSO