ceml 0.7.13 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Makefile +1 -1
- data/VERSION +1 -1
- data/ceml.gemspec +62 -50
- data/guide/guide.html +69 -14
- data/guide/guide.md +74 -15
- data/guide/guide.pdf +0 -0
- data/lib/ceml/driver.rb +0 -181
- data/lib/ceml/lang/basic_instruction.rb +49 -0
- data/lib/ceml/{casting_statement.rb → lang/casting_statement.rb} +19 -9
- data/lib/ceml/{instruction_statements.rb → lang/instruction_statements.rb} +5 -16
- data/lib/ceml/{script.rb → lang/script.rb} +53 -43
- data/lib/ceml/lang/tt/casting.rb +432 -0
- data/lib/ceml/lang/tt/casting.treetop +29 -0
- data/lib/ceml/lang/tt/instructions.rb +1130 -0
- data/lib/ceml/lang/tt/instructions.treetop +86 -0
- data/lib/ceml/lang/tt/lexer.rb +1804 -0
- data/lib/ceml/{tt → lang/tt}/lexer.treetop +70 -7
- data/lib/ceml/lang/tt/scripts.rb +647 -0
- data/lib/ceml/{tt → lang/tt}/scripts.treetop +2 -2
- data/lib/ceml/lang.rb +10 -0
- data/lib/ceml/models/audition.rb +65 -0
- data/lib/ceml/models/bundle.rb +64 -0
- data/lib/ceml/models/cast.rb +108 -0
- data/lib/ceml/models/castable.rb +81 -0
- data/lib/ceml/{incident.rb → models/incident.rb} +63 -15
- data/lib/ceml/models/incident_model.rb +100 -0
- data/lib/ceml/models/incident_role_slot.rb +16 -0
- data/lib/ceml/models/player.rb +80 -0
- data/lib/ceml/models/queue.rb +12 -0
- data/lib/ceml/models/waiting_room.rb +40 -0
- data/lib/ceml/models.rb +16 -0
- data/lib/ceml/processor.rb +162 -0
- data/lib/ceml.rb +7 -14
- data/test/askchain.ceml +6 -0
- data/test/compliment.ceml +4 -0
- data/test/dialogues/accept.ceml +24 -0
- data/test/dialogues/basic_seed.ceml +26 -0
- data/test/dialogues/jordan.ceml +121 -0
- data/test/helper.rb +44 -39
- data/test/jane.ceml +48 -0
- data/test/{test_casting.rb → lang/test_casting.rb} +5 -0
- data/test/lang/test_instructions.rb +42 -0
- data/test/{test_scripts.rb → lang/test_scripts.rb} +3 -2
- data/test/sync.ceml +6 -0
- data/test/test_castable.rb +20 -0
- data/test/test_dialogues.rb +58 -0
- data/test/test_incident.rb +64 -127
- metadata +54 -30
- data/.gitignore +0 -23
- data/lib/ceml/confluence.rb +0 -63
- data/lib/ceml/role.rb +0 -61
- data/lib/ceml/tt/casting.treetop +0 -65
- data/lib/ceml/tt/instructions.treetop +0 -91
- data/test/test_instructions.rb +0 -27
- 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
|