Escolar Documentos
Profissional Documentos
Cultura Documentos
%%
"Grato por aguardar. Agora vou faturar o pedido e concluir sua compra." return 'MSG3';
"infelizmente Supermax não possui estoque para atender seu pedido." return 'MSG6';
"Falha geral no processo por ordem incorreta das operações." return 'MSG9';
. return 'INVALID';
2. B e C
%{
node.splice(2, 0, child);
return node;
%}
%start programa
%ebnf
%%
programa
: acoes+ EOF
%{
$$ = {
nodeType: 'PROGRAMA',
acoes: $1
};
return $$;
%}
acoes
: cliente_registro '.'? NL
;
cliente_registro
%{
$$ = {
name: 'REGISTRO_CLIENTE',
nodeType: 'CLIENTE',
%}
%{
$$ = {
name: 'REGISTRO_CLIENTE',
nodeType: 'CLIENTE',
%}
%{
$$ = {
name: 'REGISTRO_CLIENTE',
nodeType: 'CLIENTE',
%}
;
cliente_compra
%{
$$ = {
name: 'COMPRAR_PRODUTO',
nodeType: 'COMPRA',
%}
%{
$$ = {
name: 'COMPRAR_PRODUTO',
nodeType: 'COMPRA_RECUSADA',
%}
loja_registro
%{
$$ = {
name: 'LOJA_REGISTRO',
nodeType: 'LOJA_REGISTRO_EFETUADO',
}
%}
%{
$$ = {
name: 'LOJA_REGISTRO',
nodeType: 'LOJA_REGISTRO_ERRO',
%}
%{
$$ = {
name: 'LOJA_REGISTRO',
nodeType: 'LOJA_REGISTRO_CANCELAMENTO',
%}
loja_validacao
%{
$$ = {
name: 'LOJA_REGISTRO',
nodeType: 'LOJA',
%}
;
produto
%{
$$ = {
name: 'COMPRAR_PRODUTO',
nodeType: 'COMPRA',
%}
3. AST
var produtos = [
nome: 'Café',
preco: 10,
quantidade: 10
},
nome: 'Arroz',
preco: 14,
quantidade: 2
},
{
nome: 'Feijão',
preco: 8,
quantidade: 12
},
code.sentencas.forEach(function (sentenca) {
if (sentenca.name == 'REGISTRO_CLIENTE') {
if(ceps[i] == sentenca.value[7]){
registro = true;
compra = true;
if (sentenca.nodeType == 'LOJA_REGISTRO_EFETUADO') {
alert(sentenca.value);
}
if (sentenca.nodeType == 'LOJA_REGISTRO_ERRO') {
alert(sentenca.value);
if (sentenca.nodeType == 'LOJA_REGISTRO_CANCELAMENTO') {
alert(sentenca.value);
if (sentenca.nodeType == 'LOJA_VALIDACAO') {
alert(sentenca.value);
});
};