Información básica

1.1 Introducción

Berry es un lenguaje de script integrado de tipo dinámico ultraligero. El lenguaje admite principalmente programación procedural, así como programación orientada a objetos y programación funcional. Un objetivo de diseño importante de Berry es poder ejecutarse en dispositivos integrados con muy poca memoria, por lo que el lenguaje está muy optimizado. Sin embargo, Berry sigue siendo un lenguaje de secuencias de comandos rico en funciones.

1.2 Empezar a usar

Obtener el intérprete

Los lectores pueden ir a la página de GitHub del proyecto: https://github.com/berry-lang/berry para obtener el código fuente del intérprete de Berry. Los lectores necesitan compilar el intérprete de Berry por sí mismos. El método de compilación específico se puede encontrar en el documento README.md en el directorio raíz del código fuente, que también se puede ver en la página de GitHub del proyecto.

Primero, debe instalar un software como GCC, git y make. Si no usa el control de versiones, puede descargar el código fuente directamente en GitHub sin instalar git. Los lectores pueden usar motores de búsqueda para recuperar información sobre este software. Los lectores que utilizan sistemas Linux y macOS también deben instalar la biblioteca GNU Readline[1]. Use el comando git [2] Clone el código fuente del intérprete del almacén remoto al local:

git clone https://github.com/berry-lang/berry

Ingrese al directorio berry y use el comando make para compilar el intérprete:

cd berry
make

Ahora debería poder encontrar el archivo ejecutable del intérprete en el directorio berry (en los sistemas Windows, el nombre del archivo del programa intérprete es “berry.exe”, mientras que en los sistemas Linux y macOS el nombre del archivo es “berry”), puede ejecutar el archivo ejecutable directamente. Para iniciar el intérprete: En Linux o macOS, puede usar el comando sudo make install para instalar el intérprete, y luego puede iniciar el intérprete con el comando berry en la terminal.

Entorno REPL

REPL (Leer Evaluar Imprimir Bucle) generalmente se traduce como un intérprete interactivo, y este elemnto también se ha convertido en el modo interactivo del intérprete. Este modo consta de cuatro elementos: Leer, lee el código fuente ingresado por el usuario desde el dispositivo de entrada; Evaluar, compila y ejecuta el código fuente ingresado por el usuario; Imprimir, muestra el resultado del proceso de evaluación; Bucle, realiza un ciclo de las operaciones anteriores.

Inicie el intérprete directamente (ingrese berry en la terminal o en la ventana de comandos sin parámetros, o haga doble clic en berry.exe en Windows) para ingresar al modo REPL y verá la siguiente interfaz:

Berry 1.0.0 (build in Feb 1 2022, 13:14:04)
[GCC 8.1.0] on Windows (default)
>

Las dos primeras líneas de la interfaz muestran la versión, el tiempo de compilación, el compilador y el sistema operativo del intérprete de Berry. El símbolo “>” en la tercera línea se llama indicador y el cursor se muestra detrás del indicador. Al usar el modo REPL, después de ingresar el código fuente, al presionar la tecla “Enter” se ejecutará inmediatamente el código y se generará el resultado. Presione la combinación de teclas Ctrl + C para salir de REPL. En el caso de usar la biblioteca Readline, use la combinación de teclas Ctrl + D para salir de REPL cuando la entrada esté vacía. Dado que no hay necesidad de editar archivos de secuencias de comandos, el modo REPL se puede utilizar para un desarrollo rápido o verificación de ideas.

Programa Hola Mundo

Tomemos como ejemplo el clásico programa “Hola Mundo”. Introduzca print('Hola Mundo') en el REPL y ejecútelo. Los resultados son los siguientes:

Berry 1.0.0 (build in Feb 1 2022, 13:14:04)
[GCC 8.1.0] on Windows (default)
> print('Hola Mundo')
Hola Mundo
>

El intérprete emite el texto “Hola Mundo”. Esta línea de código realiza la salida de la cadena 'Hola Mundo' llamando a la función print. En REPL, si el valor de retorno de la expresión no es nil, se mostrará el valor de retorno. Por ejemplo, ingresar la expresión 1 + 2 mostrará el resultado del cálculo 3:

> 1 + 2
3

Por lo tanto, el programa “Hola Mundo” más simple bajo REPL es ingresar directamente la cadena 'Hola Mundo' y ejecutar:

> 'Hola Mundo'
Hola Mundo

Más uso de REPL

También puede utilizar el modo interactivo del intérprete de Berry como calculadora científica. Sin embargo, algunas funciones matemáticas no se pueden utilizar directamente. En su lugar, use la declaración import math para importar la biblioteca matemática y luego use las funciones en la biblioteca. Utilice “math.” como prefijo, por ejemplo, la función sin debe escribirse como math.sin:

> import math
> math.pi
3.14159
> math.sin(math.pi / 2)
1
> math.sqrt(2)
1.41421

Archivo de comandos

El archivo de secuencia de comandos de Berry es un archivo que almacena el código de Berry, y un intérprete puede ejecutar el archivo de script. Normalmente, el archivo de script es un archivo de texto con la extensión “.be”. El comando para ejecutar el script usando el intérprete es:

berry script_file

script_file es el nombre de archivo del archivo de script. El uso de este comando ejecutará el intérprete para ejecutar el código Berry en el archivo de script script_file y el intérprete se cerrará después de la ejecución.

Si desea que el intérprete ingrese al modo REPL después de ejecutar el archivo de script, puede agregar el parámetro -i al comando para llamar al intérprete:

berry script_file

Este comando primero ejecutará el código en el archivo script_file y luego ingresará al modo REPL.

1.3 Palabras (Words)

Antes de presentar la sintaxis de Berry, echemos un vistazo a un código simple (puede ejecutar este código en modo REPL):

def func(x) # una función ejemplo
    return x + 1.5
end
print('func(10) =', func(10))

Este código define una función func y la llama más tarde. Antes de entender cómo funciona este código, primero presentaremos los elementos de sintaxis del lenguaje Berry.

En el código anterior, la clasificación específica de los elementos gramaticales es: def, return y end. Estas son palabras clave del lenguaje Berry; y “# una función ejemplo” en la primera línea se llama comentario; print, func y x son algunos identificadores, generalmente se usan para representar una variable; 1.5 y 10 estos números se llaman literales numéricos, son equivalentes a los números usados en la vida diaria; 'func(10) =' Es un literal de cadena, se usan en lugares donde necesitas representar texto; + es un operador de suma, aquí el operador de suma se puede usar para sumar la variable x y el valor 1.5.

La clasificación anterior se realiza en realidad desde la perspectiva de un analizador lexicográfico. El análisis lexicográfico es el primer paso en el análisis del código fuente de Berry. Para escribir el código fuente correcto, comenzamos con la introducción lexicográfica más básica.

Comentario

Los comentarios son textos que no genera ningún código. Se utilizan para hacer comentarios en el código fuente y ser leídos por personas, mientras que el compilador no interpretará su contenido. Berry admite comentarios de una sola línea y comentarios de bloque de líneas cruzadas. Los comentarios de una sola línea comienzan con el carácter “#’ hasta el final del carácter de nueva línea. La nota rápida comienza con el texto “#-” y termina con el texto “-#”. El siguiente es un ejemplo del uso de anotaciones:

#  Este es un comentario de línea
#- Este es un
   bloque de comentario
-#

Similar al lenguaje C, los comentarios rápidos no admiten el anidamiento. El siguiente código terminará el análisis de los comentarios en el primer texto “-#”:

#- - Algunos comentarios -# ... -#

Valor literal

El valor literal es un valor fijo escrito directamente en el código fuente durante la programación. Los literales de Berry son números enteros, números reales, booleanos, cadenas y nil. Por ejemplo, el valor 34 es una denominación entera.

Valor literal numérico

Los literales numéricos incluyen literales Integer (entero) y literales Número real (real).

40 #  Literal entero
0x80 # Literal hexadecimal (entero)
3.14 #  Literal real
1.1e-6 #  Literal real

Los literales numéricos se escriben de manera similar a la escritura cotidiana. Berry admite denominaciones enteras hexadecimales. Los literales hexadecimales comienzan con el prefijo 0x o 0X, seguido de un número hexadecimal.

Valor literal booleano

Los valores booleanos (booleanos) se utilizan para representar verdadero y falso en el estado lógico. Puede utilizar las palabras clave true y false para representar literales booleanos.

Literal de cadena

Una cadena es un fragmento de texto, y su escritura literal consiste en usar un par de ' o " para rodear el texto de la cadena:

'esto es una cadena'
"esto es una cadena"

Los literales de cadena proporcionan algunas secuencias de escape para representar caracteres que no se pueden ingresar directamente. La secuencia de escape comienza con el carácter '\' y luego sigue una secuencia específica de caracteres para lograr el escape. Las secuencias de escape especificadas por Berry son

Caracter de Escape

significado

Caracter de Escape

significado

\a

Suena la campana

\b

Retroceso

\f

Alimentación de formulario.

\n

Nueva línea

\r

Retorno de carro

\t

Tabulación Horizontal

\v

Tabulación Vertical

\\

Barra invertida

\’

Apóstrofe

\"

Comillas dobles

\?

Signo de interrogación

\0

Caracter Null

Tabla 1: Secuencia de Caracter de Escape

Las secuencias de escape se pueden usar en cadenas, por ejemplo

print('caracter de escape LF\n\tnueva línea')

El resultado de la operación es:

caracter de escape LF
        nueva línea

También puede usar secuencias de escape generalizadas, en forma de \x seguido de 2 dígitos hexadecimales, o \ 3 dígitos octales, usando esta secuencia de escape puede representar cualquier carácter. Estos son algunos ejemplos del uso del conjunto de caracteres ASCII:

'\115' #-'M' -#'\x34' #- '4' -#'\064' #- '4' -#

Valor literal nulo

Nil representa un valor nulo, y su valor literal está representado por la palabra clave nil.

Identificador

El identificador es un nombre definido por el usuario, que comienza con un guión bajo o una letra, y luego consiste en una combinación de varios guiones bajos, letras o números. Al igual que la mayoría de los lenguajes, Berry distingue entre mayúsculas y minúsculas, por lo que los identificadores A y los identificadores a se resolverán en dos identificadores diferentes.

a
TestVariable
Test_Var
_init
baseCass
_

Palabras clave

Berry reserva los siguientes tokens como palabras clave del lenguaje:

if elif else while for def
end class break continue return true
false nil var do import as static

El uso específico de palabras clave se presentará en los capítulos correspondientes. Tenga en cuenta que las palabras clave no se pueden utilizar como identificadores. Debido a que Berry distingue entre mayúsculas y minúsculas, If puede usarse para identificadores.

[1] Para GNU Readline, el comando de instalación para la serie Debian de distribuciones de Linux es sudo apt install libreadline-dev, y el comando de instalación para la serie RedHat de distribuciones de Linux es yum install readline-devel, bajo macOS el comando de instalación es brew install readline. Además, es fácil encontrar documentación de GNU Readline y materiales relacionados en los motores de búsqueda.

[2] Los comandos deben usarse en la “interfaz de línea de comandos” después de completar el trabajo de preparación. El entorno de la línea de comandos en los sistemas Windows suele ser una ventana del símbolo del sistema (CMD), mientras que el entorno de la línea de comandos en los sistemas similares a Unix suele llamarse “Terminal”. Esto no es muy preciso, pero no se ampliará aquí.

[3] En Windows, puede hacer doble clic directamente para ejecutar el archivo ejecutable. En Linux o macOS, use la terminal para ejecutarlo. También puede ejecutar el intérprete en la ventana del símbolo del sistema de Windows. Consulte el archivo README.md para un uso específico.