Python-подобный JavaScript
- циклы (for)
- условия (if, простое сравнение)
- функции (def)
- имена переменных до 7 символов
- переменные без объявления
- блоки кода через табуляцию
- комментарии
Правило | Переход |
---|---|
1. <прог> | ::= <спис_опер> |
2. <спис_опер> | ::= <опер> |
3. <опер> | ::= <присваив> |
4. <присваив> | ::= id <операц_присваив><выраж> |
5. <операц_присваив> | ::= = |
6. <выраж> | ::= <знач> |
7. <знач> | ::= id |
8. <операц> | ::= + |
9. <скоб_выраж> | ::= (<выраж>) |
10. <усл> | ::= if <выраж>:<блок_кода> |
11. <блок_кода> | ::= <опер> |
12. <функ> | ::= def id (<спис_перем>):<блок_кода> |
13. <спис_перем> | ::= ε |
14. <цикл> | ::= for id in (<выраж>, <выраж>):<блок_кода> |
15. <коммент> | ::= #any |
16. <вывод> | ::= print(<выраж>) |
Правило | Переход |
---|---|
1. <прог> | ::= <спис_опер> |
2. <спис_опер> | ::= <опер> |
3. <спис_опер>' | ::= nl <опер> |
4. <опер> | ::= <присваив> |
5. <присваив> | ::= id <операц_присваив><выраж> |
6. <операц_присваив> | ::= = |
7. <выраж> | ::= <знач> |
8. <знач> | ::= id |
9. <операц> | ::= + |
10. <скоб_выраж> | ::= (<выраж>) |
11. <усл> | ::= if <выраж>:<блок_кода> |
12. <блок_кода> | ::= <опер> |
13. <функ> | ::= def id (<спис_перем>):<блок_кода> |
14. <спис_перем> | ::= ε |
15. <спис_перем>' | ::= ,id |
16. <цикл> | ::= for id in (<выраж>, <выраж>):<блок_кода> |
17. <комент> | ::= #any |
18. <вывод> | ::= print(<выраж>) |
Правило | Переход |
---|---|
1. <прог> | ::= <спис_опер> |
2. <спис_опер> | ::= <опер><спис_опер_конец> |
3. <спис_опер_конец> | ::= ε |
4. <спис_опер>' | ::= nl <опер><спис_опер_конец> |
5. <опер> | ::= <присваив> |
6. <присваив> | ::= id <операц_присваив><выраж> |
7. <операц_присваив> | ::= = |
8. <выраж> | ::= <знач><выраж_конец> |
9. <выраж_конец> | ::= ε |
10. <знач> | ::= id |
11. <операц> | ::= + |
12. <скоб_выраж> | ::= (<выраж>) |
13. <усл> | ::= if <выраж>:<блок_кода> |
14. <блок_кода> | ::= <опер> |
15. <функ> | ::= def id (<спис_перем>):<блок_кода> |
16. <спис_перем> | ::= ε |
17. <спис_перем_конец> | ::= ε |
18. <спис_перем>' | ::= ,id <спис_перем_конец> |
19. <цикл> | ::= for id in (<выраж>, <выраж>):<блок_кода> |
20. <комент> | ::= #any |
21. <вывод> | ::= print(<выраж>) |
Правило | FIRST(A) | FOLLOW(A) |
---|---|---|
1. <прог> | id ,if,def,for,print,# |
$ |
2. <спис_опер> | id ,if,def,for,print,# |
$ |
3. <спис_опер_конец> | ε,nl |
$ |
4. <спис_опер>' | nl |
$ |
5. <опер> | id ,if,def,for,print,# |
nl ,$ |
6. <присваив> | id |
nl ,$ |
7. <операц_присваив> | =,+=,-=,/=,*= | (,id ,lit ,True,False |
8. <выраж> | (,id ,lit ,True,False |
nl ,$,),:,, |
9. <выраж_конец> | ε,+,-,*,/,==,!=,>,<,>=,<= | nl ,$,),:,, |
10. <знач> | id ,lit ,True,False |
ε,+,-,*,/,==,!=,>,<,>=,<=,nl ,$,),:,, |
11. <операц> | +,-,*,/,==,!=,>,<,>=,<= | id ,lit ,True,False |
12. <скоб_выраж> | ( | nl ,$,),:,, ,+,-,*,/,==,!=,>,<,>=,<= |
13. <усл> | if | nl ,$ |
14. <блок_кода> | id ,if,def,for,print,#,nl |
nl ,$ |
15. <функ> | def | nl ,$ |
16. <спис_перем> | ε,id |
) |
17. <спис_перем_конец> | ε,, |
) |
18. <спис_перем>' | , |
) |
19. <цикл> | for | nl ,$ |
20. <комент> | # | nl ,$ |
21. <вывод> | nl ,$ |