Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Desenvolva um programa na linguagem de programação SIMPLE, que apresente a exponenciação de uma base qualquer por um expoente positivo qualquer, ou seja, BE. O valor de E será fornecido pelo usuário, devendo ser um valor inteiro e positivo. O valor de B será fornecido pelo usuário, podendo ser um valor qualquer. Por exemplo, caso o valor fornecido pelo usuário para B seja 2 e para E seja 5, o programa deverá apresentar como resposta o valor 32, ou seja, 2 * 2 * 2 * 2 * 2. Caso o usuário forneça um valor inválido para E, o programa deverá apresentar como resposta o valor -1. Posteriormente, apresente a identificação de todos os tokens utilizados na elaboração do programa.

 

10 input b
15 input e
20 if e < 0 goto 50
25 let p = 1
30 if e == 0 goto 55
35 let p = p * b
40 let e = e - 1
45 goto 30
50 let p = -1
55 print p
60 end
Tabela de símbolos
CódigoValor CódigoValor CódigoValor
0010 01b 0215
03e 0420 050
0650 0725 08p
091 1030 1155
1235 1340 1445
1560      
[51, 00, (01, 01)] // 10
[62, , (01, 04)] // input
[41, 01, (01, 10)] // b
[10, , (01, 11)] // ENTER
[51, 02, (02, 01)] // 15
[62, , (02, 04)] // input
[41, 03, (02, 10)] // e
[10, , (02, 11)] // ENTER
[51, 04, (03, 01)] // 20
[66, , (03, 04)] // if
[41, 03, (03, 07)] // e
[34, , (03, 09)] // <
[51, 05, (03, 11)] // 0
[65, , (03, 13)] // goto
[51, 06, (03, 18)] // 50
[10, , (03, 20)] // ENTER
[51, 07, (04, 01)] // 25
[63, , (04, 04)] // let
[41, 08, (04, 08)] // p
[11, , (04, 10)] // =
[51, 09, (04, 12)] // 1
[10, , (04, 13)] // ENTER
[51, 10, (05, 01)] // 30
[66, , (05, 04)] // if
[41, 03, (05, 07)] // e
[31, , (05, 09)] // ==
[51, 05, (05, 12)] // 0
[65, , (05, 14)] // goto
[51, 11, (05, 19)] // 55
[10, , (05, 21)] // ENTER
[51, 12, (06, 01)] // 35
[63, , (06, 04)] // let
[41, 08, (06, 08)] // p
[11, , (06, 10)] // =
[41, 08, (06, 12)] // p
[24, , (06, 14)] // *
[41, 01, (06, 16)] // b
[10, , (06, 17)] // ENTER
[51, 13, (07, 01)] // 40
[63, , (07, 04)] // let
[41, 03, (07, 08)] // e
[11, , (07, 10)] // =
[41, 03, (07, 12)] // e
[22, , (07, 14)] // -
[51, 09, (07, 16)] // 1
[10, , (07, 17)] // ENTER
[51, 14, (08, 01)] // 45
[65, , (08, 04)] // goto
[51, 10, (08, 09)] // 30
[10, , (08, 11)] // ENTER
[51, 06, (09, 01)] // 50
[63, , (09, 04)] // let
[41, 08, (09, 08)] // p
[11, , (09, 10)] // =
[22, , (09, 12)] // -
[51, 09, (09, 13)] // 1
[10, , (09, 14)] // ENTER
[51, 11, (10, 01)] // 55
[64, , (10, 04)] // print
[41, 08, (10, 10)] // p
[10, , (10, 11)] // ENTER
[51, 15, (11, 01)] // 60
[67, , (11, 04)] // end
[03, , (11, 07)] // ETF