-
Notifications
You must be signed in to change notification settings - Fork 0
/
gramatica3.txt
53 lines (51 loc) · 1.31 KB
/
gramatica3.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
main
=expresion*
expresion
= (escriba/for/inicializar/while/func/if)
func
=("FUNCION"/"funcion") _ cad _ "{"_ (cad (_ "," _ cad)+/cad)* _"}" _
"("_ expresion*_ retorna* _")" _
while
="mientras"_":" ("_" _ compuer _ "_" _ cad _ comp _ num _/_ cad _ comp _ num _ )* ":" _ "(" _ expresion* _ ")"_
if
= "si" _ ":"_ (cad _ (comp _ (decimal/num)/_":=" _ ([\"] _ cad _ [\"]/_ cad _)))
(_ "_"_ compuer _"_" _ (cad _ (comp _ (decimal/num)/_":=" _
([\"] _ cad _ [\"]/_ cad _))))*_":"_"("_ expresion* _")"_
ifno _
ifno
="si_no"_"("_ expresion* _")"
for
="para" _ ":" _ cad _":=" _ (decimal/num) _ "hasta" _ cad _
comp _ (decimal/num) _ "_" _ cad _ aumento _ ":" _"(" _ expresion* _")"_
inicializar
= declaracion _(":="_
([\"] _ cad* _ [\"]/cad/(decimal/num)/arreglo)/signo _
([\"] _ cad* _ [\"]/cad/(decimal/num)/arreglo))* _
escriba
="escriba"_">>" _ (cad/[\"]_ cad _[\"])*_
retorna
="retorna"_ (cad/(decimal/num)/[\"]_ cad _[\"])
aumento
= ("++"/"--"/("+"/"-")num)_
declaracion
= "var" __ str num*
signo
="+"/"-"
compuer
=("&&"/"||")
comp
=("<="/">="/"="/"<"/">")
arreglo
= "["_ (_ "|" _ ((decimal/num)/[\"] _ cad* _ [\"])+/((decimal/num)/[\"] _ cad* _ [\"]))* _"]"
cad
= [a-zA-Z]+_
str
= [a-zA-Z]+
decimal
=num"."num
num
= [0-9]+
_ "whitespace"
= [ \t\n\r]*
__ "whitespace"
= [ \t\n\r]+