%{
#define YYDEBUG 1

#include <iostream>
using namespace std;

void yyerror(char* s)
{
	cerr<<s<<endl;
}

extern int yylex();

%}

%left IMPL
%left DISJ
%left KONJ
%nonassoc NEG

%token VAR FORMULA VAL ID ASSIGN KONJ DISJ IMPL NEG
%%

program : program prompt linija '\n'
	| prompt
	;

linija : 
		VAR niz_varijabli 
	|	FORMULA niz_formula
	|	VAL ID
	;

prompt : /* eps */	{cout<<">> ";}	
	;

niz_varijabli : niz_varijabli ',' varijabla
	| varijabla
	;
	
varijabla :
	ID ASSIGN ID		
	{}
	;

niz_formula : niz_formula ',' formula
	| formula
	;

formula : ID ASSIGN izraz
	;

izraz : 
		ID
	{}
	|	'(' izraz ')'
	{}
	|	izraz KONJ izraz
	{}
	|	izraz DISJ izraz
	{}
	|	izraz IMPL izraz
	{}
	|	NEG izraz
	{}
	;
		

%% 
main()  
{
	yydebug = 1;
	yyparse();
}
