[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