🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #268082

Re: Ciemna strona C++

#268082
From: Adam Karpierz
Date: Fri, 14 Dec 2007 00:49
63 lines
4274 bytes
"Marcin 'Qrczak' Kowalczyk" <qrczak@knm.org.pl> wrote in message 
news:1197591962.23942.28.camel@qrnik...
Dnia 13-12-2007, Cz o godzinie 23:56 +0100, Adam Karpierz pisze:

> Kontekstowość typedefów wymusza albo informację zwrotną od
> analizy semantycznej do leksera (na bieżąco),

Zgadza sie:
I tak sie to zazwyczaj robi.
Wiadomo dlaczego (bledy na biezaco).
Jako "nosnik" starczy zwykly stos /w scope pamieta sie tylko
gdzie wrocic a szuka sie przy jednoczesnej redukcji
typedefow od konca/.

> albo parsowanie do jakiejś pokręconej struktury uwzględniającej
>  różne możliwości statusu typedefowego identyfikatorów,
> która potem będzie dopiero ujednoznaczniana (nie wiem,
> czy to w ogóle jest praktyczne, bo wszyscy robią tą pierwszą metodą,
> ale teoretycznie parser mógłby pozostawić coś niewiele różniącego
>  się od ciągu leksemów, więc jakiś wariant drugiego
>  rozwiązania jest teoretycznie możliwy).

Zgadza sie.  Tyle ze niekoniecznie do pokreconej struktury tylko
normalnie w drzewie jako node typedefa
(node typu: typedef z subnode1: nazwa i subnode2: "rozczesanym" typem).
Oczywiscie ze to gorsze z w/w powodow ale analize typedefow mozna
przeprowadzic dopiero po utworzeniu drzewa (podobnie mozna by zrobic
ze zmiennymi - np error gdy nieistnieje/neizadeklarowana).
Analiza na juz gotowym drzewie nie tylko wykrywala by bledy
semantyczne ale rowniez redukowala drzewo o typedefy wlasnie.

> W C++ to jest znacznie gorzej, bo identyfikatory nie muszą być globalne,
> tylko mogą pochodzić z szablonów, które trzeba ukonkretniać, więc praca
> spleciona z lekserem jest znacznie szersza - obejmuje nawet wyliczanie
> stałych wyrażeń (typów całkowitych). Oprócz statusu typedefowego do
> parsowania potrzebny jest też status bycia szablonem. Ale w C praktyczna
> konieczność splecenia ze sobą faz, które zazwyczaj są osobne, już się
> objawia.

No i _dokladnie_ z w/w powodow dalem sobie spokoj.
Po prostu (juz szczegolow nie pamietam - bawilem sie tym chyba juz chyba
2 lata z hakiem temu) w semantyce np. typologii C++ robi sie dzungla.
Co mi z parsera jesli nad poparsingowa nawet semantyka i redukcjami drzewa
musialbym siedziec reszte zycia - _nie_ chce umrzec znajac raport C++
na pamiec :)

> Kontekstowość else jest trywialnie rozwiązywalna przez modyfikację
> gramatyki (zdublowanie niektórych symboli w wersji dopuszczającej
> kończenie się na if bez else bądź nie),

Dokladnie !

> choć prościej może być pozostawić niejednoznaczność,
> jeśli wiemy, jak będzie rozwiązana.

Tez swieta prawda :)


PS: Nie wiem czy wiesz ale pomiedzy ostatnim ogolnioe dostepnym
       draftem standardu,  a oficjanym standardem C++ istnieja...
       roznice w gramatyce C++.  W szablonach wlasnie.

AK
Technical Details
Message-ID: <fjsjva$6ba$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgv318$hl7$1@bozon2.softax.pl> <fgv82j$htn$1@news.vectranet.pl> <fjncjm$ov6$1@inews.gazeta.pl> <fjpc4l$6ei$2@news.vectranet.pl> <fjrerb$8su$1@bozon2.softax.pl> <fjri46$h22$1@inews.gazeta.pl> <1197561477.3981.11.camel@qrnik> <fjs9m7$qi$2@news.vectranet.pl> <fjsdb1$eeg$1@inews.gazeta.pl> <1197591962.23942.28.camel@qrnik>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Adam Karpierz" <karpierz@NOOOOSPAAAAMpython.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Fri, 14 Dec 2007 01:49:45 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 65
Message-ID: <fjsjva$6ba$1@inews.gazeta.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgv318$hl7$1@bozon2.softax.pl> <fgv82j$htn$1@news.vectranet.pl> <fjncjm$ov6$1@inews.gazeta.pl> <fjpc4l$6ei$2@news.vectranet.pl> <fjrerb$8su$1@bozon2.softax.pl> <fjri46$h22$1@inews.gazeta.pl> <1197561477.3981.11.camel@qrnik> <fjs9m7$qi$2@news.vectranet.pl> <fjsdb1$eeg$1@inews.gazeta.pl> <1197591962.23942.28.camel@qrnik>
NNTP-Posting-Host: nat-dem.mentorg.com
X-Trace: inews.gazeta.pl 1197593386 6506 139.181.124.2 (14 Dec 2007 00:49:46 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Fri, 14 Dec 2007 00:49:46 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198
X-Priority: 3
X-RFC2646: Format=Flowed; Original
X-Newsreader: Microsoft Outlook Express 6.00.2900.3138
X-User: karpierz
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit