ceml 0.7.13 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/Makefile +1 -1
  2. data/VERSION +1 -1
  3. data/ceml.gemspec +62 -50
  4. data/guide/guide.html +69 -14
  5. data/guide/guide.md +74 -15
  6. data/guide/guide.pdf +0 -0
  7. data/lib/ceml/driver.rb +0 -181
  8. data/lib/ceml/lang/basic_instruction.rb +49 -0
  9. data/lib/ceml/{casting_statement.rb → lang/casting_statement.rb} +19 -9
  10. data/lib/ceml/{instruction_statements.rb → lang/instruction_statements.rb} +5 -16
  11. data/lib/ceml/{script.rb → lang/script.rb} +53 -43
  12. data/lib/ceml/lang/tt/casting.rb +432 -0
  13. data/lib/ceml/lang/tt/casting.treetop +29 -0
  14. data/lib/ceml/lang/tt/instructions.rb +1130 -0
  15. data/lib/ceml/lang/tt/instructions.treetop +86 -0
  16. data/lib/ceml/lang/tt/lexer.rb +1804 -0
  17. data/lib/ceml/{tt → lang/tt}/lexer.treetop +70 -7
  18. data/lib/ceml/lang/tt/scripts.rb +647 -0
  19. data/lib/ceml/{tt → lang/tt}/scripts.treetop +2 -2
  20. data/lib/ceml/lang.rb +10 -0
  21. data/lib/ceml/models/audition.rb +65 -0
  22. data/lib/ceml/models/bundle.rb +64 -0
  23. data/lib/ceml/models/cast.rb +108 -0
  24. data/lib/ceml/models/castable.rb +81 -0
  25. data/lib/ceml/{incident.rb → models/incident.rb} +63 -15
  26. data/lib/ceml/models/incident_model.rb +100 -0
  27. data/lib/ceml/models/incident_role_slot.rb +16 -0
  28. data/lib/ceml/models/player.rb +80 -0
  29. data/lib/ceml/models/queue.rb +12 -0
  30. data/lib/ceml/models/waiting_room.rb +40 -0
  31. data/lib/ceml/models.rb +16 -0
  32. data/lib/ceml/processor.rb +162 -0
  33. data/lib/ceml.rb +7 -14
  34. data/test/askchain.ceml +6 -0
  35. data/test/compliment.ceml +4 -0
  36. data/test/dialogues/accept.ceml +24 -0
  37. data/test/dialogues/basic_seed.ceml +26 -0
  38. data/test/dialogues/jordan.ceml +121 -0
  39. data/test/helper.rb +44 -39
  40. data/test/jane.ceml +48 -0
  41. data/test/{test_casting.rb → lang/test_casting.rb} +5 -0
  42. data/test/lang/test_instructions.rb +42 -0
  43. data/test/{test_scripts.rb → lang/test_scripts.rb} +3 -2
  44. data/test/sync.ceml +6 -0
  45. data/test/test_castable.rb +20 -0
  46. data/test/test_dialogues.rb +58 -0
  47. data/test/test_incident.rb +64 -127
  48. metadata +54 -30
  49. data/.gitignore +0 -23
  50. data/lib/ceml/confluence.rb +0 -63
  51. data/lib/ceml/role.rb +0 -61
  52. data/lib/ceml/tt/casting.treetop +0 -65
  53. data/lib/ceml/tt/instructions.treetop +0 -91
  54. data/test/test_instructions.rb +0 -27
  55. data/test/test_release.rb +0 -78
@@ -0,0 +1,86 @@
1
+ module CEML
2
+ grammar Instructions
3
+ include Lexer
4
+
5
+ rule basic_statement
6
+ (ask_stmt / tell_stmt / assign_stmt / record_stmt / set_stmt / pick_stmt / seed_stmt / sync_stmt /
7
+ replace_stmt / release_stmt)
8
+ end
9
+
10
+ rule instruction_stmt
11
+ later:later? basic_statement {
12
+ def delay
13
+ later.duration.seconds if respond_to? :later and not later.empty?
14
+ end
15
+
16
+ def bytecode
17
+ if delay
18
+ [[[role], :start_delay, delay], [[role], :complete_delay]] + elements[1].bytecode
19
+ else
20
+ elements[1].bytecode
21
+ end
22
+ end
23
+ }
24
+ end
25
+
26
+ rule later
27
+ duration ws 'later' ','? ws
28
+ end
29
+
30
+ rule seed_stmt
31
+ 'seed' ws varname:id ws 'with' ws rolemap <BasicInstruction> {
32
+ def roles
33
+ rolemap.value.map do |x| x[:from].to_sym end
34
+ end
35
+ def bytecode
36
+ [[roles, :seed, {:target => varname.text_value, :rolemap => rolemap.value}]]
37
+ end
38
+ }
39
+ end
40
+
41
+ rule record_stmt
42
+ 'record' ws id ws varname:id <BasicInstruction>
43
+ end
44
+
45
+ rule tell_stmt
46
+ 'tell' ws id ':' ws? text <BasicInstruction>
47
+ end
48
+
49
+ rule assign_stmt
50
+ 'assign' ws id ':' ws? text <BasicInstruction>
51
+ end
52
+
53
+ rule ask_stmt
54
+ 'ask' ws id about:(ws 're' ws varname:id)? ':' ws? text <BasicInstruction>
55
+ end
56
+
57
+ rule set_stmt
58
+ 'set' ws id ws varname:id ':' ws? text <BasicInstruction>
59
+ end
60
+
61
+ rule pick_stmt
62
+ 'pick' ws id ws varname:id ':' ws? text <BasicInstruction>
63
+ end
64
+
65
+ rule sync_stmt
66
+ 'sync' ws id <BasicInstruction>
67
+ end
68
+
69
+ rule release_stmt
70
+ 'release' ws id condition:condition? <BasicInstruction>
71
+ end
72
+
73
+ rule replace_stmt
74
+ 'replace' ws id condition:condition? <BasicInstruction>
75
+ end
76
+
77
+ rule condition
78
+ ws type:('if' / 'unless') ws thing:id {
79
+ def value
80
+ [type.text_value.to_sym, thing.text_value.to_sym]
81
+ end
82
+ }
83
+ end
84
+
85
+ end
86
+ end