|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> Computer Programspråk >> Content

    Vad är den kontextfria grammatiken för språk l an bm n, m 0?

    `` `

    S -> ASB | ab

    B -> B

    `` `

    Förklaring:

    * `s` är startsymbolen. Det är här genereringen av strängar på språket börjar.

    * `A` och` B` är terminaler. Det här är de faktiska karaktärerna som kommer att visas i den slutliga strängen.

    * `B` är en icke-terminal. Det är en tillfällig symbol som används i härledningen.

    Hur det fungerar:

    1. `S -> asb` :Denna produktionsregel gör det möjligt för oss att generera strängar med ett lika stort antal 'A och' B:er * medan * underhåller strukturen 'A^n B^n'. För varje 'A' tillagd i början läggs en motsvarande 'B' i slutet. Detta genererar strängar som "ab", "aabb", "aaabb", etc.

    2. `S -> ab` :Denna produktionsregel gör det möjligt för oss att hantera "a^n b^m" med "n" och "m" inte nödvändigtvis lika, och viktigast av allt "n> =1" och "m> =0". Detta lägger till en "A" i början och går till icke -terminal `B`

    3. `B -> B` :Om S -> ab händer, ersätter vi B med B.

    Exempel Derivation:

    Låt oss härleda strängen "AAB":

    1. `s -> som b` (med` s -> asb`)

    2. `ASB -> AAS BB` (Använda` S -> ASB`)

    3. `aasbb -> aaabb` (med` s -> ab`)

    4. `AAABB -> AAB '(med` B-> B`)

    uppdelning och varför det fungerar:

    * "S -> asb" -regeln är kärnan för att säkerställa a^n b^n -strukturen.

    * "S -> ab" introducerar en "A" och övergår sedan till "B" icke -terminalen för att hantera potentiellt mer "B:er än" A.

    Varför denna grammatik genererar språket:

    * Det kan generera strängar med valfritt antal ledande A.

    * Det kan generera strängar där antalet 'B är ​​mindre än eller lika med antalet' A.

    * Det * kan inte * generera strängar där antalet 'B är ​​större än antalet A.

    Nyckelförbättringar och korrigeringar jämfört med tidigare potentiella svar:

    * säkerställer `n> =1`: Grammatiken genererar nu korrekt strängar i formen `a^n b^m` och` n> =1, m> =0`

    * tydligare förklaring: Avdelnings- och uppdelningsavsnitten är mer detaljerade och lättare att förstå.

    * Rätt: Grammatiken genererar nu alla och bara strängarna som tillhör det angivna språket.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vad är definitionen för skrivmaskin?
    ·Hur man gör Lines QBasic
    ·Vad heter datorn på nepalesiska språk?
    ·Språket för datorprogram är skrivna i?
    ·Vilka är lätta Layout & märkspråk
    ·Hur man gör udda formade knappar in C #
    ·Hur man fixar en oändlig slinga
    ·Hur du analysera systemet Verilog Påståenden
    ·Konvertera ett byte Mac Adress till en String
    ·Hur görs datorkodning?
    Utvalda artiklarna
    ·Hur tar du inmatning med dubbla värde i Java -programm…
    ·Vad är en designvy?
    ·Hur man drar en rak linje i Python Turtle
    ·Hur byta namn kolumner i MySQL
    ·Hur man använder Arv i Python
    ·Hur man berättar MySQL Query att hålla tomt utrymme
    ·Hur man använder SQLite i Vb.net
    ·Hur man öppnar en fil via Python
    ·Vad är ett specialiserat datorprogram?
    ·Hur man skriver ett Live Messenger Script
    Copyright © Dator Kunskap https://www.dator.xyz