Advertisement
Guest User

RePar

a guest
Dec 26th, 2013
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.84 KB | None | 0 0
  1. %{
  2.   (* File Expr/ExprPar.fsy
  3.      Parser specification for the simple expression language.
  4.    *)
  5.  
  6.   open Absyn
  7. %}
  8.  
  9. %token LPAR RPAR
  10. %token <char> RE
  11. %token STAR
  12. %token PIPE
  13. %token EOF
  14.  
  15. %start Main
  16. %type <Absyn.re> Main
  17.  
  18. %right LPAR
  19. %left RPAR
  20. %right PIPE
  21. %left STAR
  22.  
  23. %%
  24.  
  25. Main:
  26.     Re EOF                          { $1                }
  27. ;
  28.  
  29. Re:
  30.     LPAR Re RPAR                      { $2                }
  31.   | Re STAR                           { Star ($1)         }
  32.   | Concat                            { $1                }
  33.   | Union                             { $1                }
  34.   | RE                                { Char ($1)         }
  35. ;
  36.  
  37. Concat:
  38.     Re Re                             { Seq ($1, $2)      }
  39. ;
  40.  
  41. Union:
  42.     Re PIPE Re                        { Choice ($1, $3)   }
  43. ;
  44.  
  45. // vim: set ts=4 sw=4 et:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement