42 lines
2.0 KiB
Plaintext
42 lines
2.0 KiB
Plaintext
<program> ::= ( <line> | <block_comment> )*
|
|
<line> ::= [ <statement> ] [ <line_comment> | <doc_comment> ] <EOL>
|
|
| ( <line_comment> | <doc_comment> ) <EOL>
|
|
<EOL> ::= /* Retorno de carro / Salto de línea (\n o \r\n) */
|
|
|
|
<statement> ::= <assignment>
|
|
| <method_call_stmt>
|
|
| <function_call_stmt>
|
|
| <function_decl>
|
|
| <return_stmt>
|
|
| <system_command>
|
|
| <io_command>
|
|
| <control_flow>
|
|
| <async_command>
|
|
| <connector_cmd>
|
|
| <db_command>
|
|
| <http_command>
|
|
| <util_command>
|
|
| <modularity_cmd>
|
|
|
|
<assignment> ::= <identifier> "=" <expression>
|
|
|
|
/* Llamada a función global (sin receptor de objeto) */
|
|
<function_call_stmt> ::= <identifier> "(" [<argument_list>] ")"
|
|
|
|
/* Llamada a método sobre un objeto conector (con receptor) */
|
|
<method_call_stmt> ::= <identifier> "=" <identifier> "." <identifier> "(" [<argument_list>] ")"
|
|
|
|
<system_command> ::= <register_cmd> | <addvar_cmd>
|
|
<register_cmd> ::= "registerEndpoint(" <stringliteral> "," <stringliteral> "," <list_display> "," <stringliteral> "," <identifier> "," <identifier> ")"
|
|
/* addVar asigna un valor a una variable. Acepta (valor, variable) o (variable, valor).
|
|
Si ambos argumentos son identificadores, el valor del segundo se asigna al primero.
|
|
No está permitido pasar dos literales como argumentos. */
|
|
<addvar_cmd> ::= "addVar(" <addvar_arg> "," <addvar_arg> ")"
|
|
<addvar_arg> ::= <identifier> | <literal> | "$" <identifier>
|
|
/* Restricción semántica: al menos uno de los dos <addvar_arg> debe ser <identifier> */
|
|
|
|
<identifier> ::= [a-zA-Z_] [a-zA-Z0-9_]*
|
|
|
|
/* Variables de sistema reservadas — accesibles y asignables desde cualquier scope:
|
|
_status — código HTTP de respuesta (ej. addVar(_status, 401) o _status = 404) */
|
|
<system_variable> ::= "_status" |