DM082 - 3. semester       til andre ugeplaner

Ugeplan for Softwarearkitektur og Distribuerede Programmer

Tema: Sproglære  - Gå til uge:  49, 50

Sidst ændret: 2009.12.10

 
Uge 49
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  08:30 - 11:50  Introduktion til sproglære
- Grammatikker og sprog
- Compiler
- regulære udtryk
- BNF + EBNF
 

 

Noter/litteratur se BlackBoard (Hvordan virker en Compiler, Compiler design og Note om EBNF grammatik) De første 2 vil være primære for mandagen - den sidste inddrages undervejs i forløbet.

Slides om Sprog og compiler

Compilering_af_symbolsk_maskinsprog med brug af  Symboltabel
Bjarnes modelmaskine - virual floppy for Virtual PC 2007
Selve modelmaskine til dos-box med dokomentation  - tilhørende eksempler

Om Context frie grammatikker (wikipedia) - se specielt på eksemplerne:
- http://en.wikipedia.org/wiki/Context-free_grammar

EBNF eksempler
Download EBNF Visualizer (fra http://dotnet.jku.at/applications/Visualizer/)

Leksikalsk analyse ( scanner til tokens ):
- http://en.wikipedia.org/wiki/Lexical_analysis

Om programmeringssprog, parsertree og tokenization (wikipedia):
- http://en.wikipedia.org/wiki/Parsing#Programming_languages
- vigtigste er: http://en.wikipedia.org/wiki/File:Python_add5_parse.png

Om state pattern:
- http://en.wikipedia.org/wiki/File:State_Design_Pattern_UML_Class_Diagram.png

For dem der gerne vil lidt dybere i emnet

Om hvad er en compiler er og forskellige typer (wikipedia):
- http://en.wikipedia.org/wiki/Compiler

  Opgave med EBNF - EBNFOpgave01  
12:30 - 14:30 (reserveret CDS - standard server projekt)  
Tirsdag  08:30 - 11:50  Sproglære fortsat

Scanner med brug af state-pattern

 

Bottom-up parsing:
- http://en.wikipedia.org/wiki/Bottom-up_parsing

Recursive descent parser (top-down):
- http://en.wikipedia.org/wiki/Recursive_descent_parser

Parse tree (resultat fra parser):
- http://en.wikipedia.org/wiki/Parse_tree

Eliminering af vestre-recursion i grammatikken (se BlackBoard)
- (man skal kun kende til problematikken ikke kunne omskrive)

Note om EBNF grammatik og syntakstyret indlæsning (se BlackBoard)

Scanner / Leksikalsk analyse: EBNF_Syntaksstyret_Medlemsliste_bjbu (vælg Lex solution - 2 forskellige løsninger på LexAnalyzer)

  Opgave: Se afleveringsopgave denne uge  
     
12:30 - 14:30 (reserveret CDS - standard server projekt)  
Onsdag  08:30 - 11:50  Sproglære fortsat
Opgave: Se afleveringsopgave denne uge
 
     
12:30 - 14:30 (reserveret CDS - standard server projekt)  
Torsdag  08:30 - 11:50  Sproglære fortsat
Opgave: Se afleveringsopgave denne uge
 
     
12:30 - 14:30 Opgaveløsning  
Fredag  08:30 - 11:50  Præsentation af CDS projekt  
     
     
Afleveringsopgaver (obligatoriske) denne uge:  Leksikalsk analysator, der kan opbygge liste / kø med tokens for ruteplanen. Disse tokens skal senere bruges i parseren.
Opgave: der skal laves en scanner / leksikalsk analysator, som kan indlæse en ruteplan og aflevere en kø eller liste af tokens ud fra tekstinputtet. Brug et classlibrary til klasserne og lav en consol-application til at afprøve med.
Du kan evt. opdele i en indlæsning af filen til en char-kø, liste eller string og så give dette til den leksikalske analysator.
(*) Core C# and .NET, Stephen C. Perry - se BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard
 
 
 
 
Uge 50
Dag Tidspunkt Emne Litteratur / Opgaver
Mandag  08:30 - 11:50  Sproglære fortsat

Parser 

Bottom-up parsing:
- http://en.wikipedia.org/wiki/Bottom-up_parsing

Recursive descent parser (top-down):
- http://en.wikipedia.org/wiki/Recursive_descent_parser

Parse tree (resultat fra parser):
- http://en.wikipedia.org/wiki/Parse_tree

Scanner / Leksikalsk analyse: EBNF_Syntaksstyret_Medlemsliste_bjbu (vælg Parser solution - 2 forskellige løsninger på Parser)

EBNF_Syntaksstyret_Medlemsliste_nokn_bjbu (parser: regelbaseret, state, tabel - svarer til KBH note)

Lekikalsk analyse og parsing med brug af værktøj (LALR(1) - Flex+Bisson)
  

     
12:30 - 14:30 Opgaveløsning  
Tirsdag  08:30 - 11:50  Sproglære fortsat

Parser

Se mandag

Medlemsliste med brug af "Flex" - "Bisson" lignende værktøj til C# for Leksikalsk analyse og parsing - Dette bliver ikke eksamensstof, men se hvor nemt det bliver når man "bare" kan beskrive grammatikken med regulære udtryk til leksikalske analysator og BNF til parseren

     
     
12:30 - 14:30 Opgaveløsning  
Onsdag  08:30 - 11:50  Opgaveløsning (ingen lærerstøtte)  
     
12:30 - 14:30 Opgaveløsning  
Torsdag  08:30 - 11:50  Sproglære fortsat

Gennemgang efter behov

 
     
12:30 - 14:30 Opgaveløsning  
Fredag  08:30 - 11:50  Sproglære afsluttes / repetition af SDP startes - detailplan følger EBNF_Syntaksstyret_Medlemsliste_bjbu (2 varianter af parser (state pattern og regelbaseret) - 2 varianter af scanner / leksikalsk analysator (state pattern og simpel)

Medlemsliste med brug af "Flex" - "Bisson" lignende værktøj til C# for Leksikalsk analyse og parsing - Dette bliver ikke eksamensstof, men se hvor nemt det bliver når man "bare" kan beskrive grammatikken med regulære udtryk til leksikalske analysator og BNF til parseren

Ruteplan med brug af "Flex" - "Bisson" lignende værktøj til C# for Leksikalsk analyse og parsing - Dette bliver ikke eksamensstof, men se hvor nemt det bliver når man "bare" kan beskrive grammatikken med regulære udtryk til leksikalske analysator og BNF til parseren

     
     
Afleveringsopgaver (obligatoriske) denne uge:  Parser, der kan opbygge en ruteplanen model (syntakstræ for ruteplanen) ud fra en liste eller kø af ruteplans-tokens.
Opgave: der skal laves en den sidste del af ruteplans-projektet (parseren), der så sættes sammen med de øvrige dele til en hel løsning
 
(*) Core C# and .NET, Stephen C. Perry - se BlackBoard
(**) .Net Application Development with C#..., Hanspeter Mössenböck - se BlackBoard
(***) C# To the point -.., Hanspeter Mössenböck -   - se BlackBoard