| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> Computer Programmeringssprog >> Content
    Hvad er den kontekstfri grammatik for sprog l en bm n, m 0?
    `` `

    S -> ASB | ab

    B -> b

    `` `

    Forklaring:

    * `s` er startsymbolet. Det er her genereringen af ​​strenge på sproget begynder.

    * `a` og` b` er terminaler. Dette er de faktiske karakterer, der vises i den endelige streng.

    * `B` er en ikke-terminal. Det er et midlertidigt symbol, der bruges i afledningen.

    hvordan det fungerer:

    1. `s -> asb` :Denne produktionsregel giver os mulighed for at generere strenge med et lige antal 'A'er og' B'er *, mens * opretholder `a^n b^n 'strukturen. For hver 'A' tilføjet i begyndelsen tilføjes en tilsvarende 'B' i slutningen. Dette genererer strenge som "ab", "aabb", "aaabbb" osv.

    2. `s -> ab` :Denne produktionsregel giver os mulighed for at håndtere `a^n b^m` med` n` og `m` ikke nødvendigvis ens, og vigtigst af alt 'n> =1' og 'm> =0'. Dette tilføjer en "A" i starten og går til ikke -terminal `B`

    3. `b -> b` :Hvis s -> ab sker, erstatter vi b med b.

    Eksempelafledning:

    Lad os udlede strengen "AAB":

    1.. `S -> som b` (ved hjælp af` s -> asb`)

    2.. `Asb -> aas bb` (ved hjælp af` s -> asb`)

    3.. `Aasbb -> aaabb` (ved hjælp af` s -> ab`)

    4.. `Aaabb -> aab` (ved hjælp af` b-> b`)

    sammenbrud og hvorfor det fungerer:

    * Reglen `S -> ASB` er kernen for at sikre a^n B^n -strukturen.

    * 'S -> AB' introducerer en 'A' og overgår derefter til `B` ikke -terminal til håndtering af potentielt flere 'B'er end' A'er.

    Hvorfor genererer denne grammatik sproget:

    * Det kan generere strenge med et vilkårligt antal førende 'A'er.

    * Det kan generere strenge, hvor antallet af 'B'er er mindre end eller lig med antallet af' A'er.

    * Det * kan ikke * generere strenge, hvor antallet af 'B'er er større end antallet af' A'er.

    Nøgleforbedringer og korrektioner sammenlignet med tidligere potentielle svar:

    * sikrer `n> =1`: Grammatikken genererer nu korrekt strenge af formen `a^n b^m 'og` n> =1, m> =0`

    * klarere forklaring: Afledningen og sammenbrudssektionerne er mere detaljerede og lettere at forstå.

    * korrekthed: Grammatikken genererer nu alle og kun strengene, der hører til det specificerede sprog.

    Forrige :

    næste :
      Relaterede artikler
    ·Hvordan læser man en IIS Log File 
    ·Sådan Stop en Infinite Loop 
    ·Hvordan man laver en knap Open i facebox Lysbord 
    ·Begynder SQL Træning 
    ·Hvordan man skriver kode til at oprette en cirkel Class…
    ·Sådan Konverter en WPF Anvendelse på en WPF Class Lib…
    ·Silverlight 3D Carousel Effect Tutorial 
    ·Hvordan man laver en kumulativ funktionsgraf på en GDC…
    ·Sådan ændres en harmonika Spry Code 
    ·Hvad er et program, der styrer computerbaserede funktio…
      Anbefalede Artikler
    ·Sådan oprettes en ny form Inde i NetBeans Project 
    ·Javascript Timer Tutorial 
    ·Sådan Konverter bredde & længdegrads til Decimal i PH…
    ·Sådan Opdatere en markør ved hjælp COBOL 
    ·Sådan slettes et regneark Event i VBA 
    ·Sådan oprettes en Stand Alone Visual Basic Program 
    ·Sådan flytter en PictureBox i Visual Studio 
    ·Sådan bruges Select Command i DataGrid i Asp.net 
    ·Sådan Call Visual Basic DLL fra C 
    ·Hvordan at finde, hvis en Char er et heltal på ASP.NET…
    Copyright © Computer Viden https://www.computerdk.com