Toon posts:

[php] een or-die gebruiken bij een while?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Stel ik heb de volgende code:
code:
1
2
3
4
5
6
7
8
9
$gegevens = "SELECT * FROM logindb WHERE naam='$loginnaam'";
$result = mysql_query($gegevens) or die ("foutje bij query 2.");
while (list($id, $naam, $ww, $stat, $email) = mysql_fetch_row($result)) 
{
if ($ww == $loginww) 
 echo "je bent ingelogt"; 
else 
 echo "het wachtwoord is fout";
}

Dus bij $gegevens maakt hij een select van de Database waar de naam $loginnaam is. Maar stel dat deze naam niet bestaat en ik wil dit aangeven? Dus een melding geven als 'deze naam bestaat niet in de database'. Hoe doe ik dit dan?

Ik zelf dacht een or-die geven, maar ik zou niet weten waar... Weet iemand dit wel? Bedankt! 8-)

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
waarom zo moeilijk?
PHP:
1
<?if (!$loginnaam) {  echo "loginnaam bestaat niet";  exit;}?>

Verwijderd

Topicstarter
Op maandag 11 maart 2002 12:51 schreef MadMurdock het volgende:
waarom zo moeilijk?
PHP:
1
<?if (!$loginnaam) {  echo "loginnaam bestaat niet";  exit;}?>
Tnx. Zou jij mij de betekenis uit kunnen leggen van dat uitroeptekentje? Volgens mij is dat wel belangrijk namelijk... (zie je vaker)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:52

Pelle

🚴‍♂️

Zou ik heel anders aanpakken:
PHP:
1
<?$gegevens = "SELECT *             FROM   logindb             WHERE  naam = '$loginnaam' AND                    ww   = '$loginww' ";$result   = mysql_query($gegevens);if (mysql_num_rows($result) > 0) {    print "Je bent ingelogd";} else {    print "Je wachtwoord is fout eikel";}?>

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:52

Pelle

🚴‍♂️

Op maandag 11 maart 2002 12:53 schreef ivy het volgende:
Zou jij mij de betekenis uit kunnen leggen van dat uitroeptekentje? Volgens mij is dat wel belangrijk namelijk... (zie je vaker)
Euhm ja, dat is wel belangrijk :o
! is de logische NOT operator. Oftewel, dit:
code:
1
if (!$melp)

betekent 'Als $melp niet bestaat'.

Errrrug basic hoor :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Een while is sowieso niet nuttig, want zoals je weet is het redelijk handig als een loginnaam uniek is.

Eventueel kun je dan een LIMIT 0,1 aan de query toe kunnen voegen, maar als je db ok is is dat helemaal niet nuttig.

Dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$query = 
   "SELECT 
     id,
     naam,
     ww,
     stat,
     email
    FROM
     logindb
    WHERE
     naam='$loginnaam'";
$rID = mysql_query ( $query );
if ( mysql_num_rows ( $rID ) > 0 )
   readfile ( "userok.html" ); // ook een manier
else
   readfile ( "notloggedin.html" );

or die is van de orde van goto: :r!!!

Pelle:
great minds think alike :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 10-09 10:25

Tjark

DON'T PANIC

Pelle was me net voor met de mysql_num_rows (een nettere oplossing).

die != is een niet
1 == 1 (True, 1 is 1)
1 != 0 (True, 1 is niet 0)

*insert signature here


Verwijderd

Topicstarter
dank u allen! Een zeer nuttig topic achteraf, want ik heb weer aardig wat geleerd (ben ik mee bezig: leren..).

Vooral het stukje code van Pelle vondt ik interresant. Veel van geleerd. Met name het stukje van 'als er meer rijen dan 0 zijn doe dit en anders geef foutmelding'. Zeer puik!

Tnx again.

[edit]
Ik heb het nu toegepast, en het werkt echt goed!!!!

Hij checkt nu eerst of de gebruiker bestaat, zo niet dan geeft ie dat aan, zo wel dan checkt ie of het wachtwoord goed is wat er bij hoort!!!!

Als je net begint met programmeren en zoiets werkt, dan is het echt super vet! Maar goed, dat weten jullie misschien ook al wel.... ;)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:52

Pelle

🚴‍♂️

Op maandag 11 maart 2002 13:01 schreef ivy het volgende:
Als je net begint met programmeren en zoiets werkt, dan is het echt super vet! Maar goed, dat weten jullie misschien ook al wel.... ;)
Programmeren? Wasda? ;)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Sorry drm & pelle maar het is toch echt et slimste om een query in de trant van:
code:
1
2
3
4
5
6
SELECT
   count(Id)
FROM
   .....
WHERE
   .... = ....

te doen en dan iets als dit:
code:
1
2
3
4
5
6
$theResult = mysql_query($theQuery, $theLink);

if(mysql_result($theResult, 0, 0) == 1)
   ; // Welcome!
else
   ; // Error!

als ik moet uitleggen waarom dan hoor ik het wel >:)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
als ik moet uitleggen waarom dan hoor ik het wel >:)
Go right ahead. En kom alsjeblieft niet met performance aankakken ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Grum
  • Registratie: Juni 2001
  • Niet online
1/ Jullie kunnen multiple rows terug krijgen
2/ Jullie krijgen multiple fields terug
3/ mysql_fetch_* is slomer dan een mysql_result (met nummers) op 1 record

>:)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
1/ Jullie kunnen multiple rows terug krijgen
Ehhmmm nee, want zoals ik al zei moet je username een uniek veld zijn. Of je dat nou door PHP of door MySQL laat regelen is verder irrelevant
2/ Jullie krijgen multiple fields terug
Ja, whatever je verder nog met die gegevens wilt doen was niet de vraag. Hij heeft ze kennelijk nodig. (SELECT *)
3/ mysql_fetch_* is slomer dan een mysql_result (met nummers) op 1 record
leve de goeie MySQL class


>:) yourself :P

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

* Janoz vraagt zich trouwens af hoeveel procent van de mensen die de or die constructie gebruiken werkelijk weten dat dit werkt doordat php een op expressies gerichte taal is (En elke expressie zelf ook een waarde heeft) icm lazy evaluation.

Volgens mij zijn er legio mensen die denken dat mysql_*() or die($msg); gewoon een taal constructie is net als bijvoorbeeld if ($exp) {$statement;} else {$statement;}

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Janoz:
* Janoz vraagt zich trouwens af hoeveel procent van de mensen die de or die constructie gebruiken werkelijk weten dat dit werkt doordat php een op expressies gerichte taal is (En elke expressie zelf ook een waarde heeft) icm lazy evaluation.

Volgens mij zijn er legio mensen die denken dat mysql_*() or die($msg); gewoon een taal constructie is net als bijvoorbeeld if ($exp) {$statement;} else {$statement;}
* drm begrijpt niet zo goed wat <font color="#df040f">* Janoz hiermee wil zeggen :?</font>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 11 maart 2002 14:08 schreef drm het volgende:

[..]

* drm begrijpt niet zo goed wat <font color="#df040f">* Janoz hiermee wil zeggen :?</font>
* Janoz denkt dat drm dan wel tot de 2e groep zal behoren :P

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 11 maart 2002 13:59 schreef Janoz het volgende:
* Janoz vraagt zich trouwens af hoeveel procent van de mensen die de or die constructie gebruiken werkelijk weten dat dit werkt doordat php een op expressies gerichte taal is (En elke expressie zelf ook een waarde heeft) icm lazy evaluation.

Volgens mij zijn er legio mensen die denken dat mysql_*() or die($msg); gewoon een taal constructie is net als bijvoorbeeld if ($exp) {$statement;} else {$statement;}
Ik denk dat ik het begrijp ;)

imo is het als msyql_*() een NULL returned dat hij dan false is, en daardoor word de 2e expressie uitgevoerd.

Verwijderd

Wat hij bedoeld is dat functie() or die() een control structure is, net als if else, do while switch etc

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Op maandag 11 maart 2002 14:10 schreef daniel_hoenderdos het volgende:
Wat hij bedoeld is dat functie() or die() een control structure is, net als if else, do while switch etc
En dat bedoelde hij juist niet.

Verwijderd

Op maandag 11 maart 2002 14:21 schreef Soultaker het volgende:

[..]

En dat bedoelde hij juist niet.
Arg, te snel gelezen. You're right.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Janoz:
* Janoz denkt dat drm dan wel tot de 2e groep zal behoren :P
* drm wist dat het een taalconstructie was om dat <font color="#df040f">* drm de manual er nog wel eens op nageslagen heeft :D</font>

dus * drm weet nog steeds niet wat <font color="#df040f">* Janoz er nou mee wou zeggen :)</font>

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 11 maart 2002 14:31 schreef drm het volgende:

[..]

* drm wist dat het een taalconstructie was om dat <font color="#df040f">* drm de manual er nog wel eens op nageslagen heeft :D</font>

dus * drm weet nog steeds niet wat <font color="#df040f">* Janoz er nou mee wou zeggen :)</font>
* Nielsz wacht rustig af totdat * Janoz het uit gaat leggen :)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Hint: je zou ook kunnen schrijven:

(gekke_functie()||die('blaat'));

edit:
Die PHP highlighting maakt het er absoluut niet leesbaarder op.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Nielsz:
* Nielsz wacht rustig af totdat * Janoz het uit gaat leggen :)
en Nielsz heeft ook een bug in topix gevonden :+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op maandag 11 maart 2002 14:52 schreef drm het volgende:

[..]

en Nielsz heeft ook een bug in topix gevonden :+
* Nielsz dacht dat het aan * drm lag. Want je had je [.me] niet afgesloten, terwijl je er weer eentje in wilde zetten. Dat gaat niet goed :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Nielsz:
* Nielsz dacht dat het aan * drm lag. Want je had je [.me] niet afgesloten, terwijl je er weer eentje in wilde zetten. Dat gaat niet goed :)
[sub]
* drm gebruikte ook / me, en die kun je niet afsluiten :+[/sub]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 11 maart 2002 14:52 schreef drm het volgende:

[..]

en Nielsz heeft ook een bug in topix gevonden :+
* Janoz denkt dat dat gewoon door de html rechten van /me komt.

Maar aangezien er op mijn uitleg gewacht wordt...

$result=mysql_* or die($msg); is gewoon een ranzige afkorting van:
PHP:
1
<?$result=mysql_*();if (!$result) die($msg);?>

Het wordt echter zoveel voorgedaan (zelfs in de manual) dat veel mensen niet eens meer weten dat het een ranzige afkorting is.

Het gebruik is op zich niet heel erg. Wat ik ernstiger vind is dat vaak mensen niet weten dat dit een ranzige afkorting is. Die komen vervolgens in de problemen waneer ze een iets nettere afsluitmethode willen gebruiken.

Het toevoegen van " or die(mysql_error())" is goed in een dev omgeving, maar persoonlijk vind ik het erg smerig waneer dit nog steeds in het uiteindelijke produkt staat. Je hoort je gebruikers een fatsoenlijke foutmelding voor te schotelen (en daarnaast wordt er waarschijnlijk ook niet echt nette html gegenereerd).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Op maandag 11 maart 2002 15:29 schreef Janoz het volgende:
$result=mysql_* or die($msg); is gewoon een ranzige afkorting van:
PHP:
1
<?$result=mysql_*();if (!$result) die($msg);?>

Het wordt echter zoveel voorgedaan (zelfs in de manual) dat veel mensen niet eens meer weten dat het een ranzige afkorting is.
Dat is grote onzin. Nu suggereer je dat 'or' een statement is dat een expressie met een statement combineert, terwijl het juist een expressie is die een of beide expressies evalueert. In jou code is het net alsof 'or' de eerste expressie evalueert en concludeert dat 'ie slechts een deel ervan (namelijk alleen '$result') in het if-statement moet controleren! Ik ben dan heel benieuwd hoe jij de 'afkorting' if($a or $b) denkt uit te schrijven.
Het toevoegen van " or die(mysql_error())" is goed in een dev omgeving, maar persoonlijk vind ik het erg smerig waneer dit nog steeds in het uiteindelijke produkt staat. Je hoort je gebruikers een fatsoenlijke foutmelding voor te schotelen (en daarnaast wordt er waarschijnlijk ook niet echt nette html gegenereerd).
Dat is onzin. Een 'die' statement biedt juist de mogelijkheid om een standaard-foutmelding te generen. Dat biedt grote voordelen: elke afzonderlijke programmeur hoeft niet opnieuw het wiel uit te vinden en de gebruiker ziet alle foutmeldingen in hetzelfde formaat (inclusief HTML) verschijnen. De 'fatsoenlijke foutmelding' is de verantwoordelijkheid van de programmeur, die tenslotte kan bepalen wat er door 'die' weergegeven wordt.

Tenslotte moet je onthouden dat een situatie waarin 'die' aangeroepen wordt normaliter niet voor kan komen. Het is onzin dat de website layout gehandhaafd zou moeten blijven als er een fatale fout optreedt. Fouten die WEL verwacht kunnen worden, zoals entries in de database die niet gevonden kunnen worden, moeten natuurlijk niet met 'die' afgehandeld worden. Daar is die functie dan ook niet voor bedoeld.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op maandag 11 maart 2002 15:29 schreef Janoz e.e.a. over or die-constructie:
Vandaar dat ik ook een onwijze hekel heb aan de or die-constructie. Niet om de or maar om de die.

imo is het namelijk altijd netter je code op een bepaalde manier in te delen, bijvoorbeeld:
• Data inlezen
• Data verwerken
• Outputten

Het feit dat je een fout tegenkomt bij het verwerken, wil nog niet zeggen dat je niets kunt outputten (namelijk, je kunt een nette, userfriendly errormessage outputten). Met die wordt het programma gewoon "lui"
"hmm, 't lukt niet, nou laat dan maar, dan pleur ik wel gewoon dood neer."
:r vies+ranzig


Met or daarentegen maak je gewoon de keuze voor een bepaalde syntax. Net als dat je bijvoorbeeld een hele hoop in ( a ? b : c ) constructies kunt plempen. Da's een keuze...


* drm dacht wederom aan het begrip "desugaring" waar mbravenboer ons nog wel eens e.e.a. over heeft uitgelegd.



edit: ook even een reactie op Soultaker
___________________________________________________________________________
Soultaker:
Dat is grote onzin. Nu suggereer je dat 'or' een statement is dat een expressie met een statement combineert, terwijl het juist een expressie is die een of beide expressies evalueert. In jou code is het net alsof 'or' de eerste expressie evalueert en concludeert dat 'ie slechts een deel ervan (namelijk alleen '$result') in het if-statement moet controleren! Ik ben dan heel benieuwd hoe jij de 'afkorting' if($a or $b) denkt uit te schrijven.
imo heeft Janoz stiekem toch gelijk hierin.
Het is namelijk gewoon gejat uit een dergelijke constructie die in Perl bestaat, en dat is echt en alleen maar syntactische suiker.
Tenslotte moet je onthouden dat een situatie waarin 'die' aangeroepen wordt normaliter niet voor kan komen. Het is onzin dat de website layout gehandhaafd zou moeten blijven als er een fatale fout optreedt.
In theorie wel, maar in de praktijk niet. Als jij een of andere ubersite hebt gemaakt waarbij er toevallig de MySQL server onderuit ligt, dan serveer je de mensen met een berichtje waarin staat "er zijn wat problemen met de database". Je opdrachtgever zal echt wel zeggen dat dat er netjes uit moet zien, en als je opdrachtgever dat niet zegt, vind ik dat de taak van de webdeveloper. Puur een kwestie van kwaliteit afleveren.
Fouten die WEL verwacht kunnen worden, zoals entries in de database die niet gevonden kunnen worden, moeten natuurlijk niet met 'die' afgehandeld worden. Daar is die functie dan ook niet voor bedoeld.
Tja, je kunt je afvragen of dat fouten genoemd kunnen worden, maar goed....

edit2: en ook nog eentje op daniel_hoenderdos
___________________________________________________________________________
daniel_hoenderdos:
Wat een gezwam over persoonlijke voorkeuren weer zeg.
echo "blaat"; exit(); is ook vies. Hoe wil je dan je errormessages outputten?
code:
1
2
3
4
5
6
7
8
9
result = doe_iets;
if ( result is een geldig result )
{
   doe result verwerken
}
else
{
   doe error verwerken
}
En een lui php-script? Wat een onzin. sleep() is een lui phpscript. :+
tja, just a feeling.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Wat een gezwam over persoonlijke voorkeuren weer zeg.
echo "blaat"; exit(); is ook vies. Hoe wil je dan je errormessages outputten?

En een lui php-script? Wat een onzin. sleep() is een lui phpscript. :+

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Ik vind zowel or als die in dit verband vies!

Lazy evalution is een optimalisatie van PHP die toevallig bij iedereen bekend is. Je werking van je script laten afhangen van zo'n optimalisatie is vies.

En verder is die volgens mij express zo genoemd zodat het duidelijk is dat je het echt in een als-het-echt-helemaal-mis-is-val-dan-maar-lekker-dood-situatie moet gebruiken. Andere fouten moet je proberen te voorzien, en bij MySQL is dat heel eenvoudig op te lossen door een eigen functie (of klasse) voor queries te schrijven.

edit: opbouwende kritiek voor drm
___________________________________________________________________________
Reageren in een post boven diegene waar je op reageert is irri, zeker in zo'n lange post :)

|_____vakje______|


Verwijderd

Juist!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op maandag 11 maart 2002 15:39 schreef Soultaker het volgende:

[..]

Dat is grote onzin. Nu suggereer je dat 'or' een statement is dat een expressie met een statement combineert, terwijl het juist een expressie is die een of beide expressies evalueert. In jou code is het net alsof 'or' de eerste expressie evalueert en concludeert dat 'ie slechts een deel ervan (namelijk alleen '$result') in het if-statement moet controleren! Ik ben dan heel benieuwd hoe jij de 'afkorting' if($a or $b) denkt uit te schrijven.
Je hebt wel gelijk als je zegt dat het syntactisch niet helemaal hetzelfde is.
PHP:
1
<?if (!$result=mysql_*()) die($msg);?>

Dit zal er al dichterbij zitten. (Bij de or wordt de eerste expressie geevalueerd om te kijken of de 2e expressie nog geevalueerd moet worden)

Bedenk wel dat ik in mijn voorbeeld code probeer de lazy evaluation van php te 'simuleren' in de code om aan te geven wat er gebeurt.

Ik zeg niet dat or een afkorting is van een if, echter de manier zoals het hier gebruikt wordt is het wel degelijk het geval.
Dat is onzin. Een 'die' statement biedt juist de mogelijkheid om een standaard-foutmelding te generen. Dat biedt grote voordelen: elke afzonderlijke programmeur hoeft niet opnieuw het wiel uit te vinden en de gebruiker ziet alle foutmeldingen in hetzelfde formaat (inclusief HTML) verschijnen. De 'fatsoenlijke foutmelding' is de verantwoordelijkheid van de programmeur, die tenslotte kan bepalen wat er door 'die' weergegeven wordt.

Tenslotte moet je onthouden dat een situatie waarin 'die' aangeroepen wordt normaliter niet voor kan komen. Het is onzin dat de website layout gehandhaafd zou moeten blijven als er een fatale fout optreedt. Fouten die WEL verwacht kunnen worden, zoals entries in de database die niet gevonden kunnen worden, moeten natuurlijk niet met 'die' afgehandeld worden. Daar is die functie dan ook niet voor bedoeld.
Het tweede stuk slaat trouwens vooral op het mysql_error gedeelte. Persoonlijk ben ik van mening dat je je fouten goed moet afvangen. Vergelijk het hier met tweakers. Waneer er een fout optreed krijg je gewoon een 'fout'-pagina, en niet een op de helft afgekapte niet aan de html-standaarden voldoenende pagina.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

* drm had al het vermoeden dat hij er hetzelfde over dacht als * Janoz

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Op maandag 11 maart 2002 15:45 schreef drm het volgende:
Het is namelijk gewoon gejat uit een dergelijke constructie die in Perl bestaat, en dat is echt en alleen maar syntactische suiker.
Wat is 'syntatische suiker' en waarom is 'or' anders dan '+' of '=='? Welke binaire operatie is dan geen 'syntactische suiker' of wat 't ook mag zijn?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Wat is 'syntatische suiker' en waarom is 'or' anders dan '+' of '=='? Welke binaire operatie is dan geen 'syntactische suiker' of wat 't ook mag zijn?
Syntactische suiker is toegevoegde syntax die een compiler kan terugbrengen tot eenduidige en elementaire expressies, die dus in een expressie boom terecht komen:
code:
1
2
3
if ( a == b )
   do() or die ()
else   doanotherthing ()

zal dus ongeveer zo'n boom worden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<if a==b>
   <true>
    <if do ()>
       <false>
        die ()
       </false>
    </if>
   </true>
   <false>
    doanotherthing ()
   </false>
</if>

poging tot visualiseren :D
snap je? Het is helemaal niet van belang wat de syntax is, het is alleen van belang waar de syntax voor staat.

ik hoop dat ik een beetje duidelijk ben :?

Wat dat betreft stikt het in Perl van dat soort constructies die alleen maar meer mogelijkheden in de syntax brengen, maar behalve dat niets toevoegen qua functionaliteit.
denk bijvoorbeeld aan unless. da's er ook zo een.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Op maandag 11 maart 2002 17:42 schreef drm het volgende:
Syntactische suiker is toegevoegde syntax die een compiler kan terugbrengen tot eenduidige en elementaire expressies, die dus in een expressie boom terecht komen:
(knip: voorbeeld)

Wat dat betreft stikt het in Perl van dat soort constructies die alleen maar meer mogelijkheden in de syntax brengen, maar behalve dat niets toevoegen qua functionaliteit. denk bijvoorbeeld aan unless. da's er ook zo een.
Aha, dat is duidelijk. Ik snap alleen niet waarom 'if' of 'or' wel elementair zouden zijn en 'unless' of '||' niet. Het zijn immers constructies/operators met een equivalente werking.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Das toch niet zo moeilijk? Opzich is er onderling geen verschil, maar het feit dat ze dubbel aanwezig zijn maakt het suiker (als in "overbodige zooi in je koffie").

Je kunt een minieme taal schrijven zonder unless en || als je maar if en or hebt.. zo ook andersom. If en or zijn echter gebruikelijk dus noemen we die elementair.

|_____vakje______|


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

CyberSnooP:
Das toch niet zo moeilijk? Opzich is er onderling geen verschil, maar het feit dat ze dubbel aanwezig zijn maakt het suiker (als in "overbodige zooi in je koffie").

Je kunt een minieme taal schrijven zonder unless en || als je maar if en or hebt.. zo ook andersom. If en or zijn
echter gebruikelijk dus noemen we die elementair.
Sterker nog: Het maakt helemaal geen hol uit welke je elementair noemt. Het is niet de syntax die elementair is maar de betekenis ervan.

Dus in een van de eerste fasen van de compiler wordt de syntax vertaald naar een expressieboom. Daarin zijn de expressies elementair geworden, omdat het geen zin heeft in je expressieboom meerdere "schrijfwijzen" ofzo te hanteren. Dat is alleen maar interessant voor degene die de code schrijft :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1