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