-
Notifications
You must be signed in to change notification settings - Fork 16
Gramáticas
<EXPR>::= IF ELSIF ELSE
<IF>::= COND BLOCK
<ELSIF>::= COND BLOCK ELSIF | ELSIF | COND BLOCK
<ELSE>::= BLOCK | 0
<BLOCK>::= ¿ACCION B? | ACCION | EXPR
<COND>::= CONDICIONAL | CONDICIONAL && CONDICIONAL | CONDICIONAL || CONDICIONAL | !CONDICIONAL
<BLOCK>::= ACCION B | ACCION | EXPR | WHILE
<EXPR>::= IF ELSIF ELSE
<IF>::= COND BLOCK
<ELSIF>::= COND BLOCK ELSIF | ELSIF | COND BLOCK
<ELSE>::= BLOCK | 0
<COND>::= CONDICIONAL | CONDICIONAL && CONDICIONAL | CONDICIONAL || CONDICIONAL | !CONDICIONAL
<WHILE>::= COND BLOQUE
Una gramática reactiva, no ambigua, con ifs pero sin bucles.
Los <
y >
indican no terminales.
Un statement
es o una función que devuelve un movimiento o un if.
<grammar> ::= <selection-statement>
<selection-statement> ::= if( <condition> ){ <statement> }
| if( <condition> ){ <statement> } else{ <statement> }
<statement> ::= <terminal-func>
| <selection-statement>
<terminal-func> ::= todas las funciones de la API que devuelven MOVE
<condition> ::= <boolean-func>
| <boolean-func> <boolean-operator> <boolean-func>
| <number-func> <number-operator> <number>
<boolean-func> ::= <boolean-api>
| !<boolean-api>
<boolean-api> ::= todas las funciones de la API que devuelven booleano
<boolean-operator> ::= &&
| ||
<number-func> ::= todas las funciones de la API que devuelven número (int o double)
<number-operator> ::= ==
| !=
| <
| >
| <=
| >=
<number> ::= 0
| <nonzero-digit><digit-sequence>
<digit-sequence> ::= ''
| <digit>
| <digit><digit-sequence>
<digit> ::= 0
| <nonzero-digit>
<nonzero-digit> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
- Quitamos el not en los operadores?
- Quitamos
<boolean-func> <boolean-operator> <boolean-func>
?
funciones de la API que devuelven MOVE
funciones de la API que devuelven booleano
todas las funciones de la API que devuelven número
funciones que devuelven Ghost
funciones que devuelven array (de enteros o de MOVE
)
https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%20C%20in%20Backus-Naur%20form.htm
https://www.cs.uaf.edu/2013/spring/cs331/lectures/lec-2013_01_30-bnf.html
http://scg.unibe.ch/archive/masters/DeZa09a.pdf
https://gist.github.com/rns/85c6d18fb62065ae1617#file-ambiguous
https://cran.r-project.org/web/packages/gramEvol/vignettes/ge-intro.pdf
http://stackoverflow.com/questions/14013792/how-to-implement-backus-naur-form-in-python
http://stackoverflow.com/questions/4728073/what-is-the-difference-between-an-expression-and-a-statement-in-python