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.
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.
- Kasutajaliides- sisaldab aadressiriba, tagasi- ja edasinuppe, järjehoidjate menüüd jne. See sisaldab kõiki elemente, välja arvatud aken, milles soovitud leht kuvatakse.
- Brauseri mehhanism– juhib interaktsiooni liidese ja kuvamooduli vahel.
- Kuva moodul- vastutab soovitud sisu kuvamise eest ekraanil. Näiteks kui taotletakse HTML-dokumenti, parsib renderdaja HTML- ja CSS-koodi ning kuvab tulemuse ekraanil.
- 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.
- 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.
- JavaScripti tõlk- kasutatakse JavaScripti koodi sõelumiseks ja täitmiseks.
- 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.
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
- Keele struktuurielemendid on avaldised, operandid ja operaatorid.
- Keel võib sisaldada suvalist arvu väljendeid.
- Avaldis on jada, mis koosneb operandist, operaatorist ja teisest operandist.
- Operaator on pluss- või miinusmärk.
- 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.
- Keel on "säästliku" iseloomuga.
- Brauseritel on sisseehitatud mehhanismid mõningate HTML-koodi levinud vigade käsitlemiseks.
- 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