/*Wersja programu: 2006-12m-31d;  Autor: Artur Czekalski  ARTUR@epokaY.net  www.epokaY.net/artur/
 Przykład użycia klasy ObliczanieWyrazenia z biblioteki satorparserv.dll (w wer.2006-12m-31d) w aplikacji konsolowej.
*/
//---------------------------------------------------------------------------
#include <stdio.h> //printf
#include "satorparserv_use.h" //deklaracja klasy ObliczanieWyrazenia; Do projektu należy dodać plik: satorparserv.lib !
//---------------------------------------------------------------------------
void main(void)
{
 typliczb gX = 10.0,  gY = 3.0; //globalne rzeczywiste zmienne
 const typliczb *Adresyzmiennych[2] = {&gX, &gY}; //ta tablica nie może być niszczona przy obliczaniu wartości!
 const char *Nazwyzmiennych[2] = {"x","y"}; //nazwy zmiennych, których można uzywać w wyrażeniu

 //---Utworzenie obiektu; sposób nr1 - utworzenie obiektu i od razu parsowanie
 ObliczanieWyrazenia Wyr(2,Nazwyzmiennych,Adresyzmiennych, "x/y-3,0+1.0"
  ,true); //czy optymalizować wyrażenie przy parsowaniu: obliczanie stałych wyrażeń; używamy false gdy brak zmiennych

 //ObliczanieWyrazenia Wyr;  Wyr.Parsuj(2,Nazwyzmiennych,Adresyzmiennych,"x/y-3,0+1.0",true); //sposób nr2
 //ObliczanieWyrazenia Wyr(0,0,0,"1+sqrt(9)",false); //gdy nie używamy zmiennych (tu sposób nr1)

 printf("Wyrazenie: %s\n", Wyr.LWyrazenie);
 printf("Liczba atomow od lewej w poprawnej gramatycznie czesci wyrazenia: %d\n", Wyr.DlGram);

 if (Wyr.OpisBledu) //sprawdzamy czy jest błąd w samym ZAPISIE wyrażenia; lub przy obliczaniu stałych wyrażeń, np. x+2/0
  {printf("Wyrazenie jest niepoprawne: %s\n", Wyr.OpisBledu); //opis
   if (Wyr.GSB) printf("Blad zaczyna sie od: %s\n", Wyr.GSB); //Gdzie Syntaktyzny Błąd wystąpił
   getchar(); return;
  }

 //Wyrażenie jest poprawne, więc możemy je obliczać
 //----------Obliczenie wartości - pojedyńczo-----------
 printf("\n########12345678901234567890\n");
 printf(  "Wartosc=%.20f\n", Wyr.WartoscWyrazenia());
 if (Wyr.OpisBledu) //sprawdzamy czy był błąd w OBLICZANIU wyr. (np. dzielenie przez zero)
  printf("%s\n", Wyr.OpisBledu); 

 printf("\nKONIEC!"); getchar();
}