Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale.

Slides:



Advertisements
Lignende præsentationer
Kursus for matematik-lærere på HG
Advertisements

Grammatik hvorfor og hvordan?
Begreber og Redskaber 1 BRP.
Datastrukturer Simple-type structs
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
CSS ver. 2 Rikke Møller-Poulsen. Visning af billeder?!? Er der stadig nogen, der har problemer med at få vist billeder på deres site?
Automater, sprog og compilere
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Begreber og Redskaber 2 BRP.
Operationer på relationer
Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik.
Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen.
Automater, sprog og compilere Per P. Madsen.
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Compiler/fortolker struktur Mellem- kode Mellemk.- optimering Kode- generering Kode- optimering Lexikalsk- analyse Syntax- analyse Semantik- analyse -
Buttom-up parsning: Hvor er vi Mellem- kode Kald til Runtimesys. Mellemk.- optimering Kode- generering Kode- optimering Leksikalsk- analyse Syntax- analyse.
Videregående pc-vejledning Modul 03: Harddisken 2 60+Bornholm.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
FEN Sprog1 Lidt om sprog Definition: Et sprog over et endeligt alfabet  (sigma) er en mængde af strenge dannet af tegn fra . Eksempel: Lad.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Begreber og Redskaber 1. Emner i kurset Om sprog og sprogbeskrivelse Repræsentation af tal i maskinen –Heltal, negative tal, kommatal, logiske værdier.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
DATATYPER. For at tilpasse hvert felt i databasen til dets formål og dermed øge funktionalitet 1 bit er tilstrækkelig til at angive køn (0/1) men for.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
Begreber og Redskaber 1. Rettelse til sidst Sidst vrøvlede jeg lidt om algoritmer: Ordet stammer fra Abu Ja’far Mohammed ibn Musa al- Khowarizm der i.
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
Validering af bruger-input i.NET WebForms Valideringsmuligheder i ASP.NET Fordele og ulemper Server-side vs. client-side Formatering vs. Validering.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
Begreber og Redskaber 1. Programmeringssprog Sprog = mængde af sætninger ?
Begreber og Redskaber 1 BRP.
JavaCC Top-down (Recursive descent). Mest populære mht Java. Regulær grammatik og Context-free grammatik i en fil. Tillader EBNF: (..)*, (..)+ og (..)?
1 Strengbehandling. 2 Plan Strengsøgning - Knuth-Morris-Pratt-algoritmen endelige tilstandsmaskiner - Boyer-Moore-algoritmen - Rabin-Karp-algoritmen Syntaksanalyse.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Semantik, model teori Et (formalt) sprog har ingen mening indtil man interpreterer dets forskellige (korrekte) udtryksformer (vff’s) mhp. en bestemt situation.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Paradigmer i Programmering 0. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
Grammatikker, sprog og parsing Rasmus D. Lehrmann DM
Fagdidaktik i sprogfag – lingvistisk kompetence Viden og færdigheder ift. Udtale, stavemåder, morfologi og syntaks (sætningsdannelse) samt ordforråd. Deklarativ.
Fromelle sprog Per P. Madsen Afd. for proceskontrol.
Grammatik Sætninger. Typer af sætninger Sætning: består mindst af et subjekt og et verballed Peter løber Helsætning: en sætning, der kan stå alene Eva.
Regulær udtryk Lad T være det terminale alfabet. og T* angive et sæt af strenge over T ex: T={a,b,c} så er: aaa, bab,bbbbbbaaaa er indeholdt i T* Et sporg.
Figur 3.1 Hans Reitzels Forlag.
Sproghistorie Syntaks (struktur) Semantik (Indhold)
Union-Find [CLRS, kapitel ]
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Lister i html kommer i 2 udgaver
Quiz – Uge 3 – torsdag – første time
Mulighed 2AA Konfron-konfron SKABELON TIL DILEMMA-OPBYGNING
Quiz – Uge 3 – torsdag – første time
Grundlæggende Algoritmer og Datastrukturer
Præsentationens transcript:

Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale symboler  er et sæt af terminale symboler P er et sæt af produktioner S er sætnings- eller startsymbolet.

Grammatik på BNF form Grammastart ->program ( ident ) globalvar begin statementlist end ident -> letter tegenlist letter -> a | b | c | d | | å | A | B | | Å tegnlist -> tegn tegnlist | e tegn -> letter | digit digit -> 0 | 1 | 2 | 3 | | 9 globalvar -> type identlist ; type -> char | int | float identlist -> ident | ident, identlist statementlist -> statement statementlist | e statement -> ident = exp ; exp -> exp + exp | exp - exp | exp * exp | exp / exp | (exp) | ident

Backus-Naur form ::= "program" "(" ")" "begin" "end” ::= ";” ::= "char" | "int" | "float"

EBNF En variation af BNF med nogle ekstra elementer. [..] List af alternative elementer. * En sekvens af nul eller flere elementer. + En sekvens af en eller flere elementer. (..) En gruppe af elementer. BNF: ::= |  EBNF: ::= ( )*

Grammatik typer: Type 0 grammatik: Fri grammatik Type 1 grammatik: Context−sensitiv grammatik Type 2 grammatik: Context−fri grammatik Type 3 grammatik: Finit grammatik

Grammatik typer: Produktions regel Type-0 Ingen restriktioner. Type-1 Type-2 Type-3 og enten eller    a  a  a B

Parser træer Parsning er processen at aflede en sætning fra et startsymbol ved gentagende anvendelse af produktioner S -> AB A -> A x | y B -> z Sætning: yxxz S A A A yxx z B

Parser træer program -> stlist stlist-> statement stlist |  statement-> idT = exp ; exp -> exp + exp | exp – exp | exp * exp | exp / exp | intT | idT Sprog: v= 8; k= 3+5-7*v;

Right−most parsing udfolder parsertræet fra højre. Left−most parsning udfolder parsertræet fra venstre. S -> A B Left−most Right−most Left-most : Right-most afledning

Ambiguous (flertydig) grammatik Flere parsertræer for samme sætning: S -> A A A -> x | xx Sætning: xxx S AA xxx S AA xxx Flertydig mening Ikke konsistent compiler

Ækvivalent grammatik Samme sprog men ikke samme grammatik L(G) = L(G’) : G: A -> A x | y G’: A -> x B B -> x B |  A A Axx y A B yBx x  Forskellig mening.

Rekurtion Venstre rekursiv: A -> u | A v Fx: funklist-> funklist funktion |  Højre rekursiv: A -> u | v A Fx: funklist-> funktion funklist |  exp -> exp + exp | exp – exp | exp * exp | exp / exp Både højre og venstre rekursiv.

Rekurtion: Venstre til højre Venstre rekursiv: A -> u | A v Kan omskrives til: A -> u B B -> v B | 

Precedence og flertydig grammatik exp -> exp + exp | exp – exp | exp * exp | exp / exp | ( exp ) | intT | idT Sætning: 2+3*4 exp exp + exp exp * exp intT exp exp * exp exp + exp intT 4 2 3

Korrekt precedence exp-> term expB expB-> termopr term expB |  termopr-> + | - term-> factor termB termB-> factoropr factor termB |  factoropr-> * | / factor-> uopr exp | ( exp ) | intT | idT uopr-> - | 

Korrekt precedence: EBNF ::= (( “+” | “-” ) )* ::= (( “*” | “/” ) )* ::= | ”(“ “)” | | ::= “-” |  A=(b + (c - c)) + a * 3; statement IdT = exp ; term + termfactor( exp )term + termfactor ( exp ) term - term cc IdT b factor IdT factor * factor IdTIntT a 3 factor IdT

Left factoring A -> v w | v z Kan omskrives til: A -> v B B -> w | z