gisele-language 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data/CHANGELOG.md +5 -0
  2. data/Gemfile +12 -0
  3. data/Gemfile.lock +26 -0
  4. data/LICENCE.md +22 -0
  5. data/Manifest.txt +13 -0
  6. data/README.md +7 -0
  7. data/Rakefile +11 -0
  8. data/gisele-language.gemspec +188 -0
  9. data/gisele-language.noespec +24 -0
  10. data/lib/gisele/language/ast/bool_and.rb +14 -0
  11. data/lib/gisele/language/ast/bool_expr.rb +22 -0
  12. data/lib/gisele/language/ast/bool_not.rb +14 -0
  13. data/lib/gisele/language/ast/bool_or.rb +14 -0
  14. data/lib/gisele/language/ast/case_st.rb +14 -0
  15. data/lib/gisele/language/ast/else_clause.rb +14 -0
  16. data/lib/gisele/language/ast/elsif_clause.rb +14 -0
  17. data/lib/gisele/language/ast/if_st.rb +14 -0
  18. data/lib/gisele/language/ast/node.rb +35 -0
  19. data/lib/gisele/language/ast/task_call_st.rb +14 -0
  20. data/lib/gisele/language/ast/var_ref.rb +14 -0
  21. data/lib/gisele/language/ast/when_clause.rb +14 -0
  22. data/lib/gisele/language/ast/while_st.rb +14 -0
  23. data/lib/gisele/language/grammar.citrus +236 -0
  24. data/lib/gisele/language/grammar.sexp.yml +83 -0
  25. data/lib/gisele/language/processors/elsif_flattener.rb +36 -0
  26. data/lib/gisele/language/processors/if_to_case.rb +65 -0
  27. data/lib/gisele/language/processors/scoping_helper.rb +32 -0
  28. data/lib/gisele/language/processors/sugar_removal.rb +17 -0
  29. data/lib/gisele/language/processors.rb +4 -0
  30. data/lib/gisele/language/syntax/bool_and.rb +14 -0
  31. data/lib/gisele/language/syntax/bool_expr.rb +14 -0
  32. data/lib/gisele/language/syntax/bool_lit.rb +14 -0
  33. data/lib/gisele/language/syntax/bool_not.rb +14 -0
  34. data/lib/gisele/language/syntax/bool_or.rb +14 -0
  35. data/lib/gisele/language/syntax/bool_paren.rb +14 -0
  36. data/lib/gisele/language/syntax/case_st.rb +19 -0
  37. data/lib/gisele/language/syntax/else_clause.rb +14 -0
  38. data/lib/gisele/language/syntax/elsif_clause.rb +16 -0
  39. data/lib/gisele/language/syntax/event_set.rb +15 -0
  40. data/lib/gisele/language/syntax/fluent_def.rb +18 -0
  41. data/lib/gisele/language/syntax/if_st.rb +18 -0
  42. data/lib/gisele/language/syntax/implicit_seq_st.rb +16 -0
  43. data/lib/gisele/language/syntax/node.rb +40 -0
  44. data/lib/gisele/language/syntax/par_st.rb +14 -0
  45. data/lib/gisele/language/syntax/seq_st.rb +14 -0
  46. data/lib/gisele/language/syntax/st_list.rb +14 -0
  47. data/lib/gisele/language/syntax/task_call_st.rb +14 -0
  48. data/lib/gisele/language/syntax/task_def.rb +18 -0
  49. data/lib/gisele/language/syntax/trackvar_def.rb +19 -0
  50. data/lib/gisele/language/syntax/unit_def.rb +14 -0
  51. data/lib/gisele/language/syntax/var_ref.rb +14 -0
  52. data/lib/gisele/language/syntax/when_clause.rb +16 -0
  53. data/lib/gisele/language/syntax/while_st.rb +16 -0
  54. data/lib/gisele/language.rb +31 -0
  55. data/lib/gisele-language/loader.rb +3 -0
  56. data/lib/gisele-language/version.rb +16 -0
  57. data/lib/gisele-language.rb +19 -0
  58. data/spec/fixtures/tasks/complete.gis +40 -0
  59. data/spec/fixtures/tasks/simple.ast +51 -0
  60. data/spec/fixtures/tasks/simple.gis +16 -0
  61. data/spec/language/ast/test_bool_expr.rb +50 -0
  62. data/spec/language/grammar_sexp/test_case_st.rb +20 -0
  63. data/spec/language/grammar_sexp/test_event_set.rb +14 -0
  64. data/spec/language/grammar_sexp/test_fluent_def.rb +18 -0
  65. data/spec/language/grammar_sexp/test_initially.rb +18 -0
  66. data/spec/language/grammar_sexp/test_nop_st.rb +10 -0
  67. data/spec/language/grammar_sexp/test_when_clause.rb +12 -0
  68. data/spec/language/processors/test_elsif_flattener.rb +94 -0
  69. data/spec/language/processors/test_if_to_case.rb +105 -0
  70. data/spec/language/processors/test_scoping_helper.rb +45 -0
  71. data/spec/language/syntax/grammar/test_bool_expr.rb +34 -0
  72. data/spec/language/syntax/grammar/test_boolean_literal.rb +17 -0
  73. data/spec/language/syntax/grammar/test_case_st.rb +60 -0
  74. data/spec/language/syntax/grammar/test_event.rb +18 -0
  75. data/spec/language/syntax/grammar/test_event_name.rb +21 -0
  76. data/spec/language/syntax/grammar/test_event_set.rb +26 -0
  77. data/spec/language/syntax/grammar/test_fluent_def.rb +21 -0
  78. data/spec/language/syntax/grammar/test_if_st.rb +21 -0
  79. data/spec/language/syntax/grammar/test_par_st.rb +11 -0
  80. data/spec/language/syntax/grammar/test_process_statement.rb +19 -0
  81. data/spec/language/syntax/grammar/test_seq_st.rb +11 -0
  82. data/spec/language/syntax/grammar/test_spaces.rb +19 -0
  83. data/spec/language/syntax/grammar/test_spacing.rb +17 -0
  84. data/spec/language/syntax/grammar/test_task_def.rb +35 -0
  85. data/spec/language/syntax/grammar/test_task_name.rb +19 -0
  86. data/spec/language/syntax/grammar/test_task_start_or_end.rb +17 -0
  87. data/spec/language/syntax/grammar/test_trackvar_def.rb +21 -0
  88. data/spec/language/syntax/grammar/test_unit_def.rb +29 -0
  89. data/spec/language/syntax/grammar/test_variable_name.rb +51 -0
  90. data/spec/language/syntax/grammar/test_when_clause.rb +21 -0
  91. data/spec/language/syntax/grammar/test_while_st.rb +11 -0
  92. data/spec/language/syntax/to_ast/test_bool_expr.rb +32 -0
  93. data/spec/language/syntax/to_ast/test_case_st.rb +47 -0
  94. data/spec/language/syntax/to_ast/test_else_clause.rb +13 -0
  95. data/spec/language/syntax/to_ast/test_elsif_clause.rb +15 -0
  96. data/spec/language/syntax/to_ast/test_event_set.rb +24 -0
  97. data/spec/language/syntax/to_ast/test_fluent_def.rb +26 -0
  98. data/spec/language/syntax/to_ast/test_if_st.rb +39 -0
  99. data/spec/language/syntax/to_ast/test_par_st.rb +12 -0
  100. data/spec/language/syntax/to_ast/test_seq_st.rb +12 -0
  101. data/spec/language/syntax/to_ast/test_task_call_st.rb +10 -0
  102. data/spec/language/syntax/to_ast/test_task_def.rb +44 -0
  103. data/spec/language/syntax/to_ast/test_trackvar_def.rb +26 -0
  104. data/spec/language/syntax/to_ast/test_unit_def.rb +28 -0
  105. data/spec/language/syntax/to_ast/test_var_ref.rb +12 -0
  106. data/spec/language/syntax/to_ast/test_when_clause.rb +15 -0
  107. data/spec/language/syntax/to_ast/test_while_st.rb +24 -0
  108. data/spec/language/test_syntax.rb +51 -0
  109. data/spec/spec_helper.rb +44 -0
  110. data/spec/test_gisele-language.rb +8 -0
  111. data/tasks/gem.rake +73 -0
  112. data/tasks/spec_test.rake +71 -0
  113. metadata +269 -0
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # 0.5.0 / FIX ME
2
+
3
+ * Enhancements
4
+
5
+ * Birthday!
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :runtime do
4
+ gem "citrus", "~> 2.4"
5
+ gem "path", "~> 1.2"
6
+ gem "sexpr", "~> 0.5.0"
7
+ end
8
+
9
+ group :development do
10
+ gem "rake", "~> 0.9.2"
11
+ gem "rspec", "~> 2.11"
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,26 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ citrus (2.4.1)
5
+ diff-lcs (1.1.3)
6
+ path (1.3.0)
7
+ rake (0.9.2.2)
8
+ rspec (2.11.0)
9
+ rspec-core (~> 2.11.0)
10
+ rspec-expectations (~> 2.11.0)
11
+ rspec-mocks (~> 2.11.0)
12
+ rspec-core (2.11.1)
13
+ rspec-expectations (2.11.1)
14
+ diff-lcs (~> 1.1.3)
15
+ rspec-mocks (2.11.1)
16
+ sexpr (0.5.1)
17
+
18
+ PLATFORMS
19
+ ruby
20
+
21
+ DEPENDENCIES
22
+ citrus (~> 2.4)
23
+ path (~> 1.2)
24
+ rake (~> 0.9.2)
25
+ rspec (~> 2.11)
26
+ sexpr (~> 0.5.0)
data/LICENCE.md ADDED
@@ -0,0 +1,22 @@
1
+ # The MIT Licence
2
+
3
+ Copyright (c) 2012 - Bernard Lambeau
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Manifest.txt ADDED
@@ -0,0 +1,13 @@
1
+ gisele-language.gemspec
2
+ gisele-language.noespec
3
+ CHANGELOG.md
4
+ Gemfile
5
+ Gemfile.lock
6
+ bin/**/*
7
+ lib/**/*
8
+ LICENCE.md
9
+ Manifest.txt
10
+ Rakefile
11
+ README.md
12
+ spec/**/*
13
+ tasks/**/*
data/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # Gisele::Language
2
+
3
+ The Gisele Process Modeling Language
4
+
5
+ ## Links
6
+
7
+ https://github.com/blambeau/gisele-language
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ # We run tests by default
2
+ task :default => :test
3
+
4
+ #
5
+ # Install all tasks found in tasks folder
6
+ #
7
+ # See .rake files there for complete documentation.
8
+ #
9
+ Dir["tasks/*.rake"].each do |taskfile|
10
+ load taskfile
11
+ end
@@ -0,0 +1,188 @@
1
+ # We require your library, mainly to have access to the VERSION number.
2
+ # Feel free to set $version manually.
3
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
+ require "gisele-language/version"
5
+ $version = Gisele::Language::Version.to_s
6
+
7
+ #
8
+ # This is your Gem specification. Default values are provided so that your library
9
+ # should be correctly packaged given what you have described in the .noespec file.
10
+ #
11
+ Gem::Specification.new do |s|
12
+
13
+ ################################################################### ABOUT YOUR GEM
14
+
15
+ # Gem name (required)
16
+ s.name = "gisele-language"
17
+
18
+ # Gem version (required)
19
+ s.version = $version
20
+
21
+ # A short summary of this gem
22
+ #
23
+ # This is displayed in `gem list -d`.
24
+ s.summary = "The Gisele Process Modeling Language"
25
+
26
+ # A long description of this gem (required)
27
+ #
28
+ # The description should be more detailed than the summary. For example,
29
+ # you might wish to copy the entire README into the description.
30
+ s.description = "Provides the parser + compiler infrastructure for the Gisele process modeling language."
31
+
32
+ # The URL of this gem home page (optional)
33
+ s.homepage = "https://github.com/blambeau/gisele-language"
34
+
35
+ # Gem publication date (required but auto)
36
+ #
37
+ # Today is automatically used by default, uncomment only if
38
+ # you know what you do!
39
+ #
40
+ # s.date = Time.now.strftime('%Y-%m-%d')
41
+
42
+ # The license(s) for the library. Each license must be a short name, no
43
+ # more than 64 characters.
44
+ #
45
+ # s.licences = %w{}
46
+
47
+ # The rubyforge project this gem lives under (optional)
48
+ #
49
+ # s.rubyforge_project = nil
50
+
51
+ ################################################################### ABOUT THE AUTHORS
52
+
53
+ # The list of author names who wrote this gem.
54
+ #
55
+ # If you are providing multiple authors and multiple emails they should be
56
+ # in the same order.
57
+ #
58
+ s.authors = ["Bernard Lambeau"]
59
+
60
+ # Contact emails for this gem
61
+ #
62
+ # If you are providing multiple authors and multiple emails they should be
63
+ # in the same order.
64
+ #
65
+ # NOTE: Somewhat strangly this attribute is always singular!
66
+ # Don't replace by s.emails = ...
67
+ s.email = ["blambeau@gmail.com"]
68
+
69
+ ################################################################### PATHS, FILES, BINARIES
70
+
71
+ # Paths in the gem to add to $LOAD_PATH when this gem is
72
+ # activated (required).
73
+ #
74
+ # The default 'lib' is typically sufficient.
75
+ s.require_paths = ["lib"]
76
+
77
+ # Files included in this gem.
78
+ #
79
+ # By default, we take all files included in the Manifest.txt file on root
80
+ # of the project. Entries of the manifest are interpreted as Dir[...]
81
+ # patterns so that lazy people may use wilcards like lib/**/*
82
+ #
83
+ here = File.expand_path(File.dirname(__FILE__))
84
+ s.files = File.readlines(File.join(here, 'Manifest.txt')).
85
+ inject([]){|files, pattern| files + Dir[File.join(here, pattern.strip)]}.
86
+ collect{|x| x[(1+here.size)..-1]}
87
+
88
+ # Test files included in this gem.
89
+ #
90
+ s.test_files = Dir["test/**/*"] + Dir["spec/**/*"]
91
+
92
+ # The path in the gem for executable scripts (optional)
93
+ #
94
+ s.bindir = "bin"
95
+
96
+ # Executables included in the gem.
97
+ #
98
+ s.executables = (Dir["bin/*"]).collect{|f| File.basename(f)}
99
+
100
+ ################################################################### REQUIREMENTS & INSTALL
101
+ # Remember the gem version requirements operators and schemes:
102
+ # = Equals version
103
+ # != Not equal to version
104
+ # > Greater than version
105
+ # < Less than version
106
+ # >= Greater than or equal to
107
+ # <= Less than or equal to
108
+ # ~> Approximately greater than
109
+ #
110
+ # Don't forget to have a look at http://lmgtfy.com/?q=Ruby+Versioning+Policies
111
+ # for setting your gem version.
112
+ #
113
+ # For your requirements to other gems, remember that
114
+ # ">= 2.2.0" (optimistic: specify minimal version)
115
+ # ">= 2.2.0", "< 3.0" (pessimistic: not greater than the next major)
116
+ # "~> 2.2" (shortcut for ">= 2.2.0", "< 3.0")
117
+ # "~> 2.2.0" (shortcut for ">= 2.2.0", "< 2.3.0")
118
+ #
119
+
120
+ #
121
+ # One call to add_dependency('gem_name', 'gem version requirement') for each
122
+ # runtime dependency. These gems will be installed with your gem.
123
+ # One call to add_development_dependency('gem_name', 'gem version requirement')
124
+ # for each development dependency. These gems are required for developers
125
+ #
126
+ s.add_development_dependency("rake", "~> 0.9.2")
127
+ s.add_development_dependency("rspec", "~> 2.11")
128
+ s.add_dependency("citrus", "~> 2.4")
129
+ s.add_dependency("path", "~> 1.2")
130
+ s.add_dependency("sexpr", "~> 0.5.0")
131
+
132
+ # The version of ruby required by this gem
133
+ #
134
+ # Uncomment and set this if your gem requires specific ruby versions.
135
+ #
136
+ # s.required_ruby_version = ">= 0"
137
+
138
+ # The RubyGems version required by this gem
139
+ #
140
+ # s.required_rubygems_version = ">= 0"
141
+
142
+ # The platform this gem runs on. See Gem::Platform for details.
143
+ #
144
+ # s.platform = nil
145
+
146
+ # Extensions to build when installing the gem.
147
+ #
148
+ # Valid types of extensions are extconf.rb files, configure scripts
149
+ # and rakefiles or mkrf_conf files.
150
+ #
151
+ s.extensions = []
152
+
153
+ # External (to RubyGems) requirements that must be met for this gem to work.
154
+ # It’s simply information for the user.
155
+ #
156
+ s.requirements = nil
157
+
158
+ # A message that gets displayed after the gem is installed
159
+ #
160
+ # Uncomment and set this if you want to say something to the user
161
+ # after gem installation
162
+ #
163
+ s.post_install_message = nil
164
+
165
+ ################################################################### SECURITY
166
+
167
+ # The key used to sign this gem. See Gem::Security for details.
168
+ #
169
+ # s.signing_key = nil
170
+
171
+ # The certificate chain used to sign this gem. See Gem::Security for
172
+ # details.
173
+ #
174
+ # s.cert_chain = []
175
+
176
+ ################################################################### RDOC
177
+
178
+ # An ARGV style array of options to RDoc
179
+ #
180
+ # See 'rdoc --help' about this
181
+ #
182
+ s.rdoc_options = []
183
+
184
+ # Extra files to add to RDoc such as README
185
+ #
186
+ s.extra_rdoc_files = Dir["README.md"] + Dir["CHANGELOG.md"] + Dir["LICENCE.md"]
187
+
188
+ end
@@ -0,0 +1,24 @@
1
+ template-info:
2
+ name: "rubygem.noe"
3
+ version: 2.0.0
4
+ variables:
5
+ lower:
6
+ gisele-language
7
+ upper:
8
+ Gisele::Language
9
+ version:
10
+ 0.5.0
11
+ summary: |-
12
+ The Gisele Process Modeling Language
13
+ description: |-
14
+ Provides the parser + compiler infrastructure for the Gisele process modeling language.
15
+ authors:
16
+ - {name: Bernard Lambeau, email: blambeau@gmail.com}
17
+ links:
18
+ - https://github.com/blambeau/gisele-language
19
+ dependencies:
20
+ - {name: citrus, version: "~> 2.4", groups: [runtime]}
21
+ - {name: path, version: "~> 1.2", groups: [runtime]}
22
+ - {name: sexpr, version: "~> 0.5.0", groups: [runtime]}
23
+ - {name: rake, version: "~> 0.9.2", groups: [development]}
24
+ - {name: rspec, version: "~> 2.11", groups: [development]}
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module BoolAnd
5
+ include Node
6
+
7
+ def label
8
+ (citrus_match && citrus_match.to_s) || "(#{self[1].label} and #{self[2].label})"
9
+ end
10
+
11
+ end # module BoolAnd
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,22 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module BoolExpr
5
+ include Node
6
+
7
+ def label
8
+ (citrus_match && citrus_match.to_s) || last.label
9
+ end
10
+
11
+ def negate
12
+ if last.first == :bool_not
13
+ Language.sexpr [:bool_expr, last.last]
14
+ else
15
+ Language.sexpr [ :bool_expr, [:bool_not, last] ]
16
+ end
17
+ end
18
+
19
+ end # module BoolExpr
20
+ end # module AST
21
+ end # module Language
22
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module BoolNot
5
+ include Node
6
+
7
+ def label
8
+ (citrus_match && citrus_match.to_s) || "not(#{last.label})"
9
+ end
10
+
11
+ end # module BoolNot
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module BoolOr
5
+ include Node
6
+
7
+ def label
8
+ (citrus_match && citrus_match.to_s) || "(#{self[1].label} or #{self[2].label})"
9
+ end
10
+
11
+ end # module BoolOr
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module CaseSt
5
+ include Node
6
+
7
+ def label
8
+ (self[1] && self[1].label) || ""
9
+ end
10
+
11
+ end # module CaseSt
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module ElseClause
5
+ include Node
6
+
7
+ def label
8
+ "[else]"
9
+ end
10
+
11
+ end # module ElseClause
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module ElsifClause
5
+ include Node
6
+
7
+ def label
8
+ self[1].label
9
+ end
10
+
11
+ end # module ElsifClause
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module IfSt
5
+ include Node
6
+
7
+ def label
8
+ self[1].label
9
+ end
10
+
11
+ end # module IfSt
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,35 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module Node
5
+
6
+ def citrus_match
7
+ tracking_markers[:citrus_match]
8
+ end
9
+
10
+ # Returns a label for this AST node
11
+ def label
12
+ ""
13
+ end
14
+
15
+ # Checks validity over the definition
16
+ def ===(sexp)
17
+ Language[rule_name] === sexp
18
+ end
19
+
20
+ end # module Node
21
+ end # module AST
22
+ end # module Language
23
+ end # module Gisele
24
+ require_relative 'task_call_st'
25
+ require_relative 'while_st'
26
+ require_relative 'if_st'
27
+ require_relative 'else_clause'
28
+ require_relative 'elsif_clause'
29
+ require_relative 'case_st'
30
+ require_relative 'when_clause'
31
+ require_relative 'bool_expr'
32
+ require_relative 'bool_and'
33
+ require_relative 'bool_or'
34
+ require_relative 'bool_not'
35
+ require_relative 'var_ref'
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module TaskCallSt
5
+ include Node
6
+
7
+ def label
8
+ last.to_s
9
+ end
10
+
11
+ end # module TaskCallSt
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module VarRef
5
+ include Node
6
+
7
+ def label
8
+ last.to_s
9
+ end
10
+
11
+ end # module BoolNot
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module WhenClause
5
+ include Node
6
+
7
+ def label
8
+ self[1].label
9
+ end
10
+
11
+ end # module WhenClause
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele
@@ -0,0 +1,14 @@
1
+ module Gisele
2
+ module Language
3
+ module AST
4
+ module WhileSt
5
+ include Node
6
+
7
+ def label
8
+ self[1].label
9
+ end
10
+
11
+ end # module WhileSt
12
+ end # module AST
13
+ end # module Language
14
+ end # module Gisele