Esta comparación de lenguajes de programación compara las características de la sintaxis del lenguaje (formato) de más de 50 lenguajes de programación de computadoras.
Las expresiones del lenguaje de programación se pueden clasificar en términos generales en cuatro estructuras de sintaxis:
(* (+ 2 3) (expt 4 5))
(2 + 3) * (4 ** 5)
2 3 + 4 5 ** *
(2 + 3)(45) $$ note implicit multiply operator
Cuando un lenguaje de programación tiene declaraciones , normalmente tienen convenciones para:
Un separador de declaraciones demarca el límite entre dos declaraciones separadas. Un terminador de declaración define el final de una declaración individual. Los lenguajes que interpretan el final de una línea como el final de una declaración se denominan lenguajes "orientados a líneas".
La "continuación de línea" es una convención en lenguajes orientados a líneas donde el carácter de nueva línea podría malinterpretarse como un terminador de declaración. En dichos lenguajes, permite que una sola declaración abarque más de una sola línea.
La continuación de línea generalmente se realiza como parte del análisis léxico : una nueva línea normalmente da como resultado que se agregue un token al flujo de tokens, a menos que se detecte una continuación de línea.
\
dnl
%
'
luego insertando a -
en la columna 7 ( *
se usa la misma posición que el comentario for).Importar una biblioteca es una forma de leer rutinas, programas o paquetes externos, posiblemente compilados . Las importaciones se pueden clasificar por nivel (módulo, paquete, clase, procedimiento,...) y por sintaxis (nombre de directiva, atributos,...)
addpath(directory)
MATLAB [10]COPY filename.
COBOL:-include("filename").
Prólogo#include file="filename"
ÁSPID#include "filename"
, AutoHotkey , AutoIt , C , C++#include <filename>
AutoHotkey , AutoIt , C , C++#import "filename"
, C objetivo#import <filename>
C objetivoImport["filename"]
Matemática , Wolfram Languageinclude 'filename'
fortraninclude "filename";
PHPinclude [filename] program
, Elija Básico#include [filename] program
Elige Básicoinclude!("filename");
Óxidoload "filename"
Rubíload %filename
Rojorequire('filename')
luarequire "filename";
Perl , PHPrequire "filename"
Rubísource(""filename"")
R@import("filename");
Zig#include filename
C , C++#[path = "filename"] mod altname;
, Óxido@import module;
C objetivo<<name
Matemática , Wolfram Language:-use_module(module).
Prólogo :from module import *
Pitónextern crate libname;
, Óxidoextern crate libname as altname;
Óxidomod modname;
, Óxidolibrary("package")
R :IMPORT module
Oberónimport altname "package/name"
Ir :import package.module;
, Dimport altname = package.module;
Dimport Module
, haskellimport qualified Module as M
Haskellimport package.*
Java , MATLAB , Kotlinimport "modname";
JavaScript :import altname from "modname";
, JavaScript :import package
escalaimport package._
, Escalaimport module
Rápidoimport module
V (Vlang)import module
, pitónrequire "gem"
, rubíuse module
, Fortran 90 +use module, only : identifier
Fortran 90 +use Module;
, perlause Module qw(import options);
perlause Package.Name
Cobrauses unit
Pascalwith package
ada@import("pkgname");
Zigfrom module import Class
Pitónimport package.class
Java , MATLAB , Kotlinimport class from "modname";
, JavaScriptimport {class} from "modname";
, JavaScriptimport {class as altname} from "modname";
javascriptimport package.class
, Escalaimport package.{ class1 => alternativeName, class2 }
, Escalaimport package._
escalause Namespace\ClassName;
, PHPuse Namespace\ClassName as AliasName;
PHPfrom module import function
Pitón :import package.module : symbol;
, D :import package.module : altsymbolname = symbol;
D :import Module (function)
Haskell :import function from "modname";
, JavaScript :import {function} from "modname";
, JavaScript :import {function as altname} from "modname";
JavaScript :import package.function
MATLAB :import package.class.function
, Escala :import package.class.{ function => alternativeName, otherFunction }
Escala :use Module ('symbol');
Perla :use function Namespace\function_name;
, PHP :use Namespace\function_name as function_alias_name;
PHP :use module::submodule::symbol;
, Óxido :use module::submodule::{symbol1, symbol2};
, Óxido :use module::submodule::symbol as altname;
Óxido :use const Namespace\CONST_NAME;
PHPLas declaraciones anteriores también se pueden clasificar según sean una conveniencia sintáctica (permitiendo hacer referencia a las cosas con un nombre más corto, pero aún así se puede hacer referencia a ellas con algún nombre completo sin importancia), o si realmente son necesarias para acceder. el código (sin el cual es imposible acceder al código, incluso con nombres completos).
import package.*
Javaimport package.class
Javaopen module
OCamlimport altname "package/name"
Irimport altname from "modname";
javascriptimport module
PitónUn bloque es una notación para un grupo de dos o más declaraciones, expresiones u otras unidades de código que están relacionadas de tal manera que forman un todo.
{
...}
for
y loop
bucles, o pasar un bloque como argumento), R , Rust , Scala , S-Lang , Swift , PowerShell , Haskell (en notación do), AutoHotkey , Zig(
...)
[
...]
begin
...end
for
, do/while
& do/until
bucles), OCaml , SCL , Simula , Erlang .do
...end
do
...done
for
y while
bucles), F# (sintaxis detallada) [11] Visual Basic , Fortran , TUTOR (con sangría obligatoria del cuerpo del bloque), Visual Prologdo
...end
for
bucle), Seed7 (encierra cuerpos de bucle entre do
y end
)end
(por ejemplo if
... end
):if
, while
, until
, def
, class
, module
declaraciones), OCaml ( for
& while
bucles), MATLAB ( if
& switch
condicionales, for
& while
bucles, try
cláusula, package
, classdef
, properties
, methods
, events
, & function
bloques), Lua ( then
/ else
& function
)begin
...)do
...)if
...end if
:If
... :EndIf
o :If
...:End
if
... fi
, do
... done
, case
... esac
;begin
... end
, (
... )
, if
... fi
, do
...od
repeat
...until
IF
... END-IF
, PERFORM
... END-PERFORM
, etc. para declaraciones; ... .
para oraciones.If
... End If
, For
... Next
, Do
...Loop
If
... EndIf
, For
... EndFor
, While
...EndWhile
Los comentarios se pueden clasificar por:
Los comentarios en línea son generalmente aquellos que utilizan un carácter de nueva línea para indicar el final de un comentario y un delimitador arbitrario o una secuencia de tokens para indicar el comienzo de un comentario.
Ejemplos:
Los comentarios de bloque son generalmente aquellos que utilizan un delimitador para indicar el comienzo de un comentario y otro delimitador para indicar el final de un comentario. En este contexto, los espacios en blanco y los caracteres de nueva línea no se cuentan como delimitadores. En los ejemplos, el símbolo ~ representa el comentario; y los intérpretes/compiladores entienden los símbolos que lo rodean como delimitadores.
Ejemplos:
C
' en la columna 1 indica que toda esta línea es un comentario. Las columnas 1 a 5 pueden contener un número que sirve como etiqueta. Las columnas 73 a 80 se ignoran y pueden usarse para comentarios; En la época de las tarjetas perforadas , estas columnas a menudo contenían un número de secuencia para que la baraja de cartas pudiera clasificarse en el orden correcto si alguien las dejaba caer accidentalmente. Fortran 90 eliminó la necesidad de la regla de sangría y agregó comentarios en línea, utilizando el !
carácter como delimitador de comentarios.*
o /
está en la columna 7, entonces esa línea es un comentario. Hasta COBOL 2002, si D
o d
estaba en la columna 7, definiría una "línea de depuración" que se ignoraría a menos que se le indicara al compilador que la compilara./#
... #/
" que es como " /*
... */
" que se encuentra a menudo en los lenguajes basados en C, pero con dos diferencias. El #
carácter se reutiliza del formulario de comentario de una sola línea " #
..." y los comentarios del bloque se pueden anidar, lo que resulta conveniente para comentar grandes bloques de código.|foo# ... #foo|
.--[[comment --[=[ nested comment ]=] ]]
. Lua descarta la primera nueva línea (si está presente) que sigue directamente a la etiqueta de apertura.~S
(que evita la interpolación de cadenas) a la cadena entre comillas triples, lo que lleva a la construcción final ~S""" ... """
. Además, Elixir admite una forma limitada de comentarios en bloque como característica del lenguaje oficial, pero al igual que en Perl, esta construcción está destinada exclusivamente a escribir documentación. A diferencia de Perl, no se puede utilizar como solución alternativa, ya que se limita a ciertas partes del código y arroja errores o incluso suprime funciones si se usa en otro lugar. [22]#`(...)
para indicar comentarios en bloque. [23] Raku en realidad permite el uso de cualquier paréntesis "derecho" e "izquierdo" después #`
(es decir #`(...)
, #`[...]
, #`{...}
, #`<...>
, e incluso los más complicados #`{{...}}
son todos comentarios de bloque válidos). También se permite anidar corchetes dentro de los comentarios (es decir, #`{ a { b } c }
van hasta la última llave de cierre).=begin
la línea y se cierra en =end
la línea.#<tag>
y . #</tag>
El nombre de la etiqueta puede ser cualquier secuencia de caracteres alfanuméricos que puedan usarse para indicar cómo se debe descifrar el bloque adjunto. Por ejemplo, #<latex>
podría indicar el inicio de un bloque de documentación formateada en LaTeX.#;
.ABAP admite dos tipos diferentes de comentarios. Si el primer carácter de una línea, incluida la sangría, es un asterisco ( *
), toda la línea se considera un comentario, mientras que una comilla doble simple ( "
) comienza un comentario en línea que actúa hasta el final de la línea. Los comentarios ABAP no son posibles entre las declaraciones EXEC SQL
y ENDEXEC
porque SQL nativo tiene otros usos para estos caracteres. En la mayoría de los dialectos SQL, --
se puede utilizar el doble guión ( ).
Existe una amplia variedad de estilos de sintaxis para declarar comentarios en el código fuente. BlockComment
en cursiva se utiliza aquí para indicar el estilo de comentario de bloque. InlineComment
en cursiva se utiliza aquí para indicar el estilo de comentario en línea.
/* ... */
, se pueden usar directivas del compilador para imitarlos como en VB.NET._
se puede utilizar para extender un comentario de una sola línea a la siguiente línea sin necesidad de escribir '
o REM
nuevamente. Esto se puede hacer hasta 24 veces seguidas.