jfmonsa / proyecto_discretas

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Proyecto Final Matematicas Discretas II

Backus Naur Form

  <semicolon> ::= ";"
  <dashes> ::= [-_]
  <coma> ::= ","
  
  <empty_spc> ::= " "
  <new_line> ::= "\n"

  <empty_chrs> ::= (<new_line> | <empty_spc>)*

  <int> ::= -?[1-9][0-9]*
  <bool> ::= "true" | "false"
  <char> ::= [a-zA-Z]+
  <string> ::= <char> | <dashes> | <int>

  <str_comment> ::= "/*"
  <end_comment> ::= "*/"
  <oneline_comment> ::= "//"

  <op_sum> ::= "+"
  <op_minus> ::= "-"
  <op_multiply> ::= "*"
  <op_division> ::= "/"

  <op_asignat> ::= "="

  <op_comp_equal> ::= "=="
  <op_max> ::= ">"
  <op_min> ::= "<"
  <op_min_equal> ::= "<="
  <op_max_equal> ::= ">="
  <op_not> ::= "!"
  <op_diff> ::= "!="

  <comparation_logic> ::= <int> |
                        <identifier> |
                        <comparation_logic><op_diff><comparation_logic> |
                        <comparation_logic><op_comp_equal><comparation_logic> |
                        <op_not><identifier>

  <comparation_int> ::= <int> |
                        <identifier> |
                        <comparation_int><op_max><comparation_int>|
                        <comparation_int><op_min><comparation_int>|
                        <comparation_int><op_min_equal><comparation_int>|
                        <comparation_int><op_max_equal><comparation_int>|

  <srt_bracket> ::= "{"
  <end_bracket> ::= "}"
  <str_parenth> ::= ")"
  <end_parenth> ::= "("

  <continue> ::= "continue"
  <break> ::= "break"

  <identifier> ::= <char>(<char>|<int>|<dashes>)*

  <expr> ::= <expr_simp> | <expr_comp>

  <expr_comp> ::= <function_def> |
                  <if_stmt> |
                  <else_stmt> |
                  <elif_stmt> |
                  <while_stmt> |
                  <for_stmt> |
                  <new_line>

  <expr_simp> ::= <int> |
             <bool> |
             <math_op> |
             <identifier> |
             <asignat> |
             <continue> |
             <break>

  <math_exp> ::= <int> |
                 <identifier> |
                 <math_exp> <op_sum> <math_exp> |
                 <math_exp> <op_minus> <math_exp> |
                 <math_exp> <op_multiply> <math_exp> |
                 <math_exp> <op_division> <math_exp>

  <asignat> ::= <identifier> <op_asign> <expr>


  <if_stmt> ::= "if" <str_parenth> (<bool>|<comparation_int>|<comparation_logic>)+ <end_parenth>
                <str_bracket>
                (<expr_simp>|<expr_comp>)+
                <end_bracket>
                (<elif_stmt>|<else_stmt>)*

  <else_stmt> ::= "else" <str_bracket> (<expr_simp>|<expr_comp>)+ <end_bracket>

  <elif_stmt> ::= "if" <str_parenth> (<bool>|<comparation_int>|<comparation_logic>)+ <end_parenth>
                <str_bracket>
                (<expr_simp>|<expr_comp>)+
                <end_bracket>
                (<elif_stmt>)*
                (<else_stmt>)* 

  <while_stmt> ::= "while" <str_parenth> (<bool>|<comparation_int>|<comparation_logic>)+ <end_parenth>
    <str_bracket>
      (<expr_simp>|<expr_comp>)+
    <end_bracket> 

  <for_stmt> ::= "for" 
    <str_parenth>
      <asignat> <semicolon>
      <comparation_int> <semicolon>
      <identifier><op_sum><op_sum>
    <end_parenth>
    <str_bracket>
      (<expr_simp>|<expr_comp>)+
    <end_bracket> 

Recursos y tutoriales utilizados

Videos

Introuduction to yacc

Complete tutorial

Mas videos xd

Ejemplo BNF python

Informacion adicional

About


Languages

Language:C 90.0%Language:Lex 5.4%Language:Yacc 4.5%Language:Shell 0.1%