Teknobench

Iniúchóir AST JavaScript

Greamaigh JavaScript agus iniúch a chrann comhréire teibí (ESTree, parsáilte ag Acorn) i do bhrabhsálaí. Cliceáil nóid agus easpórtáil an AST mar JSON.

Cineál foinse
Nóid
–
Doimhneacht uasta
–
Ráitis ar an leibhéal barr
–
Crann comhréire

Cliceáil nód chun a chód a roghnú. Cliceáil nó bog an cúrsóir sa chód chun a nód a aimsiú.

    Nód roghnaithe

    Roghnaigh nód sa chrann nó cliceáil sa chód.

    JSON ESTree

    Conas AST JavaScript a iniúchadh

    1. Greamaigh do chód isteach in Cód JavaScript, nó cliceáil Lódáil an sampla chun tosú ó mhodúl beag.
    2. Roghnaigh an Cineál foinse: Modúl (import/export, mód docht) do mhodúil ES, nó Script (clasaiceach) do scripteanna coitianta a fhéadann gnéithe de mhód neamhdhocht a úsáid, mar with.
    3. Nuashonraítear an crann nóiméad gearr tar éis duit éirí as clóscríobh. Cliceáil Parsáil chun é a rith láithreach.
    4. Sa Crann comhréire, cliceáil an tsaighead bheag chun nód a leathnú nó a laghdú. Cliceáil ainm nóid chun an cód comhfhreagrach a roghnú san eagarthóir; taispeánann an painéal Nód roghnaithe a chineál, an mhaoin lena mbaineann sé, a raon carachtar, a líne agus a cholún, a mhaoine simplí (ainm, oibreoir, luach amh…) agus a théacs foinseach.
    5. Oibríonn sé sa treo eile freisin: cliceáil in áit ar bith sa chód, bog an cúrsóir leis an méarchlár nó roghnaigh píosa cóid, agus leathnaítear agus aibhsítear sa chrann an nód is doimhne a bhfuil sé ann.
    6. Oscail JSON ESTree chun an crann iomlán a fheiceáil mar JSON, le Cuir suímh san áireamh (start, end, loc) nó é as, agus ansin Cóipeáil é nó Íoslódáil JSON.

    Taispeánann na áiritheoirí líon na Nóid, Doimhneacht uasta an chrainn agus líon na Ráitis ar an leibhéal barr.

    Cad is crann comhréire teibí ann?

    Sula bhfuil an t-inneall JavaScript, an linter nó an bundler in ann aon rud a dhéanamh le do chód, parsálann sé an téacs ina chrann nód. Tá type ag gach nód (VariableDeclaration, CallExpression, Identifier…) agus nóid leanaí stóráilte i maoine ainmnithe. Do total += size; faigheann tú ExpressionStatement a bhfuil AssignmentExpression mar expression aige leis an oibreoir +=, aitheantóir left darb ainm total agus aitheantóir right darb ainm size. Imíonn lúibíní, leathstadanna agus tuairimí: ní choinníonn an crann ach an struchtúr a bhfuil tábhacht leis, agus is é sin is cúis leis an ainm teibí.

    Úsáideann an uirlis seo Acorn, an parsálaí beag tapa atá taobh thiar de go leor uirlisí JavaScript, le ecmaVersion: "latest". Leanann an t-aschur ESTree, an formáid chomhroinnte a tháirgeann Espree (ESLint) freisin agus a thuigeann formhór na n-uirlisí claochlaithe cóid. Tá sé riachtanach na cineálacha nód cruinne a bheith ar eolas agat nuair a scríobhann tú riail ESLint, codmod Babel nó jscodeshift, breiseán Prettier nó aon script a dhéanann anailís ar chód.

    Suímh, raonta agus easpórtáil JSON

    Tá start agus end ag gach nód, is iad sin fritháirimh a chéad charachtair agus a charachtair dheireanaigh móide a haon sa fhoinse, chomh maith le réad loc le línte (ó 1) agus colúin. Sa JSON, tosaíonn colúin ag 0 mar a dhéanann aschur Acorn; taispeánann an painéal Nód roghnaithe iad ó 1, cosúil le formhór na n-eagarthóirí. Díthiceáil Cuir suímh san áireamh (start, end, loc) chun JSON níos éadroime a fháil atá níos éasca a chur i gcomparáid idir dhá leagan den chód.

    Ní féidir cúpla luach a scríobh mar JSON: faigheann litriúil slonn rialta "value": null (coinníonn a maoin regex an patrún agus na bratacha) agus scríobhtar litriúil BigInt mar shreangán, mar a mholann sonraíocht ESTree.

    Teorainneacha agus príobháideacht

    Parsáiltear an cód i do bhrabhsálaí agus ní chuirtear i gcrích ná ní sheoltar áit ar bith é: ní léann an parsálaí ach an téacs. Is milliún carachtar an teorainn don ionchur. Rindreáiltear crainn an-mhóra ar éileamh, baisc leanaí ag an am, agus is féidir JSON atá rómhór le réamhamharc a íoslódáil fós. Ní JavaScript caighdeánach iad JSX agus TypeScript, mar sin tuairiscíonn Acorn iad mar earráidí comhréire.

    Ceisteanna coitianta

    Cén fáth a bhfaighim "Earráid chomhréire ag líne 1, colún 1"?

    Níl an cód ina JavaScript bailí don chineál foinse roghnaithe. Tugann an teachtaireacht an líne, an colún agus míniú Acorn. Is cúis choitianta é import nó export agus Script (clasaiceach) roghnaithe, nó anótálacha TypeScript agus JSX, nach bparsálann Acorn.

    Cad é an difríocht idir Modúl agus Script?

    Bíonn modúil i gcónaí i mód docht, ceadaíonn siad import, export agus await ar an leibhéal barr, agus toirmisceann siad with nó litriúil ochtánacha. Is é Script an mód clasaiceach <script>. Taifeadann an crann an rogha freisin i maoin sourceType an nóid Program.

    An gcuirtear an cód i gcrích?

    Ní chuirtear. Ní dhéanann parsáil ach an téacs a iompú ina struchtúr sonraí. Ní mheastar aon rud, ní ghlaoitear ar aon fheidhm agus ní dhéantar aon iarratas líonra, mar sin tá sé sábháilte cód nach bhfuil iontaofa, nó fiú cód mailíseach, a iniúchadh.

    An dtaispeántar tuairimí sa chrann?

    Ní thaispeántar. Ní cheanglaíonn ESTree tuairimí le nóid, mar sin níl siad mar chuid den chrann, ach is féidir leat iad a fheiceáil fós i dtéacs foinseach an nóid sa phainéal Nód roghnaithe.

    Cén leagan JavaScript a thacaítear leis?

    Tá Acorn socraithe don leagan ECMAScript is déanaí a bhfuil aithne aige air, lena n-áirítear slabhrú roghnach, comhcheangal nialasach, BigInt, réimsí aicme agus modhanna príobháideacha, await ar an leibhéal barr, bratacha slonn rialta mar v, agus comhréir nua eile.