Směrnice (programování) - Directive (programming)

V počítačovém programování je direktiva nebo pragma (z „pragmatic“) jazykový konstrukt, který určuje, jak má kompilátor (nebo jiný překladatel ) zpracovat jeho vstup. Směrnice nejsou součástí gramatiky jednoho programovacího jazyka , a mohou se lišit od kompilátor kompilátor. Mohou být zpracovány preprocesorem k určení chování kompilátoru nebo fungovat jako forma parametrizace v pásmu .

V některých případech směrnice určují globální chování, zatímco v jiných případech ovlivňují pouze místní část, například blok programovacího kódu. V některých případech, jako jsou například některé programy C, jsou direktivy volitelnými radami kompilátoru a mohou být ignorovány, ale obvykle jsou normativní a je třeba je dodržovat. Směrnice však neprovádí žádnou akci v samotném jazyce, nýbrž pouze změnu chování kompilátoru.

Tento termín lze použít k označení proprietárních značek a příkazů třetích stran (nebo značek) vložených do kódu, které vedou k dalšímu spustitelnému zpracování, které rozšíří stávající kompilátor, assembler a jazykové konstrukce přítomné ve vývojovém prostředí. Termín „směrnice“ se také používá mnoha způsoby, které jsou podobné výrazu příkaz .

Preprocesor C.

V C a C ++ jazyk podporuje jednoduchý preprocesor maker . Zdrojové řádky, které by měl zpracovat preprocesor, například a jsou označovány jako direktivy preprocesoru . #define#include

Další konstrukce C, #pragma směrnice, se používá k instruování kompilátoru, aby používal pragmatické funkce nebo funkce závislé na implementaci. Dva významní uživatelé této směrnice jsou OpenMP a OpenACC .

Syntaktické konstrukty podobné směrnic předprocesoru C, jakým je například C # ‚s #if , jsou také typicky nazývá‚směrnic‘, i když v těchto případech nemusí být žádné skutečné předzpracování fáze podílí.

Všechny příkazy preprocesoru začínají symbolem hash (#).

Dějiny

Směrnice se datují k ALGOL 68 , kde jsou známé jako pragmaty (z „pragmatic“) a označují se jako pragmat nebo pr ; v novějších jazycích, zejména v jazyce C, to bylo zkráceno na „pragma“ (bez „t“).

Běžné použití pragmatů v ALGOL 68 je ve specifikaci stropního režimu, což znamená „jak jsou označována klíčová slova“. Následují různé takové směrnice, které specifikují režimy POINT, UPPER, RES (vyhrazené) nebo citace. Všimněte si použití stroppingu pro samotné klíčové slovo pragmat (zkráceně pr ), buď v režimech POINT nebo quote:

.PR POINT .PR
.PR UPPER .PR
.PR RES .PR
'pr' quote 'pr'

Direktivy jsou dnes nejlépe známé v jazyce C počátkem sedmdesátých let a pokračují současným standardem C99 , kde jsou buď instrukcemi pro preprocesor C , nebo ve formě #pragma direktiv pro samotný překladač. Oni jsou také zvyklí do jisté míry ve více moderních jazycích; viz. níže.

Jiné jazyky

  • V Adě se direktivy kompilátoru nazývají pragmas (zkratka pro „pragmatické informace“).
  • V Common Lispu se direktivy nazývají deklarace a zadávají se pomocí declare konstrukce (také proclaim nebo declaim ). S jednou výjimkou jsou deklarace volitelné a nemají vliv na sémantiku programu. Jedinou výjimkou je special , kterou je třeba v případě potřeby specifikovat.
  • V Turbo Pascalu se směrnicím říká významné komentáře , protože v jazykové gramatice dodržují stejnou syntaxi jako komentáře . V Turbo Pascal je významným komentářem komentář, jehož první znak je znak dolaru a jehož druhý znak je písmeno; například ekvivalent směrnice C #include "file" je významná poznámka {$I "file"} .
  • V Perlu lze klíčové slovo use “, které importuje moduly, použít také k určení směrnic, například use strict; nebo use utf8; .
  • Haskell pragmas jsou specifikovány pomocí specializované syntaxe komentářů, např {-# INLINE foo #-} .
  • Python má dvě směrnice - from __future__ import feature (definované v PEP 236 - Zpět na __future__ ), které mění jazykové funkce (a používá stávající syntaxi importu modulu, jako v Perlu), a coding směrnici (v komentáři) k určení kódování soubor zdrojového kódu (definovaný v PEP 263 - Definování kódování zdrojového kódu Pythonu ). V dokumentu PEP 244 bylo navrženo a odmítnuto obecnější prohlášení o směrnici - prohlášení „směrnice“ ; to vše se datuje do roku 2001.
  • ECMAScript také přijímá use syntaxi pro směrnice, s tím rozdílem, že pragmy jsou deklarovány jako řetězcové literály (např "use strict"; . Nebo "use asm"; ), nikoli jako volání funkce.
  • V jazyce Visual Basic Option se pro direktivy používá klíčové slovo „ “:
    • Option Explicit On|Off - When on zakáže implicitní deklaraci proměnných při prvním použití vyžadujících předem explicitní deklaraci.
    • Option Compare Binary - Výsledky v porovnání řetězců na základě pořadí řazení odvozeného z interních binárních reprezentací znaků - např. Pro anglickou / evropskou kódovou stránku (ANSI 1252) A <B <E <Z <a <b <e <z <À < Ê <Ø <à <ê <ø. Ovlivňuje vnitřní operátory (např. =, <>, <,>), Blok Select Case a funkce řetězce runtime knihovny VB (např. InStr).
    • Option Compare Text - Výsledky v porovnání řetězců na základě rozlišení písmen nerozlišujících velká a malá písmena podle národního prostředí vašeho systému - např. Pro anglickou / evropskou kódovou stránku (ANSI 1252) (A = a) <(À = à) <(B = b) < (E = e) <(Ê = ê) <(Z = z) <(Ø = ř). Ovlivňuje vnitřní operátory (např. =, <>, <,>), Blok Select Case a funkce řetězce runtime knihovny VB (např. InStr).
    • Option Strict On|Off - Když je zakázáno:
      • beztypové programování - kde jsou deklarace, které postrádají explicitní typ, implicitně zadány jako Object.
      • pozdní vazba (tj. dynamické odeslání na objekty CLR, DLR a COM) u hodnot staticky zadaných jako Object.
      • implicitní zúžení převodu - vyžadující, aby všechny převody na užší typy (např. z Long na Integer, Object na String, Control na TextBox) byly v kódu explicitní pomocí operátorů převodu (např. CInt, DirectCast, CType).
    • Option Infer On|Off - When on umožňuje kompilátoru odvodit typ lokálních proměnných z jejich inicializátorů.
  • V Ruby jsou směrnice interpretů označovány jako pragmy a jsou specifikovány komentáři nahoře, které následují key: value notaci. Například coding: UTF-8 označuje, že soubor je kódován pomocí kódování znaků UTF-8 .
  • V jazyce C # se direktivy kompilátoru nazývají direktivy předběžného zpracování. Existuje řada různých direktiv kompilátoru, včetně #pragma, který se konkrétně používá k ovládání upozornění kompilátoru a kontrolních součtů ladicího programu.
  • SQLite DBMS obsahuje direktivu Pragma, který se používá k zavedení příkazy, které nejsou kompatibilní s jinými RDBMS.

Montážní jazyk

  • V assembleru direktivy, označované také jako pseudo-operace nebo „pseudoops“, obecně specifikují takové informace jako cílový stroj, označují separace mezi sekcemi kódu, vyvolávají makra, definují vyhrazené oblasti paměti atd. Assemblery používají specifickou syntaxi k odlišení pseudoopů od instrukčních mnemotechnických pomůcek, jako je prefacing pseudoopu s periodou, jako je pseudoop .END , který může nasměrovat assembler k zastavení sestavování kódu.

PL / SQL

Viz také

Reference

externí odkazy