WA_Width: { $80000066 }
WA_Height: { $80000067 }
WA_Title: { $8000006E }
WA_DragBar: { $80000082 }
WA_DepthGadget: { $80000083 }
WA_CloseGadget: { $80000084 }
WA_IDCMP: { $8000006A }
IDCMP_CLOSEWINDOW: { $00000200 }
UserPort: { 86 }
WinLoop: { UserPort + * : WaitPort \ { : GetMsg : ? { : ReplyMsg } { } } <@ \ }
main: { 0 [
WA_Width 400
WA_Height :2
WA_Title "Bzted Window"
WA_CloseGadget 1
WA_DragBar 1
WA_DepthGadget 1
WA_IDCMP IDCMP_CLOSEWINDOW
0 ]
OpenWindowTags : ?
{ : WinLoop CloseWindow 0 }
{ \ "Failed to open window.\n" PutStr \ 10 }
}@Krashan, post #1
@Sventevith, post #2
Swoją drogą nie rozumiem czenu Arexx nie ma dostępu do całego APi systemu.Myślę, że dlatego, że jest językiem "importowanym" na Amigę i jego autorzy w ogóle o czymś takim nie myśleli. W tamtych czasach takie bogate API systemowe było czymś nowym, porównaj to sobie z "API" MS-DOS-a chociażby. A nawet z ówczesnym Unixem.
@MDW, post #3
Akurat zastanawiałem się jakiś czas temu jak wygląda parser składni języków programowania. To musi być bardzo sprytnie i uniwersalnie zaprojektowaneCzy ja wiem? Najpierw jest to cięte na tokeny, które w Bztedzie są rozdzielane dowolnymi sekwencjami białych spacji. W tym też etapie pozbywam się komentarzy z kodu, oraz wyodrębniam łańcuchy tekstowe. Po tym przejściu z pliku źródłowego mam listę dwukierunkową z tokenami. Drugie przejście identyfikuje literały liczbowe i zamienia je na liczby, oprócz tego "zrzuca" cudzysłowy ze stringów (tu też powinna się znaleźć obsługa sekwencji typu "\n"). Potem pozostałe tokeny są dzielone między syscalle, operatory wbudowane i operatory zdefiniowane w kodzie (czyli funkcje). Proste przeszukiwanie list. Kolejny etap to już translacja operatorów na kod wirtualnego procesora...
@Krashan, post #1
Na koniec, dla osiągnięcia efektu OMG (...)
WA_Height :2
UserPort + *
WinLoop: { }: WinLoop ...
@vojo, post #7
@MDW, post #3