[nem-pl] rewrite komplikatora...

Michal Moskal malekith at pld-linux.org
Sat Nov 1 23:17:08 CET 2003


On Sat, Nov 01, 2003 at 10:19:32PM +0100, Lukasz Kaiser wrote:
> Natomiast jak juz tak przepisujesz, to ja mam takie pytanie/propozycje.
> Chodzi o rozszerzenia skladniowe, ale tylko o parsing, pytanie natomiast
> jest takie gdzie w tym lezy glowna trudnosc i jak to jest trudne, bo jesli
> chodzi o parser.jay to ja sie w ogole nie orientuje.

Nie ma głównej trudności. Po prostu trzeba dopisać odpowiednie reguły.
I nie spowodować konflików s/r.

> Propozycja jest taka, zeby zmienic gramatyke w taki sposob, zeby mozna
> bylo we wzorcach pisac nie tylko to co jest, ale tez
> [<[typ]: kod >], tzn. do jakiejs reguly (jakiejs, bo nie znam aktualnej
> wersji) pattern := .... doszloby
> 
> pattern := .... | [<expr: branchedExpr >] | [<ty: branchedTy >] ...

Uhm. Nie jestem pewien co do składni. Potrzebne są:

  - type
  - expr
  - pattern

I to chyba tyle. Najczęściej będzie chyba używane expr, wiec można się
umówić, że [< ... >] bez typu to expr.

> (niestety chyba wyliczone wszystkie po kolei, chyba ze masz jakies
> wsparcie dla dynamicznego parsowania).

Oczywiście nie mam...

> Jesli chodzi o branchedX to reguly bylyby identyczne jak w zwyklej
> gramatyce, tylko dodatkowo doszloby wyrazenie $(expr: Expr) (lub tez
> jakies inne) dajace mozliwosc wklejania zwyklych wyrazen Nemerle.

W normalnych wyrażeniach można spokojnie dodać $( ... ) i odwalać to
potem, jeśli jest w normalnym wyrażeniu, a nie w [<>]. Tutaj powinno
wystarczyć expr:, więc bez nieczego.

> Oczywiscie po sparsowaniu trzeba by bylo wszystko pozamieniac odpowiednio
> jeszcze przed sprawdzaniem typow, czyli pewnie zrobic jakas funkcje
> zamieniajaca parsedExtendedTree na parsedTree. Zamiana bylaby oczywiscie
> ideowo dosc prosta, zamieniajac wyrazenia w nawiasach na odpowiadajace im
> wzorce korzystajace z wewnetrznych typow, ale pewnie w koncu to wcale nie
> byloby az takie proste, na poczatek mozna zawsze zrobic dummy.

To jest proste, tylko sporo pisania.

Nie jestem jeszcze pewien co do krzaków. Ale może akurat takie są dobre
(dobre/złe zależy tu od tego czy już z czymś nie konfliktują).

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h




More information about the devel-pl mailing list