Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

EBNF (Erweiterte Backus-Naur-Form)

Hart und Trocken18:34 11.956 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 111 Zeilen
Herunterladen
  1. [Musik] willkommen bei hart und trocken wir sprechen über die bacchus neuer form wir beschäftigen uns damit wie ich die
  2. syntax einer programmiersprache beschreiben kann das heißt wie kann ich die korrekt geformten setzte in einer
  3. programmiersprache beschreiben die syntax an der sprache ist genau dieses regelsystem was mir sagt was ich so genannten wohlgeformten sätze sind und
  4. welche sätze nicht wohl geformt sind ein berühmtes beispiel dafür ist der satz farblos grüne ideen schlafen wütend der satz ist komplett unsinnig er ist
  5. aber wohl geformt grammatikalisch ist der satz in ordnung farblos grüne ideen schlafen wütend was ich gerne möchte ist ein regelsystem für eine
  6. programmiersprache was mir wie zb im deutsche sagt dieser satz ist wohl geformt oder dieser ausdruck in der programmiersprache ist wohl geformt die
  7. syntax von programmiersprachen ist vergleichsweise einfach natürliche sprachen sind viel schwerer zu beschreiben und weil programmiersprachen
  8. einfach zu beschreiben sind gibt es dafür auch eine vergleichsweise einfache form wir werden die so genannte erweiterte bacchus neuer form verwenden
  9. um zumindest einen teil der syntax von python zu beschreiben in der emf gibt es vier verschiedene wichtige bestandteile das erste sind die
  10. terminalen symbole dabei handelt es sich um zeichen oder auch zeichenketten die unterstrichen sind
  11. diese symbole heißen terminale symbole weil sie nicht mehr durch irgendetwas anderes ersetzt werden die nicht terminalen symbole sind zeichen oder
  12. zeichenketten die wir in spitze klammern schreiben zum beispiel hier nix oder zahl oder ausdrucke diese zeichen oder zeichenketten in spitzen klammern werden
  13. durch die regeln ersetzt in andere entweder nicht terminale symbole oder terminale symbole dann gibt es ein sogenanntes leeres
  14. zeichen dieses y in spitze klammern weil wir manchmal ein nicht terminale symbol einfach durch nichts ersetzen wollen dafür ist dieses zeichen speziell
  15. gedacht und dann gibt es regelt zeichen zum beispiel die zuweisung mit zwei doppel punkten und dem gleichheitszeichen es gibt ein roter
  16. zeichen dann geschäfte klammern davon auch eine variante mit einem pluszeichen eckige klammern und das sind jetzt in der bnf spezielle symbole mit denen wir
  17. die regeln definieren ein kleines beispiel macht klar wie die ebm es funktioniert ich habe eine regel für das nicht terminale symbolik six in
  18. spitze klammern und diese six kann ersetzt werden durch ein unterstrichen es klein ist also wirklich den buchstaben kley nix dann
  19. wieder das nicht terminale symbol und dann den buchstaben kleine y wenn ich hier eine zeichenkette habe dann kann ich an diese zeichenkette
  20. vorne und hinten an y hängen ich kann ein vorkommen von iks in spitzen klammern aber auch durch das leere symbol ersetzen einfach durch nichts
  21. ersetzen mit diesen regeln kann ich jetzt zeichenketten erzeugen ich starte mit dem nicht terminalen symbol und als
  22. erste regel wenn dich an ich hänge vorne einig sun und hinten an y dann wenn sich die regeln noch mal an und hänge wieder vorne nix und hinten
  23. ein y an und das mache ich mehrmals ich hänge jeweils vorne eins hinten eins y an bis ich irgendwann wenn ich einmal iks bzw y
  24. erarbeitet habe sage jetzt verwende ich die zweite regel und ersetze das nicht terminale symbolisch durch das leere symbol das heißt ich komme ich hier bei
  25. der zeichenkette xxx in x y y y wenn mal an in der emf gibt es mal kurz schreibweisen die es leichter machen die
  26. syntax eine programmiersprache zu beschreiben das erste ist dass oder der senkrechte strich bedeutet das entweder die linke oder die rechte seite von dem
  27. senkrechten strich angewendet werden kann hier kann ich sagen dass nichts terminale symbol grosics kann ersetzt
  28. werden durch klein xx klein y oder durch das leeres wohl diese eine regel sagt das gleiche aus wie die regel auf der vorherigen seite dann gibt es die option
  29. das sind eckige klammern vor und nach einem ausdruck das bedeutet dass das was in der eckigen klammern steht stehen kann oder nicht ich kann entweder
  30. ersetzen durch b oder durch y also durch nichts mit anderen worten wird entweder durch b ersetzt oder es wird durch exelon ersetzt die nächste
  31. kurz schreibweise ist die wiederholung für ein größer gleich null wenn ich den ausdruck b in spitzen klammern in eckige klammern setzte dann
  32. bedeutet das ich kann dieses b mehrmals wiederholen wobei mehrmals bedeutet entweder keinmal oder einmal oder zweimal dreimal viermal fünfmal und so
  33. weiter ich kann also entweder 0 x b verwenden das wäre diese situation oder ich verwende einmal b und habe dann aber immer noch hier den ausdruck a stehen
  34. das heißt ich kann die regeln noch mal anwenden um noch mal ein baby zu erzeugen und nochmal ein b und nochmal ein b manchmal möchte ich ausdrücken
  35. dass etwas wiederholt werden soll so oft wie ich möchte das ist aber mindestens einmal stehen muss das ist die wiederholung mit n
  36. größer gleich eins die funktioniert ganz analog zur wiederholung für n größer gleich null mit dem unterschied dass ich jetzt hier
  37. noch ein plus an die geschäfte klammer anhänge der unterschied zur regel gerade eben ist dass ich jetzt hier nachdem oder zeichen nicht mehr das
  38. leere symbol habe sondern ich habe ein b das heißt ich kann entweder durch b ersetzen oder durch abi und dann könnte ich hier das wiederum durch abe ersetzen
  39. noch mal durch a b und so kann ich eine lange reihe von b erzeugen mit dieser emf können wir jetzt eine syntax beschreibung des teils von
  40. preisen machen den wir schon kennen gelernt haben wir lassen dabei dass prinz statement aus und es gibt auch ein paar feinheiten
  41. die sich nur etwas umständlich beschreiben lassen würden die wir ebenfalls weglassen die wichtigen bestandteile aber können wir hier
  42. beschreiben wir beginnen mit der zahl eine zahl hier als nicht terminale symbol besteht aus hier einem optionalen teil und da steht
  43. entweder hier durch die senkrechte linie angezeichnet ein plus oder ein minus die unterstreichung macht klar dass wirklich ein plus als zeichen oder ein - als
  44. zeichen stehen soll dann folgt in geschäften klammern mit einem plus das heißt mindestens einmal wiederholt das nicht terminale symbol
  45. ziffer die ids an die zahl ist eine ziffernfolge hier beliebiger länge aber mindestens eine kiefer muss es sein und wir können ein plus oder minus davor
  46. schreiben ich habe jetzt hier darauf verzichtet ziffer auszuschreiben ziffer würde man definieren als null oder eins oder zwei oder und so weiter als
  47. nächstes folgte ausdruck ein ausdruck kann aus relativ unterschiedlichen dingen bestehen zum einen kann ein ausdruck einfach eine zahl sein so wie
  48. gerade eben definiert dann ein minuszeichen und ein bezeichne den wir gleich hier unten definieren werden dann eine runde klammer und dann ausdruck
  49. operator ausdruck und wieder eine schließende klammer damit möchten wir ausdruck plus ausdruck oder ausdruck - ausdruck schreiben können hiermit
  50. möchten wir zum beispiel xx schreiben können oder x-mal ich's dann kann eine ausdruck folgendes sein ein bezeichne runde klammer auf und dann optional
  51. dieser teil hier er besteht aus einmal ausdruck und dann hier mit geschäften klammern das heißt 0 x oder einmal oder zweimal und so weiter
  52. weitere ausdrücke das heißt ich kann mit dieser darstellungsweise beschreiben dass ich eine funktion aufrufen kann
  53. und diese funktion kann beliebig viele argumente haben zum schluss kann ein ausdruck auch ein bedingter ausdruck sein ein conditioner
  54. der bezeichnung den wir hier und hier gesehen haben wird definiert als ein buchstabe und dann beliebig oft wiederholt buchstaben oder zahlen
  55. das heißt ein bezeichnen kann etwas sein wie a11 bcc oder quadrat oder quadrat 2 was nicht erlaubt ist als bezeichnet ist 2x weil dieser bezeichnung mit einer
  56. zahl an fängt er muss aber mit einem buchstaben anfangen dann müssen wir noch wissen was ist mit diesen operatoren auf sich hat das sind einfach die
  57. grundrechenarten plus minus x und geteilt ich möchte also ausdruck mal ausdruck schreiben können in unserer mini version von preis nun
  58. haben wir auch funktionen verwendet eine funktion wird so definiert ich habe zunächst das schlüsselwort das was ich genau so hinschreiben muss dann kommt
  59. der name der funktion wir müssen uns gleich noch überlegen wie so ein name aussehen darf dann geht eine klammer auf es kommen die formalen parameter
  60. vielleicht wollen wir nix übergeben wie zb bei der quadrat funktion vielleicht wollen wir auch zwei argumente übergeben vielleicht wollen wir auch kein argument
  61. übergeben dann schließen wir mit der klammer und schreiben einen doppelpunkt was dann folgt ist der funktions rumpf der bei
  62. uns im moment sehr einfach aussieht ich habe genau vier leerzeichen und dann kommt das was wir hier funktionsraum nennen was er gleich noch definieren der
  63. name der funktion soll ein bezeichnet sein so wie wir ihn gerade definiert haben das heißt fängt an mit einem buchstaben und dann können zahlen oder
  64. buchstaben kommen die liste der formalen parametern verwendet wieder den trick von vorher optional kann folgendes kommen das heißt
  65. es kann auch leer bleiben einnahme und dann eine beliebige folge von comma name komma name komma name und so weiter der funktions rumpf sieht bei uns jetzt
  66. immer so aus wir haben hier das schlüsselwort return was er genau so schreiben müssen und dann kann nach dem return
  67. ein ausdruck folgen außerdem gibt es noch die bedingten ausdrücke in unserer sprache dieses conditional sieht so aus ausdruck schlüsselwort ein bursche
  68. ausdruck als ausdruck die bedeutung war wenn das hier war ist wird er als das hier aus wir haben dass sie immer im funktions rund verwendet liefere das
  69. zurück wenn dieser bursche ausdruck falsch ist dann wertet das hier aus der bursche ausdruck hier ist so definiert entweder das schlüsselwort true oder das
  70. schlüsselwort falls dies in den beiden vordefiniert dann klammer auf und hier in klammer zu ein ausdruck ein vergleich operator und ein ausdruck oder ich habe
  71. in runden klammern einen burschen ausdruck ein logischer operator und nochmal im bullishen ausdruck wir sehen jetzt schon das ergebnis von einem
  72. solchen burschen aus druck ist immer da oder forst und wir arbeiten dabei entweder direkt mit burschen ausdrücken auch hier das hier ist etwas was wahr
  73. oder falsch ist das hier ist etwas was wahr oder falsch ist und das kombiniert mit dem logischen operator mit und oder oder oder ich habe einen burschen
  74. ausdruck in runden klammern und schreibe ein ausrufezeichen davor das ist die negation wenn das hier war ist dann ist das hier falsch und umgekehrt
  75. die vergleichs operatoren sind test auf gleichheit ungleichheit kleiner größer kleiner gleich größer gleich an dieser stelle wichtig der test auf gleichheit
  76. wird mit zwei gleichheitszeichen geschrieben und das einfache gleichheitszeichen bedeutet immer eine zuweisung die logischen operatoren sind
  77. und und oder zum schluss wie sieht ein mini preisen programm aus das programm besteht aus einem ausdruck und dann einen zeilenumbruch und das ganze
  78. mindestens einmal ausdrücke sollen immer in einer neuen separaten zeile stehen um hier vielleicht noch mal zu zeigen was möglich ist mit diesen
  79. bedingten ausdrücken wir betrachten eine funktion namens f die drei argumente bekommt xyz und jetzt könnte zum beispiel sollen bedingte
  80. ausdruck der in dem return statement auftaucht so aussehen diese funktion liefert folgendes zurück wenn nix größer als y ist und y gleich
  81. ist wie z aus den gleichen wert bz hat dann liefere iks + y und sonst also wenn all das hier nicht gilt liefere z mit leerzeichen müssen wir ein bisschen
  82. aufpassen in python was wir damit meine sind zum einen ganz normale leerzeichen aber auch zeilenumbrüche oder tabulaturen im englischen sagt noch für
  83. all das zusammen white space in bezeichnen zahlen oder schlüsselwörtern darf ich keinen white space haben das heißt wenn ich eine variable
  84. bezeichnen möchte die quartieren und dann 1 abziehen heißt dann darf ich darin keinen white space unterbringen wenn bezeichne zahlen oder
  85. schlüsselwörter aufeinander folgen dann muss mindestens ein leerzeichen dazwischen stehen das heißt dieser ausdruck hier ist nicht korrekt weil ich
  86. an diesen stellen hier ein leerzeichen unterbringen es heute oder mindestens ein leerzeichen das heißt ich könnte hier oder hier auch mehrere leerzeichen
  87. unterbringen das ist unproblematisch es muss aber mindestens eins sein mit hilfe der emf kann ich jetzt kontext freisprachen definieren diese kontext
  88. freien sprachen zeichnen sich eben dadurch aus dass sie keinen kontext benötigen es sind einfache regeln mit denen ich entscheiden kann ob ein satz
  89. oder ein ausdruck grammatikalisch korrekt ist ich muss aber nicht wissen über was gesprochen wird mit anderen worten ich
  90. kann ein python programm schreiben was eine völlig unsinnige berechnungen anstellt ich kann aber sagen die syntax des programms ist korrekt
  91. die kontext freien sprachen habe einen großen vorteil ich kann dafür eine maschine bauen oder ich kann ein programm wiederum schreiben was in
  92. endlicher zeit entscheiden kann ob ein bestimmtes wort in der sprache enthalten ist oder nicht ich kann ein programm schreiben was
  93. entscheidet ob ein programm sind taktisch korrekt ist oder nicht solche kontext freien sprachen sind sagt man entscheid war noch ein sprach mittel was
  94. ich jetzt in der emf nicht untergebracht habe was aber sehr wichtig ist das sind kommentare ich kann in python programme hinweise einbauen an menschliche leser
  95. diese kommentare werden in der programmausführung ignoriert für die maschine für den rechner sind sie völlig irrelevant für menschliche leser sind
  96. sie aber sehr wichtig programme richtig zu kommentieren ein wichtiger bestandteil der programmierung kommentare in python
  97. beginnen mit einem gatter oder resch und alles was in dieser zeile nachkommt wird ignoriert hier in dem kleinen beispiel programm
  98. ist es so der erste kommentar fängt direkt hier an der nächste wiederum hier in der zeile kommt noch mal so einen hash vor
  99. das bedeutet aber nicht dass danach das ganze aufgelöst wird oder so was dass der kommentar in dieser stelle ist der ganze rest der zeile einfach einen
  100. kommentar hier ist ein kommentar über die folgende funktion fk funktion etwa berechnet das quadrat von +1 hier in klammern geschrieben damit klar ist dass
  101. man das quadrat von ausrechnet und dann +1 und nicht bloss 1 und dann das quadrat und dann folgen noch mal 2 kommentare die erst ein bisschen später
  102. beginnen in der zeile und aber für den rest der zahlen gelten zum einen die funktion heißt es von a und dann die funktion gibt aber mal +1 zurück die
  103. beiden letzten kommentare hier sind beispiele für kommentare wie man sie nicht machen sollte da wird nur das offensichtliche
  104. kommentiert ich sollte in den kommentaren nicht beschreiben was man sowieso direkt sieht nämlich hier da gibt es ein return und a mal a plus
  105. eins das sehe ich sofort was da passiert kommentare sind dann gut wenn sie ein bisschen was über die idee des programms erläutern
  106. das programm hier ist zu kurz um etwas tiefgründiges zu sagen aber einen kommentar zu einer funktion ist dann gut wenn gesagt wird wofür die funktion da
  107. ist wofür man sie anwenden kann wofür vielleicht auch nicht warum sie so gebaut wurde was sie für besonderheiten hat für welche argumente man sie nicht
  108. verwenden darf und so weiter richtig kommentieren ist eine aufwändige sache aber wenn ich im programm schreibe das irgendwann weg lege und dann nach
  109. einem jahr wieder drauf dann ist die gefahr groß dass sich das programm nicht mehr verstehe wenn ich keine kommentare reinschreiben
  110. deswegen ist das kommentieren sehr wichtig nicht nur damit andere das programm vielleicht lesen können sondern damit man es auch selbst noch versteht
  111. das war hart und trocken bmf [Musik]

Zum Nachlesen