eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Mały parser własnych funkcji
Ilość wypowiedzi w tym wątku: 4

  • 1. Data: 2012-04-30 11:46:29
    Temat: Mały parser własnych funkcji
    Od: m...@o...pl

    Witam, potrzebuje stworzyć parser do własnego prostego języka skryptowego w
    aplikacji.

    Wyrażenia wyglądały by ~tak:

    <code>

    format("Kąt wynosi: {0}", cos(@0) + 0.5) + other_numeric_result_function()

    </code>

    Czyli była by to linia wyrażenia, gdzie występowały by nazwy funkcji, ich parametry
    oraz operatory matematyczne. @0, @1... były by to parametry funkcji.

    Taki jest zamysł na potrzebną funkcjonalność. Ale koniecznym wśród wymagań jest
    potrzeba skompilowania(?) tego tak by można było tylko podstawiać parametry i
    wykonywać kod otrzymując wynik - wyrażenie będzie po prostu wykonywane dla bardzo
    dużej ilość danych i nie wyobrażam sobie żeby pod parametry podstawiać za każdym
    razem wartość i parsować całe wyrażenie na nowo.

    I pytanie, bo zanim zacznę wynajdywać koło na nowo, czy jest już coś od czego mógłbym
    zacząć? Docelowo rozwiązanie jest tworzone na środowisko .NET.

    --
    Mateusz Bogusz


  • 2. Data: 2012-04-30 12:40:17
    Temat: Re: Mały parser własnych funkcji
    Od: Łukasz 'Maly' Ostrowski <m...@U...pl>

    On Mon, 30 Apr 2012 02:46:29 -0700 (PDT), m...@o...pl wrote:
    > <snip>
    > Taki jest zamysł na potrzebną funkcjonalność. Ale koniecznym wśród wymagań
    > jest potrzeba skompilowania(?) tego tak by można było tylko podstawiać
    > parametry i wykonywać kod otrzymując wynik - wyrażenie będzie po prostu
    > wykonywane dla bardzo dużej ilość danych i nie wyobrażam sobie żeby pod
    > parametry podstawiać za każdym razem wartość i parsować całe wyrażenie
    > na nowo.
    >
    > I pytanie, bo zanim zacznę wynajdywać koło na nowo, czy jest już coś
    > od czego mógłbym zacząć? Docelowo rozwiązanie jest tworzone na środowisko .NET.

    Generalnie, powinieneś się zainteresować:
    1. CSharpCodeProvider -
    http://msdn.microsoft.com/en-us/library/microsoft.cs
    harp.csharpcodeprovider.aspx
    http://support.microsoft.com/kb/304655
    3.
    http://www.codeproject.com/Articles/3289/Dynamic-Cod
    e-Generation-and-Code-Compilation
    4. I całą masę przykładów/tutoriali do CodeDOM dostępną via google.

    W skrócie, generujesz sobie string z poprawnym kodem C#owym(*) i
    kompilujesz go w locie, a następnie via refleksja lub interfejsy
    wywołujesz te dynamicznie skompilowane metody.

    *) Czyli wymuszasz składnię C# w swoich wyrażeniach, albo przerabiasz
    "swój customowy język" na C# jakimś prostym zestawem Regexów w stylu:
    Zastąp łańcuch "format" łańcuchem "string.Format", zamiast "cos" "Math.Cos"
    etc.

    --
    Pozdrawiam,
    Łukasz 'Maly' Ostrowski. http://l3v.pl/


  • 3. Data: 2012-04-30 12:49:09
    Temat: Re: Mały parser własnych funkcji
    Od: Paweł Kierski <n...@p...net>

    W dniu 2012-04-30 11:46, m...@o...pl pisze:
    > Witam, potrzebuje stworzyć parser do własnego prostego języka skryptowego w
    aplikacji.
    >
    > Wyrażenia wyglądały by ~tak:
    >
    > <code>
    >
    > format("Kąt wynosi: {0}", cos(@0) + 0.5) + other_numeric_result_function()
    >
    > </code>
    >
    > Czyli była by to linia wyrażenia, gdzie występowały by nazwy funkcji, ich parametry
    oraz operatory matematyczne. @0, @1... były by to parametry funkcji.
    >
    > Taki jest zamysł na potrzebną funkcjonalność. Ale koniecznym wśród wymagań jest
    potrzeba skompilowania(?) tego tak by można było tylko podstawiać parametry i
    wykonywać kod otrzymując wynik - wyrażenie będzie po prostu wykonywane dla bardzo
    dużej ilość danych i nie wyobrażam sobie żeby pod parametry podstawiać za każdym
    razem wartość i parsować całe wyrażenie na nowo.
    >
    > I pytanie, bo zanim zacznę wynajdywać koło na nowo, czy jest już coś od czego
    mógłbym zacząć? Docelowo rozwiązanie jest tworzone na środowisko .NET.
    >

    W .NET możesz wykorzystać dynamicznie ładowane assemblies:
    http://www.codeproject.com/Articles/8832/Plug-in-Man
    ager

    --
    Paweł Kierski
    n...@p...net


  • 4. Data: 2012-05-06 01:56:45
    Temat: Re: Mały parser własnych funkcji
    Od: Karol Y <k...@o...pl>

    Google + Flee | nCalc | CalcEngine

    Będą idealnie pasowały.

    --
    Karol Y

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: