<program>          ::= ( <line> | <block_comment> )*
<line>             ::= [ <statement> ] [ <line_comment> | <doc_comment> ] <EOL>
                     | ( <line_comment> | <doc_comment> ) <EOL>
<EOL>              ::= /(\r\n|\n)/

<doc_comment>      ::= "///" <any_text>
<line_comment>     ::= "//" <any_text>
<block_comment>    ::= "/*" <any_content> "*/"
<any_text>         ::= [^\r\n]*
<any_content>      ::= /* Cualquier secuencia de caracteres que no contenga la subcadena "*/" */

<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>

<function_call_stmt> ::= <identifier> "(" [<argument_list>] ")"

<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_cmd>       ::= "addVar(" <addvar_arg> "," <addvar_arg> ")"
<addvar_arg>       ::= <identifier> | <literal> | "$" <identifier>

<identifier>       ::= /[A-Za-z_][A-Za-z0-9_]*/

<system_variable>  ::= "_status"