Gramatica da Linguagem de Especificacao de Statecharts (LES)


< estadograma > ::= [ <declaracoes> ] ; <estados> ; <transicoes> .

< declaracoes > ::= <declaracao> { ; <declaracao>}
<declaracao> ::= <tipo-id> <lista-identificadores>
<tipo-id> ::= ( int | bool | real | string | cond )
<lista-identificadores> ::= <identificador> { , <identificador> }

<estados> ::= <descricao estado> { , <descricao estado> }
<descricao estado> ::= estado <estado> <tipo>
<tipo> ::= ou <subestados ou> | e <subestados e> | atomo
<subestados ou>> ::= subestados <estado> [ ( def | def/ H | def/ H*) ] , <estado>
<subestados e> ::= subestados <estado> { , <estado> }

<transicoes> ::= <transicao> { ; <transicao> }
<transicao> ::= evento <evento> { , <evento> }
origem <estado> { , <estado }
destino <estado> [ ( / H | / H* ) ] , <estado> [ ( / H | / H* ) ] [ acao { <acoes> } ]
<evento> ::= <identificador> | <true> ( <exp> ) | <false> ( <exp> ) | <changed> ( <exp> ) | <exit> ( <estado> ) | <entered> ( <estado> ) | <evento> or <evento> | <evento> and <evento> | <evento> [ <exp> ] | t_out ( <numero> <unid-tempo> )

<exp> ::= <expS> [ ( = | > | < | <> | <= | >= ) <expS> ]
<expS> ::= <termo> { ( + | - | or ) <termo>
<termo> ::= <fator> { ( * | / | and ) <fator> }
<fator> ::= <true> | <false> | <condicao primitiva> | <numero> | <variavel> | in ( <estado> )
| <not yet> ( <evento> ) | <current> ( <exp> ) | not <exp> | ( <exp> )

<acoes> ::= <acao> { ; <acao> }
<acao> ::= <identificador> | <variavel> := <exp> | clear ( <estado> [ * ] )
<estado> ::= <identificador> | <identificador>.<identificador>
<variavel> ::= <identificador>
Simbolos terminais :
<true> ::= ( [ tT][ rR][ uU][ eE] | tr )
<false> := ( [fF][ aA][ lL][ sS][ eE] | fs )
<changed> ::= ( changed | ch )
<exit> ::= ( exit | ex )
<entered> ::= ( entered | en )
<not yet> ::= ( not_yet | ny )
<current> ::= ( current | cr )
<identificador> ::= [ a - zA - Z ] [ a - zA - Z 0 - 9 ] *
<numero> ::= [ 0 - 9 ] +
<unid-tempo> ::= ( seg | min | hr ) }

FIM