28 lines
1.2 KiB
Plaintext
28 lines
1.2 KiB
Plaintext
<control_flow> ::= <if_stmt> | <loop_stmt> | <try_stmt>
|
|
|
|
<if_stmt> ::= "if(" <if_condition> ")" <EOL>
|
|
<block>
|
|
[ "else()" <EOL> <block> ]
|
|
"end()" <EOL>
|
|
|
|
/* if() soporta dos modos:
|
|
Modo 1 — comparación estructurada: los dos primeros argumentos deben ser
|
|
identificadores simples o literales, nunca expresiones de acceso.
|
|
Si se necesita comparar un valor extraído de una estructura (ej. dict['clave']),
|
|
debe asignarse previamente a una variable.
|
|
Modo 2 — expresión libre: None, None, expresión compleja como string */
|
|
<if_condition> ::= <if_atom> "," <if_atom> "," <stringliteral>
|
|
| "None" "," "None" "," <stringliteral>
|
|
<if_atom> ::= <identifier> | <literal>
|
|
|
|
<loop_stmt> ::= "startLoop(" <identifier> "," <expression> "," <expression> ")" <EOL>
|
|
<block>
|
|
"endLoop()" <EOL>
|
|
|
|
<try_stmt> ::= "try()" <EOL>
|
|
<block>
|
|
"exception(" <identifier> ")" <EOL>
|
|
<block>
|
|
"end()" <EOL>
|
|
|
|
<block> ::= <line>* |