Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 2nd, 2012  |  syntax: None  |  size: 0.65 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Assign right uid to the variables met in the parser
  2. %{
  3.   let new_id =
  4.     let counter = ref 0 in
  5.       fun () -> incr counter; !counter
  6. %}
  7.  
  8. binding:
  9. | ids = separated_nonempty_list(COMMA, IDENT) COLON INTEGER
  10.     { List.map (fun id -> { name_v = id ; type_v = Type.Tint ; uid_v = new_id ()}) ids }
  11. | ids = separated_nonempty_list(COMMA, IDENT) COLON BOOLEAN
  12.     { List.map (fun id -> { name_v = id ; type_v = Type.Tbool ; uid_v = new_id ()}) ids}
  13.        
  14. command:
  15. | id = IDENT COLONEQ e = expression
  16.     { Cassign (Lvar { name_v = id; type_v = Type.Ttop; uid_v = -100}, e) }
  17.  
  18. expression_int:
  19. | id = IDENT { Evar { name_v = id; type_v = Type.Ttop; uid_v = -100} }