Gramática BNF de JHaSIC
<programa_jhasic> ⇒ empezar <main> terminar
<main> ⇒ <instrucción>|<instrucción><main>
<instrucción> ⇒ <while_si>|<if_si>|<op>|<assign>|<mostrar_si>
<assign> ⇒ <string>(<entero>)|s.<string>(<string>)
<string> ⇒ <char>|<char><string>
<char> ⇒ a|b|c|d|e|f|...|z| |
<entero> ⇒ 0|1|2|3|4|5|6|7|8|9|<entero><entero>
<mostrar_si> ⇒ (mostrar(muestra))
<muestra> ⇒ <string>|<string>+<muestra>|s.<string>|s.<string>+<muestra>
<while_si> ⇒ (mientras(<condición>))<main> fin
<condición> ⇒ <string><signo><entero>|<string><signo><string>
<signo> ⇒ >|<|>>|>>|!!|==
<op> ⇒ <op>+<expr>|<op>-<expr>|<expr>
<expr> ⇒ <expr>*<term>|<expr>/<term>|<term>
<term> ⇒ (<op>)|<string>|<entero>
<if_si> ⇒ (si(condicion))<main>fin|(si(condicion))<main>sino<main>fin
<while_si> ⇒ (mientras(<condición>))<main> fin
<condición> ⇒ <string><signo><entero>|<string><signo><string>
<signo> ⇒ >|<|>>|>>|!!|==
<op> ⇒ <op>+<expr>|<op>-<expr>|<expr>
<expr> ⇒ <expr>*<term>|<expr>/<term>|<term>
<term> ⇒ (<op>)|<string>|<entero>
<if_si> ⇒ (si(condicion))<main>fin|(si(condicion))<main>sino<main>fin