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 |
---|---|---|---|
|
Suena la campana |
|
Retroceso |
|
Alimentación de formulario. |
|
Nueva línea |
|
Retorno de carro |
|
Tabulación Horizontal |
|
Tabulación Vertical |
|
Barra invertida |
|
Apóstrofe |
|
Comillas dobles |
|
Signo de interrogación |
|
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.