Open Source – Odwrotna Notacja Polska

Open Source – Odwrotna Notacja Polska
Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Hej.
Zapraszam wszystkich do skorzystania z gotowej biblioteki RPN:

https://github.com/bartlomiej-gora/RPNLibrary

Kopiuj
        <dependency>
            <groupId>com.github.bartlomiej-gora</groupId>
            <artifactId>RPNLibrary</artifactId>
            <version>3.2.2</version>
        </dependency>

Pozdrawiam.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
0

A co on w zasadzie robi ten kalkulator? Ewaluuje wyrażenia w notacji postfixowej?

Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Liczy z notacji infiksowej (faktycznie zapomniałem dodać przykładu na stronie :) ), np:

Kopiuj
        AdvancedCalculatorFactory advancedCalculatorFactory = new AdvancedCalculatorFactory();
        calc = advancedCalculatorFactory.createCalulator();
        BigDecimal result = calc.calculate("2^3*(12/6)+18/3+5.0/2");
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Nie uważasz, że ONP w takim przypadku jest podejściem na około? Tworzenie parsera "z prawdziwego zdarzenia" jest znacznie ciekawszą zabawą :-)

Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Uważam że ONP jest optymalnym rozwiązaniem.

Co masz na myśli pisząc "Parsera z prawdziwego zdarzenia"?
Podaj przykład, proszę :)

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
0

Ten algorytm (przejście do notacji postfixowej i ewaluacja) jest optymalny, bo jak się ustawi kolejność działań, to nie trzeba w pełni nawiasować wyrażenia.

Patryk27 napisał(a):

Nie uważasz, że ONP w takim przypadku jest podejściem na około? Tworzenie parsera "z prawdziwego zdarzenia" jest znacznie ciekawszą zabawą :-)

Zgodnie z defincją parsera, to parser jest właśnie częścią kalkulatora.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Zgodnie z defincją parsera, to parser jest właśnie częścią kalkulatora.

Tak, zgadza się - miałem jednak na myśli coś wykorzystującego np. Yacc lub działającego przynajmniej bez tworzenia wyrażenia przejściowego.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.