Programmierkurs Java

Ähnliche Dokumente
Kapitel 2. Methoden zur Beschreibung von Syntax

Begriffe (Wiederholung)

Kapitel 2. Methoden zur Beschreibung von Syntax

7. Syntax: Grammatiken, EBNF

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Alphabet, formale Sprache

3 Syntax von Programmiersprachen

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Einführung in die Programmiertechnik

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Syntax von Programmiersprachen

1 Syntax von Programmiersprachen

Blocktutorium EidP. -Theorie II. EBNF Syntaxdiagramm Methodenüberladung

Teil IX. Eine kleine Programmiersprache

Programmierkurs I. Gliederung: Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen)

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

3.4 Struktur von Programmen

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Lexikalische Programmanalyse der Scanner

Sprachbeschreibung und Erweiterung

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

Formale Sprachen, reguläre und kontextfreie Grammatiken

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Algorithmen und Datenstrukturen II. Algorithmen und Datenstrukturen II 1

Deterministische endliche Automaten - Wiederholung

7. Formale Sprachen und Grammatiken

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Simulation und Testen von Algorithmen

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Programmieren in Java

Syntaxanalyse Ausgangspunkt und Ziel

Wo sind wir? Übersicht lexikale Struktur von Java

Einführung in die Informatik. Programming Languages

Kapitel 4: Syntaxdiagramme und Grammatikregeln

Syntax der Sprache PASCAL

Formale Sprachen und Grammatiken

Einführung in die Informatik. Programming Languages

Konzepte von Programmiersprachen

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Kapitel IV Formale Sprachen und Grammatiken

9 Theoretische Informatik und Compilerbau

Universität Karlsruhe (TH)

JCup. auspacken JCUP o.ä cd JCUP Übersetzten. javac java_cup/main.java./install

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Übung Praktische Informatik I

Reguläre Ausdrücke. Michael Jäger. 4. April 2017

1 Formale Sprachen, reguläre und kontextfreie Grammatiken

MiniJava-Sprachbericht Version 3.1

Thüringer Kultusministerium

Literatur Reguläre Ausdrücke

Interpreter - Gliederung

Was ist ein Compiler?

Einführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich

ABITURPRÜFUNG 2003 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

Programmiersprachen und Übersetzer

Algorithmen und Datenstrukturen II

Info B VL 1: Einführung p.1

Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Algorithmik II. Aufgabe 5 a) In der Vorlesung im Wintersemester haben Sie folgende Klasse für ein Bankkonto kennengelernt:

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Formale Sprachen. Anwendungen formaler Sprachen Adressen, Kaffeeautomaten, Programmiersprachen. Rudolf Freund, Marian Kogler

Programmiersprachenentwurf

Prinzipien der Softwareentwicklung S. Strahringer

6 Kontextfreie Grammatiken

Theoretische Grundlagen 1

Der Grid-Occam-Compiler. Übersicht über die OCCAM-Sprachdefinition

Formale Sprachen. Inhalte. Lehrplan. Hinweis

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester

(Prüfungs-)Aufgaben zu formale Sprachen

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

1.) Zahlensysteme (10 Punkte)

Übungsaufgaben zu Formalen Sprachen und Automaten

Elementare Konzepte von

syntax.tex Eine Übersicht

Einstieg in die Informatik mit Java

Programmierpraktikum

Semantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04)

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Allgemeine Hinweise:

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

Grundlagen der Programmierung - Datenstrukturen

Einführung in die Informatik Grammars & Parsers

Einstieg in die Informatik mit Java

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4

Informatik I Übung, Woche 40

Programmierkurs Java

Software Entwicklung 2. Übersetzerbau 1

Transkript:

Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder eine positive Zahl oder ein Minuszeichen gefolgt von einer positiven Zahl oder das Zeichen Null. Eine positive Zahl ist eine Ziffer außer Null gefolgt von einer optionalen Ziffernfolge. Eine optionale Ziffernfolge ist eine Ziffer gefolgt von einer optionalen Ziffernfolge oder leer. (a) Überführen Sie die Aussage in eine BNF (b) Überführen Sie diese Aussage in eine EBNF Aufgabe 3: Gegeben sei folgende EBNF für Gleitkomma-Literale in Java: <FloatPointLit> ::= <Digits>. [<Digits>] [<ExpPart>] [<FloatTypeSuffix>] <Digits>. <Digits> [<ExpPart>] [<FloatTypeSuffix>] <Digits> <ExpPart> [<FloatTypeSuffix>] <Digits> [<ExpPart>] <FloatTypeSuffix> ::= <Digit> {<Digits>} <Digit> ::= 0 1 2 3 4 5 6 7 8 9 <ExpPart> <ExpIndicator> <SignedInteger> ::= <ExpIndicator> <SignedInteger> ::= e E ::= [<Sign>] <Digits> <Sign> ::= + - <FloatTypeSuffix> ::= f F d D [...] bedeutet: Symbole oder Symbolfolgen innerhalb der Klammern können auch weggelassen werden {...} bedeutet: Symbole oder Symbolfolgen innerhalb der Klammern können beliebig oft wiederholt oder auch ganz weggelassen werden...... bedeutet: genau ein alternatives Symbol oder eine alternative Symbolfolge innerhalb der Klammern muss auftreten <Zeichenfolge>: Nichtterminal Zeichenfolge : Terminal

Teilaufgabe (a): Formen Sie die obige EBNF in ein äquivalentes Syntaxdiagramm um! Teilaufgabe (b): Welche der folgenden Zeichenketten sind bezüglich der obigen EBNF syntaktisch korrekt, welche nicht (Begründen Sie Ihre Entscheidung!): 1. 4711.08155e23D 2. 0815.f 3..ef 4. +4.5 5. 3456.7<ExpPart>F 6. 6.4E-23f 7. 78.2f 8. 78g.2f 9. 99999999999.99999999e+99999999999999 10. 6767.7676.7e56 Aufgabe 4: Entwickeln Sie ein Syntaxdiagramm (bzw. alternativ eine EBNF) für EBNF-Regeln (d.h. beschreiben Sie, wie EBNF-Regeln syntaktisch aufgebaut sind)! Aufgabe 5: Gegeben sei folgende EBNF: <Start> ::= <Digits>. [<svocal>] <bvocal> <Digits>. <Digits> {<bvocal>} <svocal> {<bvocal>} <Digit> ::= <Digit> {<Digit>} <Digit> ::= 0 1 2 3 4 5 6 7 8 9 <svocal> <bvocal> ::= a e i o u ::= A E I O U 1. 4711.E 2..AE 3. i56 4. 88.eeAA 5. eaee7 6. 815+aA Aufgabe 6: Entwickeln Sie ein Syntaxdiagramm (bzw. alternativ eine EBNF) für die Sprache L = {(a 2 b) n (a 2 b) m n, m sind natürliche Zahlen oder Null}

Aufgabe 7: Gegeben sei folgende EBNF: <InterfaceDecl> ::= [ <InterfaceMod> ] 'interface' <Identifier> [ 'extends' <Identifier> { ',' <Identifier> } ] ( <InterfaceBody> ';' ) <InterfaceMod> ::= ( 'public' 'protected' 'private' ) <Identifier> ::= <Letter> { ( <Letter> <Digit> ) } <InterfaceBody> ::= '{' { <InterfaceMemD> } '}' <InterfaceMemD> ::= ( 'method' 'constant' 'class' ) <Letter> ::= ( 'a' 'b' '$' ) <Digit> ::= ( '0' '1' ) 1. interface ab1a1a1; 2. public interface aaa extends bbb, ab$ { method method } 3. protected interface 0$ab extends aaa method constant 4. interface aaa, bbb extends aaa, bbb { aaa } 5. InterfaceMod interface extends Identifier ; 6. private public interface extends aaa, { class extends bbb } Aufgabe 8: Ist es möglich, ein Syntaxdiagramm (bzw. alternativ eine EBNF) für die Sprache L = {(a n d 2 b m c 3 ) p n, m sind natürliche Zahlen oder Null, p ist natürliche Zahl größer Null} zu entwickeln? Aufgabe 9: Gegeben sei folgendes Syntaxdiagramm: zahl a a 2 a 1 4 5 3 b b 2 a 7 Welche der folgenden Zeichenketten sind syntaktisch korrekt, welche nicht: 12451333 12459333 12a3 145245 2217

454545221452127 123453 4545217 Begründen Sie Ihre Antwort! Aufgabe 10 Entwickeln Sie eine EBNF für die Sprache L = {x 2 y n z m (cd) 3 n, m sind natürliche Zahlen oder Null} Aufgabe 11: Ist es möglich für folgende Sprache L eine EBNF zu entwickeln? L = {(x n y m ) p n, m, p sind natürliche Zahlen größer oder gleich Null} Aufgabe 12: Ist es möglich für folgende Sprache L eine EBNF zu entwickeln? L = {a n b n c n n ist natürliche Zahl oder Null} Aufgabe 13: Die Menge Q der Brüche besteht aus allen Worten, die aus einer ganzen Zahl, gefolgt von einem Schrägstrich (/) und einer ganzen Zahl ungleich 0 bestehen. Geben Sie eine EBNF für die Menge Q an. Aufgabe 14: Gegeben sei die folgende Grammatik in EBNF (die Syntax entspricht übrigens in etwa der Syntax der funktionalen Programmiersprache Scheme): <Ausdruck> ::= <Atom> <Liste> <Atom> ::= <Zahl> <Zeichenkette> <Liste> ::= ( <Ausdruck-Folge> ) <Ausdruck-Folge> ::= <Ausdruck> <Ausdruck-Folge> <Zahl> ::= <Ziffer> { <Ziffer> } <Ziffer> ::= 0 1 2 3 4 <Zeichenkette> ::= <Zeichen> <Zeichenkette> <Zeichen> ::= i f / + = a Welche der folgenden Sätze/Programme sind korrekt, welche nicht! Begründen Sie Ihre Entscheidung!

(1) (/ 22 (+ 41 3)) (2) (if (= a 0) 0 (/ 1 a)) (3) (+ 41 3) (+ 3 41) (4) (/ 1 2 3 (4 3 (* 2 1) (5) (* 2.3 4.6) (6) (+ Ziffer Zeichenkette) (7) (fifi (iffi iffi) ifif) Aufgabe 15: Die Sprache Mini-Pascal (aus dem Buch "Vom Problem zum Programm" von Herbert Klaeren, erschienen beim Teubner Verlag) ist in etwa durch die folgende EBNF definiert: <program> := "program" <ident> ";" <block> ".". <block> := [<vardecl>] "begin" <statement> {";" <statement>} "end". <vardecl> := "var" <ident> {"," <ident>} ":" "Integer" ";". <statement> := <ident> ":=" <expr> "begin" <statement> {";" <statement>} "end" "if" <condition> "then" <statement> "while" <condition> "do" <statement> "read" <ident> "write" <ident>. <condition> := <expr> ("=" "<>" "<" ">" "<=" ">=") <expr>. <expr> := <term> {("+" " ") <term>}. <term> := <factor> {("*" "/") <factor>}. <factor> := <ident> <number> "(" expr ")". <ident> := <letter> {<letter>} <number> := <digit> {<digit>} <letter> := "a" "b" "c" <digit> := "0" "1" Konstruieren Sie syntaktisch korrekte Mini-Pascal-Programme.