Esiste una parola che include sia dichiarazioni che definizioni / dichiarazioni

0

Wikipedia fornisce alcuni esempi di affermazioni che tutti conosciamo:

  • Istruzione restituita: return value;
  • Istruzione di assegnazione: var value = expression;
  • Call statement: expression; , ad es. %codice%
  • Se istruzione breve: action();
  • Istruzione lunga: if (expression) expression;

Esiste un termine generico che include sia le istruzioni che determinati elementi come una definizione di classe, la definizione del metodo, l'importazione dello spazio dei nomi e la dichiarazione dello spazio dei nomi?

Domanda bonus: sono dichiarazioni di commenti?

    
posta user2180613 03.10.2016 - 12:50
fonte

5 risposte

1

Non proprio. Non un termine generalmente usato almeno. Alcune grammatiche usano il termine "direttiva" per le produzioni che si verificano al "livello superiore". Altri chiamano semplicemente tutte le istruzioni - ad es. Nella classe Python e le definizioni delle funzioni sono considerate istruzioni.

I commenti non sono dichiarazioni, sono ... commenti.

    
risposta data 03.10.2016 - 13:31
fonte
0

Una possibilità di trovare tali nomi è di dare un'occhiata alle sintassi del linguaggio. Poiché ogni interprete / compilatore deve analizzare un codice sorgente, questi elementi noti (dichiarazione, istruzione, ecc.) Devono essere definiti in alcune grammatiche.

Diamo un'occhiata alla sintassi Java (prendo Java perché è la lingua con cui mi trovo più a suo agio): link

Iniziamo con Istruzione

Statement: Block ; Identifier : Statement StatementExpression ; if ParExpression Statement [else Statement] assert Expression [: Expression] ; switch ParExpression { SwitchBlockStatementGroups } while ParExpression Statement do Statement while ParExpression ; for ( ForControl ) Statement break [Identifier] ; continue [Identifier] ; return [Expression] ; throw Expression ; synchronized ParExpression Block try Block (Catches | [Catches] Finally) try ResourceSpecification Block [Catches] [Finally]

Diamo ora un'occhiata alla dichiarazione della classe :

ClassDeclaration: NormalClassDeclaration EnumDeclaration

Ora una dichiarazione del metodo :

MethodDeclaratorRest: FormalParameters {[]} [throws QualifiedIdentifierList] (Block | ;)

E infine import (perché no dopo tutto):

ImportDeclaration: import [static] Identifier { . Identifier } [. *] ;

Ora se vogliamo trovare il termine più comune per una istruzione , una dichiarazione di classe , una dichiarazione di metodo e una import un "semplicemente" deve salire l'albero della sintassi finché non troviamo il primo antenato comune.

Così facendo, finiamo (non così sorprendentemente) nella parte superiore dell'albero della regola

CompilationUnit: [[Annotations] package QualifiedIdentifier ;] {ImportDeclaration} {TypeDeclaration}

Quindi, sintatticamente parlando, la risposta alla tua domanda è Compilation Unit . Tuttavia, questo antenato è così lontano dai quattro elementi di base che sarebbe assurdo chiamare una istruzione una unità di compilazione . Morale: non cercare di unificare molti termini sotto lo stesso termine quando giustamente esiste termini diversi! (altrimenti la grammatica di qualsiasi lingua consisterebbe in una sola grande regola invece di molte)

È come cercare di trovare una parola che significa mela o banana ma non arancione , himbeer , ecc.

Risposta bonus: i commenti non sono dichiarazioni perché non sono presenti nella grammatica della lingua.

    
risposta data 03.10.2016 - 14:19
fonte
0

Bonus question: are comments statements?

Solo quando lo sono. Ad esempio, con docstrings , assumendo che la lingua tratti le docstring come dichiarazioni e definisca le docstring come commenti.

Il problema è con i linguaggi di programmazione, gli stessi termini vengono utilizzati in modi diversi in diverse lingue. Ad esempio, C # e Java fanno entrambe la distinzione tra espressioni e istruzioni, mentre in F # tutto è un'espressione. Allo stesso modo con i commenti: lingue diverse trattano i commenti in diversi modi:

  1. In molti BASIC, i commenti esistono come istruzioni REM, quindi si potrebbe sostenere che sono dichiarazioni.
  2. In molte lingue, i commenti vengono utilizzati per conservare la documentazione, che viene eliminata dal compilatore. Ma in linguaggi come Python, le docstring sono utilizzate per contenere quella documentazione, quindi i commenti sul codice sono accessibili in fase di runtime e possono essere utilizzati come metadati, influenzando il comportamento del codice.
  3. In Lisp, le docstring sono, come ogni altra cosa, le S-Expressions. Lisp non ha istruzioni, ma S-Expressions è l'equivalente (del genere).

Cercare di trovare termini comuni per qualsiasi cosa nella programmazione tende ad essere un compito ingrato ...

    
risposta data 03.10.2016 - 14:54
fonte
0

"Elemento di codice"? Non è molto significativo dato che gli elementi del codice possono essere annidati. Gli elementi di codice composti consisterebbero in un gruppo di elementi di codice. Esprime che stai ancora parlando di un'unità, parte coerente del codice. Ma questo è tutto ciò che dice.

"L'elemento della lingua" sarebbe un po 'più restrittivo. Gli elementi del codice possono includere intestazioni di documentazione, direttive pre-processore e altri metadati mentre gli elementi del linguaggio no.

    
risposta data 03.10.2016 - 15:11
fonte
-2

L'unica cosa che vedo è compilation unit

A compilation unit is C source code that is compiled and treated as one logical unit. The compilation unit is usually one or more entire files, but can also be a selected portion of a file if, for example, the #ifdef preprocessor directive is used to select specific code sections.

Vedi link

Bonus: i commenti non sono codice quindi non sono dichiarazioni. Ma forse con qualche framework JS (angularJS, bootstrap) che usa i commenti all'interno dell'HTML per funzionare può essere considerato come tale

    
risposta data 03.10.2016 - 13:15
fonte

Leggi altre domande sui tag