See mäng kasutab teie brauseri kaasaegseid funktsioone. Brauserite mõiste, nende tüübid

Neile, kes jätkavad Interneti ja sellega seonduva mõistmist, räägime täna sellest, mis on brauser, milleks see on mõeldud, ning viime läbi ka väikese analüüsi tänapäeval populaarseimatest Interneti-brauseritest.

Mis on brauser ja milliseid funktsioone see täidab

Brauser (WEB-brauser) on programm, mis pakub Interneti-saitide sirvimist arvutiseadmetes ja vidinates. Brauseri olemus on kasutaja päringu töötlemine ja tema soovitud saidi allalaadimine Nüüd vaatame kiirelt, milliseid funktsioone brauser täidab.

Nagu eespool mainitud, on brauseri põhifunktsiooniks saitide veebilehtede avamine. Veebilehed ise koosnevad koodist, mille brauser tegelikult saab serverist, kus sait asub. Brauser töötleb seda koodi ja näete oma monitoril "valmis pilti". Et näha, mis sait tegelikult on - paremklõpsake näiteks kuskil saidi servas ja valige kontekstimenüüst üksus, mis kuvatakse "Vaata lähtekoodi" (või "Lehe lähtekoodi" või muud sarnast ). Õige lähtekood on brauseri jaoks väga oluline, kuna sellest sõltub saidi lehtede piisav kuvamine ja selle funktsioonide toimimine.

Brauserid võimaldavad teil salvestada saitide paroole, nii et iga kord, kui sisenete oma kontole teatud ressursi kaudu, ei pea te oma kasutajanime ja parooli uuesti sisestama. Kõik brauserid salvestavad ka teie erinevate saitide külastuste ajaloo, et saaksite vajadusel leida varem külastatud saidi. Noh, viimane asi, mida brauseri põhifunktsioonidest tasub märkida, on võimalus salvestada saite nende meeldejätmiseks ja kiireks juurdepääsuks järjehoidjatesse.

Lisaks veebilehtede endi avamisele võimaldavad brauserid teil saitidelt faile alla laadida, st brauser laadib need alla. See võib olla programmid, mängud, muusika ja muud failid.

Kaasaegsed brauserid toetavad valdavas enamuses erinevaid lisandmooduleid. Need täiendused võivad hõlmata järgmist: brauseri funktsioonide laiendused, informaatorid erinevatest ressurssidest, aga ka täiendused visuaalsete teemade kujul brauseri enda jaoks. Vaatleme neid üksikasjalikumalt:

  • Laiendused. Brauserilaiendite ilmekateks näideteks on viirusetõrjeprogrammide laiendused: bänneritõrje ja linkide kontrollimise moodul, mis kaitsevad kasutajaid pealetükkivate reklaamide eest ning kontrollivad ka ohtlikke linke ja saite.

  • Informaatorid. Informaatoreid tehakse ka laienduste kujul. Nagu nimigi ütleb, "teavitajad" - teavitavad. Kõige populaarsemad informaatorid on ilmateatajad, teavitajad uute kirjade, sõnumite jm saabumisest.

  • Visuaalsed teemad. Visuaalsed teemad võimaldavad muuta brauseri kujundust: vahekaarte, nuppe, taustapilte ja muid elemente.

Väärib märkimist, et arvutisse saab installida piiramatu arvu brausereid, samas kui üks neist peab olema peamine - vaikebrauser. Vaikebrauser on brauser, mis on määratud operatsioonisüsteemis peamiseks brauseriks; selle kaudu avanevad kõik lingid ja teenused, millele pääsete juurde teistest programmidest.

Vaatame nüüd täna kõige populaarsemaid brausereid.

Mis on brauserid?

Brauserite koguarvu on tänapäeval väga raske üles lugeda. Allpool tahame heita pilgu viiele populaarsemale brauserile, mida enamik Interneti-kasutajaid kasutab.


Internet Exploreri brauser

Internet Explorer on Windowsi operatsioonisüsteemiga kaasas olev standardbrauser. See tähendab, et pääsete Internet Exploreri kaudu kohe Internetti juurde. Me nimetasime Internet Explorerit esimeseks mitte sellepärast, et see oleks kõige populaarsem või parim, vaid sellepärast, et esialgu kasutavad seda kõik, vähemalt mõne teise brauseri allalaadimiseks. Muide, paljudes arvutite Interneti-ressurssides on nali: "Internet Explorer on programm, mille abil saate alla laadida hea brauseri."

Jah, igas naljas on mingi tõde ja nagu aru saate, ilmus see nali põhjusega. Fakt on see, et Internet Explorer (IE) pole meie arvates parim brauserivalik. Esiteks on see väga aeglane ja selle aeglus ei seisne mitte ainult programmi enda töös, vaid ka lehtede avamises. Teiseks avanevad IE veebilehed ise valesti, nagu tavainimestel öeldakse – "kõverad". Lisaks on Internet Explorer väga mittefunktsionaalne brauser ja mis kõige tähtsam, selle uuendatud versioonid ei kanna endas midagi radikaalselt uut ega aimugi sellest. IE-l ei ole laienduste integreerimise tuge ega toeta visuaalseid teemasid, mis muudab selle tänapäeval üsna marginaalseks.

Internet Exploreri brauserit kasutavad peamiselt algajad, kes ei tea, ei saa aru või ei saa tegelikult aru brauseri kontseptsioonist ja mis brausereid peale IE veel on. Enamasti ei kasuta teisi brausereid proovinud kasutajad enam kunagi Internet Explorerit, mistõttu soovitame installida mõni muu, õigemini hea brauser.

Internet Explorer ei vaja installimist, kuna see on integreeritud Windowsi operatsioonisüsteemi.


Google Chrome'i brauser

Endise NSV Liidu populaarseim brauser on Google Chrome (vene keel). Chrome on Google'i brauser, mis pole mitte ainult populaarne, vaid ka ilmselt parim. Muide, Chrome on üsna noor brauser, kuid samas on see mitmeaastase eksisteerimise jooksul võitnud suure fännide armee.

Tõenäoliselt on selle brauseri esimene eelis selle "kergus", mis seisneb nii programmi enda kui ka veebisaidi lehtede kiires avamises. See veebibrauser on hästi läbimõeldud, seega on seda väga mugav kasutada. Suur hulk funktsioone on ka Google Chrome'i brauseri tugevaks küljeks. Vaatame eraldi Chrome'i funktsionaalseid funktsioone.

Meie arvates on Google Chrome'i kõige olulisem funktsionaalne eelis brauseris olevate paroolide ja järjehoidjate sünkroonimine Google'i serveriga, tänu millele pääsete sisselogimise ja parooli sisestamisel pärast uuesti installimist ligi oma järjehoidjatele ja paroolidele. süsteemis või muudes vidinates. See on väga mugav, sest näiteks süsteemi uuesti installimisel pole seda nii keeruline uuesti installida, kuna kõiki külastatud saite ja nende paroole on raske meeles pidada. Ja Chrome'iga peate lihtsalt Google'i süsteemi sisse logima ning kõik teie järjehoidjad ja paroolid taastatakse. Samuti tasub Chrome'i funktsionaalsetest omadustest välja tuua võimalus installida laiendusi ja muuta kujundusstiili, mida Chrome'i veebipoes on palju ja seda tasuta. Noh, viimane asi, mida mainida, on nutikas aadressiriba, see tähendab, et aadressiribale (väljale, kuhu sisestate saidi aadressi) saate sisestada ka otsingupäringuid - see on universaalne ja mugav.

Chrome'i brauseri arvutisse allalaadimiseks minge aadressile "google.com/intl/et/chrome".


Mozilla Firefoxi brauser

Järgmine brauser, mida tahaksime kaaluda, on Mozilla Firefox. Mozilla Firefoxi brauser on eksisteerinud umbes 10 aastat ja on veebibrauserite seas üks vanumaid. Mozilla Firefoxi kasutavad saidi lehtede õige ja korrektse kuvamise tõttu peamiselt veebihaldurid ja edasijõudnud kasutajad.

Mazila (inglise Mozilla) funktsionaalsetest funktsioonidest tasub esile tõsta tohutul hulgal pistikprogramme (laiendusi), mille arv ületab suuresti Chrome'i laienduste valikut. Lisaks on Mazila Firefoxil võimalus muuta brauseri visuaalset stiili, mis tuleks samuti omistada eelistele.

Vaatamata kõigele sellele on Mozilla Firefox üsna "raske" brauser. Võrreldes teiste brauseritega võtab selle käivitamine veidi kauem aega ning mõnikord hangub ja aeglustub isegi üsna võimsas arvutis. Kui võrrelda Mozilla Firefoxi eelmainitud Chrome'iga, siis esimese miinuseks on järjehoidjate ja paroolide puudulik sünkroonimine. Seega, kui Mazila kasutamiseks pole erilist vajadust, on parem seda peamise brauserina mitte kasutada.

Mozilla Firefoxi brauseri saate alla laadida brauseri ametlikult veebisaidilt: "mozilla-russia.org".


Opera brauser

Opera brauser on brauserite seas aksakal, mis on eksisteerinud peaaegu 20 aastat. Opera brauser on üsna kerge ja mugav. Funktsionaalsetest funktsioonidest saab eristada vidinate ja pistikprogrammide tuge, kuid need pole laialdaselt rakendatud. Märkimist väärib funktsioon Turbo, mis võimaldab aeglase internetiühendusega lehti kiiremini laadida või liiklust kokku surudes kokku hoida, kuid reeglina on see funktsioon tänapäeval aktuaalne piiratud 3G internetitariifidega sülearvutite omanikele.

Opera brauserit analüüsides ei saa selle kohta midagi halba öelda, kuid raske on ka midagi head välja tuua. Meie arvates puudub Operal teatav karisma, mis eristaks seda ülaltoodud brauseritest nagu Mozilla Firefox ja Google Chrome.

Opera brauseri saate alla laadida selle avalehelt: "opera.com/ru".


Ja lõpuks tuleks öelda viienda brauseri kohta, mis meie arvates väärib oma kohta meie esiviisikus. Yandex.Browser on meie loendis viimane, kuid mitte viimane. Kuigi Internet Explorer on esimene mainitud, pole see kaugeltki liider ja võib-olla isegi autsaider meie populaarseimate brauserite loendis.

Mis puutub Yandexi brauserisse, siis see on Yandexi välja töötatud noorim brauser. See brauser on eksisteerinud vaid umbes aasta, kuid vaatamata uudsusele kogub see kiiresti oma vaatajaskonda. Ilmselt tahtis Yandex(-y) midagi tõsisemat kui oma Yandex.Bari (nende teenuste lisandmoodul) obsessiivne integreerimine teistesse brauseritesse, mistõttu otsustasid ettevõtte arendajad luua oma täieõigusliku brauseri. Yandex.Browserit on mõnevõrra raske nimetada meie omaks, kuna see on sama Chrome, veidi ümber kujundatud disaini ja mõne täiendavalt rakendatud funktsiooniga. Üks neist lisavõimalustest on Opera brauserist laenatud funktsioon Turbo. Analüüsime Yandex.Browserit üksikasjalikumalt.

Yandexi brauser on tehtud Chrome'iga samal mootoril, seega on neil sarnane välimus ja sarnane funktsionaalsus. Yandex.Browseri uued versioonid pakuvad nüüd võimalust sünkroonida oma paroole ja järjehoidjaid Yandexi serveriga. Yandexi brauser võimaldab teil installida ka laiendusi, kuid need tuleb installida käsitsi, kuna Yandexil pole lisandmoodulite allalaadimiseks oma poodi. Väärib märkimist, et taustapilti on võimalik seadistada, kuid kahjuks pole brauseris navigeerimisriba tausta muutmise võimalust. Kuid on olemas mugav "Tulemustabel" - saidiikoonidega paneel nende kiireks avamiseks, mis on väga originaalne ja mugav. Võite märkida ka võimaluse otsida päringut erinevatest otsingumootoritest selle brauseri "nutiliini" kaudu, valides allpool soovitud otsingumootori.

Kokkuvõttes võime kindlalt öelda, et Yandex.Browser on sama Chrome, kuid keskendub rohkem SRÜ-s elavatele vene keelt kõnelevatele kasutajatele. Kui otsustate Yandex.Browser'i eemaldada, siis .

Brauseri allalaadimiseks Yandexist minge selle ametlikule lehele: "browser.yandex.ru".

Millist brauserit valida?

Oleks vale anda ühemõtteline ja kategooriline vastus küsimusele: millist brauserit valida. Igal brauseril on oma eelised ja puudused, samuti oma omadused, nii et iga kasutaja jaoks on "tema" brauser parim. Näiteks eelistab keegi Chrome'i brauserit selle lihtsuse, paroolide ja järjehoidjate Google'iga integreerimise tõttu, keegi aga Mozilla Firefoxi selle tohutu hulga erinevate lisandmoodulite tõttu. Hoolimata asjaolust, et kõik brauserid on ülesehituselt ühesugused, on neil oma visuaalsed erinevused, mis neid üksteisest märkimisväärselt eristab. Selleks, et otsustada, millist brauserit valida ja milline neist on teie jaoks parim, peate oma otsuse tegemiseks proovima neid kõiki.

Teie brauser ei pruugi selles artiklis kirjeldatud funktsioone toetada.

ForEach.call(document.querySelectorAll("päis .kuupäev a"), function(element, i) ( elem.textContent += " (" + ["autor","toimetaja"][i] + ")"; ) );

Eessõna

See üksikasjalik juhend WebKiti ja Gecko sisemise toimimise kohta on Iisraeli veebiprogrammeerija Tali Garcieli ulatusliku uurimistöö tulemus. Ta on juba mitu aastat jälginud kogu avaldatud teavet brauserite töötamise kohta (vt jaotist ) ja pühendanud palju aega nende lähtekoodi analüüsimisele. Tali ise kirjutab siit:

Kui IE installiti 90%-le arvutitest, tuli leppida tõsiasjaga, et tegemist oli salapärase "musta kastiga", kuid nüüd, kus enam kui pooled kasutajad valivad avatud lähtekoodiga brauserid, on aeg välja mõelda, mis on peidetud nende sees, miljonites ridades tarkvara. C++ kood...
Tali avaldas uuringu tulemused oma veebilehel, kuid usume, et need väärivad laiema publiku tähelepanu, seega postitame need siia koos mõningate lühenditega.

Veebiarendaja, kes on kursis brauserite sisemise tööga, teeb paremaid otsuseid ja mõistab, miks üht või teist valida. See on üsna pikk dokument, kuid soovitame teil see võimalikult hoolikalt läbi lugeda ja garanteerida, et te ei kahetse seda. Paul Irish, Chrome'i arendajasuhted

Sissejuhatus

Veebibrauserid on ehk kõige levinumad rakendused. Selles õpetuses selgitan, kuidas need töötavad. Vaatame üksikasjalikult, mis juhtub alates hetkest, kui sisestate aadressiribale google.ru, kuni Google'i lehe ilmumiseni ekraanile.

Milliseid brausereid me kaalume

Tänapäeval on viis peamist brauserit: Internet Explorer, Firefox, Safari, Chrome ja Opera. Näidetes kasutatakse avatud lähtekoodiga brausereid: Firefox, Chrome ja Safari (kood on osaliselt avatud). 2011. aasta augusti seisuga olid Firefoxi, Safari ja Chrome'i brauserid installitud kokku 60% seadmetesse, selgub StatCounteri brauseri kasutamise statistikast. Seega on avatud lähtekoodiga brauseritel täna väga tugev positsioon.

Brauseri põhifunktsioonid

Brauseri põhieesmärk on veebiressursside kuvamine. Selleks saadetakse serverile päring ja tulemus kuvatakse brauseriaknas. Ressursid on enamasti HTML-dokumendid, kuid need võivad olla ka PDF-failid, pildid või muu sisu. Ressursi asukoht määratakse URI (Uniform Resource Identifier) ​​abil.

See, kuidas brauser HTML-faile töötleb ja kuvab, on määratletud HTML-i ja CSS-i spetsifikatsioonidega. Need on välja töötanud konsortsium W3C, mis rakendab Interneti-standardeid.
Paljude aastate jooksul vastasid brauserid ainult osa spetsifikatsioonidest ja nende jaoks loodi eraldi laiendused. Veebiarendajate jaoks tähendas see tõsiseid ühilduvusprobleeme. Enamik brausereid vastab tänapäeval suuremal või vähemal määral kõikidele spetsifikatsioonidele.

Erinevate brauserite kasutajaliidestel on palju ühist. Allpool on loetletud brauseri liidese peamised elemendid.

  • Aadressiriba URI sisestamiseks
  • Navigeerimisnupud "Tagasi" ja "Edasi"
  • Järjehoidjad
  • Lehekülje laadimise värskendamise ja peatamise nupud
  • Avalehe nupp avalehele minemiseks

Kummalisel kombel pole ühtegi spetsifikatsiooni, mis määratleks brauseri kasutajaliidese standardid. Kaasaegsed liidesed on paljude aastate evolutsiooni tulemus, aga ka asjaolu, et arendajad kopeerivad üksteist osaliselt. HTML5 spetsifikatsioon ei täpsusta täpselt, mida brauseri liides peaks sisaldama, kuid see loetleb mõned põhielemendid. Nende hulka kuuluvad aadressiriba, olekuriba ja tööriistariba. Muidugi on ka spetsiifilisi funktsioone, näiteks allalaadimishaldur Firefoxis.

Tipptasemel struktuur

Brauseri () põhikomponendid on loetletud allpool.

  1. Kasutajaliides- sisaldab aadressiriba, tagasi- ja edasinuppe, järjehoidjate menüüd jne. See sisaldab kõiki elemente, välja arvatud aken, milles soovitud leht kuvatakse.
  2. Brauseri mehhanism– juhib interaktsiooni liidese ja kuvamooduli vahel.
  3. Kuva moodul- vastutab soovitud sisu kuvamise eest ekraanil. Näiteks kui taotletakse HTML-dokumenti, parsib renderdaja HTML- ja CSS-koodi ning kuvab tulemuse ekraanil.
  4. Võrgukomponendid– mõeldud võrgukõnede (nt HTTP-päringute) tegemiseks. Nende liides ei sõltu platvormi tüübist, millest igaühel on oma rakendused.
  5. Kasutajaliidese täidesaatev osa- kasutatakse põhiliste vidinate (nt akende ja liitkastide) joonistamiseks. Selle üldine liides ei sõltu ka platvormi tüübist. Täitmise osa rakendab alati konkreetse operatsioonisüsteemi kasutajaliidese meetodeid.
  6. JavaScripti tõlk- kasutatakse JavaScripti koodi sõelumiseks ja täitmiseks.
  7. Andmesalv- vajalik protsesside püsimiseks. Brauser salvestab kõvakettale erinevat tüüpi andmeid, näiteks küpsiseid. Uus HTML-i spetsifikatsioon (HTML5) määratleb termini "veebiandmebaas": see on täielik (kuigi kerge) brauseripõhine andmebaas.
Joonistamine . Brauseri põhikomponendid.

Tuleb märkida, et erinevalt enamikust brauseritest kasutab Chrome mitut kuvamooduli eksemplari, üks igal vahekaardil, mis on eraldi protsessid.

Kuva moodul

Nagu nimigi ütleb, vastutab kuvamoodul soovitud sisu kuvamise eest brauseri ekraanil.

Vaikimisi on see võimeline kuvama HTML- ja XML-dokumente ning pilte. Spetsiaalsed lisandmoodulid (brauserilaiendid) võimaldavad kuvada muud sisu, näiteks PDF-faile. See peatükk keskendub aga põhifunktsioonidele: HTML-dokumentide ja CSS-stiilidega vormindatud piltide kuvamisele.

Kuva moodulid

Meid huvitavad brauserid (Firefox, Chrome ja Safari) kasutavad kahte renderdajat. Firefox kasutab Mozilla enda Geckot, samas kui Safari ja Chrome kasutavad WebKiti.

WebKit on avatud lähtekoodiga kuvamoodul, mis töötati algselt välja Linuxi platvormi jaoks ja mille Apple kohandas Mac OS-i ja Windowsi jaoks. Üksikasjad leiate veebisaidilt webkit.org.

Põhiline tööskeem

Kuvamoodul hangib nõutud dokumendi sisu võrgukihi protokolli kaudu, tavaliselt 8 KB tükkidena.

Kuvamooduli edasise töö skeem on järgmine.

Joonistamine . Kuvamooduli skeem.

Renderdaja parsib HTML-dokumendi ja tõlgib sildid sisupuu sõlmedesse. Stiiliteave hangitakse nii välistest CSS-failidest kui ka stiilielementidest. Seda teavet ja kuvamisjuhiseid HTML-failis kasutatakse teise puu loomiseks - .

See sisaldab ristkülikuid visuaalsete atribuutidega, nagu värv ja suurus. Ristkülikud on paigutatud sellisesse järjekorda, nagu neid tuleks ekraanil kuvada.

Kui kuvapuu on loodud, algavad elemendid, mille käigus määratakse igale sõlmele selle punkti koordinaadid ekraanil, kuhu see peaks ilmuma. Seejärel käivitatakse , kus kuvapuu sõlmed joonistatakse järjestikku, kasutades kasutajaliidese esiosa.

Oluline on mõista, et see on järjestikune protsess. Kasutaja mugavuse huvides püüab renderdaja sisu võimalikult kiiresti renderdada, et renderduspuu ja paigutus saaks alata enne HTML-koodi sõelumist. Mõned dokumendi osad sõelutakse ja kuvatakse, teised aga edastatakse ainult võrgu kaudu.

Näited töödest

Joonistamine . WebKiti renderdusmooduli skemaatiline diagramm. Joonistamine . Mozilla Gecko kuvamooduli skeem ().

Nagu näete joonistelt 3 ja 4, kasutavad WebKit ja Gecko erinevat terminoloogiat, kuid nende tööviis on peaaegu identne.

Geckos nimetatakse visuaalselt vormindatud elementide puud raamipuuks, milles iga element on raam. WebKit kasutab renderduspuu, mis koosneb renderdusobjektidest. Elementide paigutust WebKiti nimetatakse paigutuseks või paigutuseks (paigutus) ja Geckos - mähkimiseks (reflow). DOM-i sõlmede ja visuaalsete atribuutide kombineerimist kuvapuu loomiseks nimetatakse WebKiti manusteks. Väike erinevus Geckos, millel pole semantikaga mingit pistmist, on see, et HTML-faili ja DOM-puu vahel on veel üks kiht. Seda nimetatakse sisuvalamuks ja seda kasutatakse DOM-i elementide moodustamiseks. Nüüd räägime igast tööetapist üksikasjalikumalt.

Parsimine: üldine teave

Kuna sõelumine on kuvamooduli töö oluline etapp, käsitleme seda üksikasjalikumalt. Alustame lühikese sissejuhatusega.

Dokumendi sõelumine tähendab selle teisendamist loetavaks ja käivitatavaks struktuuriks. Parsimise tulemuseks on tavaliselt dokumendi struktuuri esindav sõlmede puu. Seda nimetatakse parsipuuks või lihtsalt parsipuuks.

Näiteks võib avaldise 2 + 3 - 1 sõelumine anda tulemuseks järgmise puu:

Joonistamine . Puusõlm matemaatilise avaldise jaoks.

Grammatika

Parsimine töötab teatud reeglite alusel, mille määrab dokumendi keel (vorming). Iga vormingu jaoks on grammatilised reeglid, mis koosnevad sõnavarast ja süntaksist. Need moodustavad nn. . Loomulikud keeled ei järgi kontekstivaba grammatika reegleid, seega standardsed parsimistehnikad neile ei sobi.

Süntaktilised ja leksikaalsed analüsaatorid

Koos süntaktilise analüüsiga kasutatakse leksikaalanalüüsi.

Leksikaalne analüüs on teabe jagamine märkideks ehk lekseemideks. Märgid moodustavad konkreetse keele sõnavara ja on dokumentide loomise ehitusplokid. Loomulikus keeles oleksid märgid kõik sõnad, mida sõnaraamatutest võib leida.

Parsimise mõte on rakendada keele süntaksireegleid.

Dokumendi sõelumine toimub tavaliselt kahe komponendi abil: leksikaalne analüsaator, mis parsib sisendmärgijada tõelisteks märkideks ja parser, mis analüüsib antud keele süntaktiliste reeglite järgi dokumendi struktuuri ja moodustab süntaksipuu. Parser ignoreerib mitteinformatiivseid märke, nagu tühikud ja reavahetused.

Joonistamine . Üleminek lähtedokumendilt süntaksipuule.

Parsimine on iteratiivne protsess. Tavaliselt küsib parser leksikaalilt uut tunnust ja kontrollib, kas see vastab mõnele süntaksireeglile. Kui leitakse sobivus, luuakse süntaksipuus märgi jaoks uus sõlm ja parser küsib järgmist märki.

Kui märk ei vasta ühelegi reeglile, lükkab parser selle edasi ja küsib rohkem märke. See jätkub, kuni leitakse reegel, et kõik ootel olevad märgid ühtivad. Kui sellist reeglit ei leita, teeb parser erandi. See tähendab, et dokument sisaldab süntaksivigu ja seda ei saa täielikult töödelda.

Tõlge

Süntaksipuu ei ole alati lõpptulemus. Parsimist kasutatakse sageli sisenddokumendi soovitud vormingusse tõlkimise protsessis. Kompileerimine on näide. Lähtekoodi masinkoodiks tõlgiv kompilaator analüüsib selle esmalt ja moodustab süntaksipuu ning alles seejärel loob selle puu põhjal masinkoodiga dokumendi.

Joonistamine . koostamise sammud.

Parsimise näide

Joonisel 5 on kujutatud matemaatilise avaldise alusel ehitatud süntaksipuud. Defineerime elementaarse matemaatilise keele ja vaatleme parsimise protsessi.

Sõnavara: meie keel võib sisaldada täisarve, pluss- ja miinusmärke.

Süntaks

  1. Keele struktuurielemendid on avaldised, operandid ja operaatorid.
  2. Keel võib sisaldada suvalist arvu väljendeid.
  3. Avaldis on jada, mis koosneb operandist, operaatorist ja teisest operandist.
  4. Operaator on pluss- või miinusmärk.
  5. Operand on kas täisarv või avaldis.

Vaatleme sisendmärgijada 2 + 3 - 1 .
Esimene element, mis reeglile vastab, on 2 (vastavalt reeglile nr 5 on see operand). Teine selline element on 2 + 3 (operandist, operaatorist ja teisest operandist koosnev jada on defineeritud reegliga #3). Järgmise vastavuse leiame päris lõpust: jada 2 + 3 - 1 on avaldis. Kuna 2+3 on operandi, saame jada, mis koosneb operandist, operaatorist ja teisest operandist, mis ühtib avaldise definitsiooniga. Rida 2++ ei vasta reeglitele, seega loetakse see kehtetuks.

Sõnavara ja süntaksi formaalne määratlus

Ülaltoodud näite keelt saab määratleda järgmiselt:

TÄISARV:0|* PLUSS: + MIINUS: - Nagu näete, on täisarvud defineeritud regulaaravaldisega.

Süntaksit kirjeldatakse tavaliselt BNF-vormingus. Ülaltoodud näite keelt saab kirjeldada järgmiselt:

Avaldis:= termin tehe termin operatsioon:= PLUSS | miinus termin:= TÄISARV | väljendus

Nagu juba mainitud, saab keelt töödelda standardsete parserite abil, kui see on grammatika kontekstivaba, see tähendab, et seda saab täielikult väljendada BNF-vormingus. Kontekstivaba grammatika ametliku määratluse leiate sellest Vikipeedia artiklist.

Parserite tüübid

Parsereid on kahte tüüpi: ülalt alla ja alt üles. Esimesed teostavad analüüsi ülalt alla ja teised alt üles. Ülalt-alla sõelujad sõeluvad ülemise taseme struktuuri ja otsivad vasteid süntaksireeglitele. Alt-üles parserid töötlevad esmalt sisendmärkide jada ja paljastavad selles järk-järgult süntaktilised reeglid, alustades alumise taseme reeglitest ja lõpetades ülemise taseme reeglitega.

Nüüd vaatame, kuidas need kahte tüüpi parserid meie näitega hakkama saaksid.

Ülalt-alla parser alustab ülataseme reegliga ja määrab, et 2 + 3 on avaldis. Seejärel määraks see kindlaks, et 2 + 3 - 1 on samuti avaldis (avaldiste defineerimise käigus leitakse ka vasteid teistele reeglitele, kuid esimesena võetakse alati arvesse tipptaseme reeglit).

Alt-üles parser töötleks märgijada seni, kuni leiab sobiva reegli, mis suudab leitud fragmendi asendada ja nii kuni jada lõpuni. Osalise vastega avaldised paigutatakse parserivirna.

Sellise parseri käivitamisel nihutatakse sisendmärkide jada paremale (kujutagem ette kursorit, mis asetatakse jada algusesse ja nihutatakse sõelumise ajal paremale) ja taandatakse järk-järgult süntaktiliste reegliteni.

Parserite automaatne genereerimine

Parserite loomiseks on olemas spetsiaalsed rakendused, mida nimetatakse generaatoriteks. Piisab, kui laadite generaatorisse keele grammatika (sõnavara ja süntaktilised reeglid) ja see loob automaatselt analüsaatori. Parseri loomine nõuab selle toimimise sügavat mõistmist ja käsitsi tegemine pole nii lihtne, seega võivad generaatorid olla üsna kasulikud.

DOM

Saadud süntaksipuu koosneb DOM-i elementidest ja atribuudisõlmedest. DOM tähistab Document Object Model ja seda kasutatakse HTML-dokumendi ja HTML-i elementide liidese esitamiseks välistele objektidele, näiteks JavaScripti koodile.
Puu juurtes on Dokumendi objekt.

DOM on peaaegu identne märgistusega. Mõelge märgistuse näitele:

Tere, Maailm



Selle märgistuse DOM-puu näeb välja selline: Joonis . Näite märgistuse DOM-puu.

Mõiste "puu sisaldab DOM-i sõlme" tähendab, et puu koosneb elementidest, mis rakendavad ühte DOM-i liidest. Brauserid kasutavad konkreetseid rakendusi, millel on sisekasutuseks täiendavad atribuudid.

Parsimise algoritm

Nagu eelmistes jaotistes kirjeldatud, ei saa HTML-koodi sõeluda standardsete alla- või allavoolu parserite abil.

Selle põhjused on loetletud allpool.

  1. Keel on "säästliku" iseloomuga.
  2. Brauseritel on sisseehitatud mehhanismid mõningate HTML-koodi levinud vigade käsitlemiseks.
  3. Parsimise tsüklit iseloomustab taassisenemise võimalus. Algdokument tavaliselt parsimise käigus ei muutu, kuid HTML-i puhul võivad document.write'i sisaldavad skriptisildid lisada uusi märke, mistõttu võib lähtekood muutuda.

Kuna standardsed parserid HTML-i jaoks ei sobi, loovad brauserid oma parserid.

Sõelumisalgoritm on üksikasjalikult kirjeldatud HTML5 spetsifikatsioonis. See koosneb kahest etapist: leksikaalne analüüs ja puu ehitamine.

Leksikaalse analüüsi käigus jagatakse sisendmärkide jada märkideks. HTML-märgid sisaldavad algus- ja lõpumärgendeid, aga ka atribuutide nimesid ja väärtusi.

Leksikaalne analüsaator leiab märgi, edastab selle puukonstruktorile ja liigub edasi järgmise märgi juurde, otsides rohkem märke, kuni sisestusjada lõpuni.

Joonistamine . HTML-koodi sõelumise etapid (allikas: HTML5 spetsifikatsioon).

Leksikaalse analüüsi algoritm

Algoritmi tulemuseks on HTML-märk. Algoritmi väljendatakse lõpliku arvu olekutega automaatina. Igas olekus töödeldakse ühte või mitut sisendjada märki, mille alusel määratakse järgmine olek. See sõltub leksikaalse analüüsi staadiumist ja puu moodustamise staadiumist, st sama märgi töötlemine võib olenevalt hetkeseisust viia erinevate tulemusteni (erinevad olekud). Algoritm on piisavalt keeruline, et seda siin üksikasjalikult kirjeldada, seega vaatame lihtsustatud näidet, mis aitab meil selle toimimist paremini mõista.

Analüüsime leksikaalselt lihtsat HTML-koodi:

Tere, Maailm

Algseisund on "andmed". Kui parser kohtab sümbolit< , состояние меняется на "ava silt". Kui järgmisena kohtate tähte (a–z), luuakse algussildi tunnus ja olek muutub "sildi nimi". See püsib seni, kuni kohtatakse märki >. Sümbolid lisatakse uue märgi nimele ükshaaval. Meie puhul saadakse html-märk.

Kui sümbol > leitakse, loetakse märk valmis ja analüsaator naaseb olekusse "andmed". Tag töödeldakse täpselt samal viisil. Seega on parser juba genereerinud html- ja kehasildid ning naasnud olekusse "andmed". H-tähe leidmine fraasis Tere maailm viib märgimärgi genereerimiseni. Sama juhtub ka ülejäänud tähtedega, kuni analüsaator jõuab sümbolini< в теге

. Tere maailma fraasi iga tegelase jaoks luuakse märk.

Seejärel naaseb analüsaator olekusse "ava silt". Tähemärgi / tuvastamine viib sulgemismärgise loomise ja olekusse üleminekuni "sildi nimi". See püsib seni, kuni kohtatakse märki >. Sel hetkel genereeritakse uus sildimärk ja analüsaator naaseb olekusse "andmed". Tegelaste järjestus töödeldud ülalkirjeldatud viisil.

Joonistamine . Märkide sisestusjada leksikaalne analüüs.

Puu ehitamise algoritm

Parseri loomisel genereeritakse Dokumendi objekt. Ehitusfaasis muudetakse DOM-puud, mille juurtes see objekt asub, ja lisatakse sellele uusi elemente. Iga lekseri genereeritud sõlme töötleb puukonstruktor. Igal märgil on spetsifikatsiooniga määratletud oma DOM-element. Elemente lisatakse mitte ainult DOM-puule, vaid ka avatud elementide virnale, mis aitab parandada valesti pesastatud või sulgemata silte. Algoritmi väljendatakse ka lõpliku arvu olekutega automaatina, mida nimetatakse "sisestusrežiimideks".

Mõelge puu loomise etappidele järgmise koodilõigu jaoks:

Tere, Maailm

Puu ehitamise etapi alguses on meil leksikaalse analüüsi tulemusena saadud märkide jada. Esimest olekut nimetatakse esialgne. html-märgi saamisel muutub olek olekuks "html-ile", mille järel luba selles olekus uuesti töödeldakse. See loob elemendi HTMLHtmlElement, mis lisatakse juurdokumendi objektile.

Olek muutub "üle pea". Parser tuvastab kehamärgi. Kuigi meie koodis head silti pole, luuakse automaatselt HTMLHeadElement element ja lisatakse see puusse.

Olek muutub "pea sees", siis edasi "pärast pead". Kehamärk sõelutakse uuesti, luuakse HTMLBodyElement ja lisatakse see puusse ning olek muutub "keha sees".

Nüüd on käes Hello world stringimärkide kord. Esimese leidmine viib tekstisõlme loomise ja sisestamiseni, millele seejärel lisatakse ülejäänud märgid.

Sulgeva kehamärgi kättesaamisel muutub olek olekuks "järelkeha". Kui parser jõuab sulgeva html-märgendini, muutub olek olekuks "pärast keha". Kui faililõpu tunnus on vastu võetud, sõelumine lõpeb.

Joonistamine . Näite põhjal HTML-koodi jaoks puu loomine.

Toimingud pärast sõelumist

Sel hetkel märgib brauser dokumendi interaktiivseks ja alustab edasilükatud skriptide sõelumist, mis tuleb käivitada pärast dokumendi sõelumise lõpetamist. Seejärel muudetakse dokumendi olekuks "valmis" ja laadimissündmus käivitatakse.

Vaatame mõnda näidet.
Leksikaalne grammatika (sõnastik) on määratletud iga märgi regulaaravaldistega:

Kommentaar \/\*[^*]*\*+([^/*][^*]*\*+)*\/ num +|*"."+ nonascii [\200-\377] nmstart [_a -z]|(nonascii)|(escape) nmchar [_a-z0-9-]|(nonascii)|(pao)nimi (nmchar)+ ident (nmstart)(nmchar)*

Identifikaator on identifikaator, mida kasutatakse klassi nimena. Nimi on id-element ja sellele viidatakse naelamärgi (#) abil.

Süntaksireeglid on kirjeldatud BNF-vormingus.

Reeglikogum: valija [ "," S* valija ]* "(" S* deklaratsioon [ ";" S* deklaratsioon ]* ")" S* ; valija: simple_selector [ kombineerija valija | S+ [ kombinaator? valija]? ]? ; simple_selector: elemendi_nimi [ HASH | klass | attrib | pseudo ]* | [ HASH | klass | attrib | pseudo ]+ ; klass: "." IDENT ; elemendi_nimi: IDENT | "*"; attrib: "[" S* IDENT S* [ [ "=" | KAASA | DASHMATCH ] S* [ IDENT | STRING ] S* ] "]" ; pseudo: ":" [ IDENT | FUNKTSIOON S* ")" ] ; Reeglikomplekt on allpool kirjeldatud struktuur. div.error , a.error ( color:red; font-weight:bold; ) Div.error ja a.error elemendid on valijad. Selle komplekti kehtivad reeglid on ümbritsetud lokkis traksidega. Vormiliselt on see struktuur defineeritud järgmiselt: reeglistik: valija [ "," S* valija ]* "(" S* deklaratsioon [ ";" S* deklaratsioon ]* ")" S* ; See tähendab, et reeglistik toimib valijana või mitme koma ja tühikutega eraldatud valijana (S tähistab tühikut). Reeglikomplekt sisaldab ühte või mitut semikooloniga eraldatud deklaratsiooni. Need on ümbritsetud lokkis traksidega. Mõistete "deklaratsioon" ja "valija" määratlused on esitatud allpool.

CSS-i parser WebKitis

WebKit kasutab generaatoreid CSS-i parserite automaatseks genereerimiseks. Nagu juba mainitud, kasutatakse Bisonit alt-üles parserite loomiseks, mille käigus nihutatakse sisendmärgijada paremale. Firefox kasutab Mozilla välja töötatud ülalt-alla parserit. Mõlemal juhul sõelutakse CSS-fail CSS-i reegleid sisaldavateks stiililehe objektideks. CSS-i reeglite objekt sisaldab valijat ja deklaratsiooni, aga ka muid CSS-i grammatikale omaseid objekte.

Joonistamine . CSS-i sõelumine.

Skriptide ja stiililehtede tellimuste töötlemine

Skriptid

Veebidokumendid järgivad sünkroonmudelit. Skriptid tuleb sõeluda ja käivitada kohe, kui analüsaator sildi tuvastab