PLDB
Languages Features Calendar About Lists Add Language
GitHub icon

Directives

Directives

Directives are a language feature.

In computer programming, a directive or pragma (from "pragmatic") is a language construct that specifies how a compiler (or other translator) should process its input. Directives are not part of the grammar of a programming language, and may vary from compiler to compiler.

Languages with Directives include JavaScript, C, Python, C++, Ruby, Perl, C#, Rust, Haskell, Visual Basic, Erlang, Ada, F#, Common Lisp, ALGOL 68, FML, ScriptEase

Example from JavaScript:

"use strict"; "use asm";

Example from C:

#include <stdio.h> #define height 10 #ifdef #endif #if #else #ifndef #undef #pragma

Example from Python:

from __future__ import feature # coding=<encoding name>

Example from C++:

// #pragma once is a non-standard but widely supported preprocessor directive designed to cause the current source file to be included only once in a single compilation. #pragma once struct foo { int member; };

Example from Ruby:

coding: UTF-8

Example from Perl:

# In Perl, the keyword "use", which imports modules, can also be used to specify directives, such as use strict; or use utf8; use utf8;

Example from C#:

#define MAX_CLIENTS 200 int array[MAX_CLIENTS]; #if PRODUCTION //code #elif DEVELOPMENT //code #else //code #endif

Example from Rust:

// A conditionally-compiled module #[cfg(target_os = "linux")] mod bar { /* ... */ } // General metadata applied to the enclosing module or crate. #![crate_type = "lib"] // A function marked as a unit test #[test] fn test_foo() { /* ... */ } // A lint attribute used to suppress a warning/error #[allow(non_camel_case_types)] type int8_t = i8; // Inner attribute applies to the entire function. fn some_unused_variables() { #![allow(unused_variables)] let x = (); let y = (); let z = (); }

Example from Haskell:

{-# INLINE foo #-}

Example from Visual Basic:

Option Explicit On|Off Option Compare Binary

Example from Erlang:

-define(TIMEOUT, 200). ... call(Request) -> server:call(refserver, Request, ?TIMEOUT). -undef(Macro).

Example from F#:

#if VERSION1 let function1 x y = printfn "x: %d y: %d" x y x + 2 * y #else let function1 x y = printfn "x: %d y: %d" x y x - 2*y #endif // Line directives as source maps can be used when compiling to F#: #line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"

Example from ALGOL 68:

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

Example from FML:

# Directives are special lines that have syntax and semantics of their own. Directives all start with a name of the form .foo; new directives may be added by future versions of the language. .import math.constants area = x * math.constants.Pi, ^ 2 .from math.constants import Pi, E area = x sq, * Pi polar = a * [E ^ [b * 0+j1]]

Article source

PLDB - Build the next great programming language 路 v2022 Docs Acknowledgements Email GitHub