tripper 0.0.3d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/TODO +26 -0
  8. data/lib/generators/USAGE +8 -0
  9. data/lib/generators/tripper.rb +51 -0
  10. data/lib/generators/tripper/commonalities/commonalities.rb +226 -0
  11. data/lib/generators/tripper/detect_changes/detect_changes_generator.rb +173 -0
  12. data/lib/generators/tripper/detect_changes/model.rb +226 -0
  13. data/lib/generators/tripper/detect_changes/templates/migration.rb +7 -0
  14. data/lib/generators/tripper/detect_changes/templates/model/belongs_to.rb +1 -0
  15. data/lib/generators/tripper/detect_changes/templates/model/has_one.rb +1 -0
  16. data/lib/generators/tripper/detect_changes/templates/model/validates.rb +2 -0
  17. data/lib/generators/tripper/from_community/from_community_generator.rb +95 -0
  18. data/lib/generators/tripper/from_community/templates/actions/create.rb +8 -0
  19. data/lib/generators/tripper/from_community/templates/actions/destroy.rb +5 -0
  20. data/lib/generators/tripper/from_community/templates/actions/edit.rb +3 -0
  21. data/lib/generators/tripper/from_community/templates/actions/index.rb +3 -0
  22. data/lib/generators/tripper/from_community/templates/actions/new.rb +3 -0
  23. data/lib/generators/tripper/from_community/templates/actions/show.rb +3 -0
  24. data/lib/generators/tripper/from_community/templates/actions/update.rb +8 -0
  25. data/lib/generators/tripper/from_community/templates/controller.rb +3 -0
  26. data/lib/generators/tripper/from_community/templates/fixtures.yml +9 -0
  27. data/lib/generators/tripper/from_community/templates/helper.rb +2 -0
  28. data/lib/generators/tripper/from_community/templates/migration.rb +30 -0
  29. data/lib/generators/tripper/from_community/templates/model.rb +54 -0
  30. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/create.rb +11 -0
  31. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/destroy.rb +6 -0
  32. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/edit.rb +4 -0
  33. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/index.rb +4 -0
  34. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/new.rb +4 -0
  35. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/show.rb +4 -0
  36. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/update.rb +11 -0
  37. data/lib/generators/tripper/from_community/templates/tests/rspec/controller.rb +8 -0
  38. data/lib/generators/tripper/from_community/templates/tests/rspec/model.rb +7 -0
  39. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/create.rb +13 -0
  40. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/destroy.rb +8 -0
  41. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/edit.rb +6 -0
  42. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/index.rb +6 -0
  43. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/new.rb +6 -0
  44. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/show.rb +6 -0
  45. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/update.rb +13 -0
  46. data/lib/generators/tripper/from_community/templates/tests/shoulda/controller.rb +5 -0
  47. data/lib/generators/tripper/from_community/templates/tests/shoulda/model.rb +7 -0
  48. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/create.rb +11 -0
  49. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/destroy.rb +6 -0
  50. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/edit.rb +4 -0
  51. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/index.rb +4 -0
  52. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/new.rb +4 -0
  53. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/show.rb +4 -0
  54. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/update.rb +11 -0
  55. data/lib/generators/tripper/from_community/templates/tests/testunit/controller.rb +5 -0
  56. data/lib/generators/tripper/from_community/templates/tests/testunit/model.rb +7 -0
  57. data/lib/generators/tripper/from_community/templates/views/erb/_form.html.erb +16 -0
  58. data/lib/generators/tripper/from_community/templates/views/erb/edit.html.erb +14 -0
  59. data/lib/generators/tripper/from_community/templates/views/erb/index.html.erb +29 -0
  60. data/lib/generators/tripper/from_community/templates/views/erb/new.html.erb +7 -0
  61. data/lib/generators/tripper/from_community/templates/views/erb/show.html.erb +25 -0
  62. data/lib/generators/tripper/from_community/templates/views/haml/_form.html.haml +9 -0
  63. data/lib/generators/tripper/from_community/templates/views/haml/edit.html.haml +14 -0
  64. data/lib/generators/tripper/from_community/templates/views/haml/index.html.haml +25 -0
  65. data/lib/generators/tripper/from_community/templates/views/haml/new.html.haml +7 -0
  66. data/lib/generators/tripper/from_community/templates/views/haml/show.html.haml +20 -0
  67. data/lib/generators/tripper/layout/USAGE +18 -0
  68. data/lib/generators/tripper/layout/layout_generator.rb +29 -0
  69. data/lib/generators/tripper/layout/templates/error_messages_helper.rb +23 -0
  70. data/lib/generators/tripper/layout/templates/layout.html.erb +19 -0
  71. data/lib/generators/tripper/layout/templates/layout.html.haml +21 -0
  72. data/lib/generators/tripper/layout/templates/layout_helper.rb +22 -0
  73. data/lib/generators/tripper/layout/templates/stylesheet.css +83 -0
  74. data/lib/generators/tripper/layout/templates/stylesheet.sass +73 -0
  75. data/lib/generators/tripper/obj_constraint.rb +23 -0
  76. data/lib/generators/tripper/predicate.rb +12 -0
  77. data/lib/generators/tripper/sync_with_community/model.rb +260 -0
  78. data/lib/generators/tripper/sync_with_community/sync_with_community_generator.rb +310 -0
  79. data/lib/generators/tripper/sync_with_community/templates/migration.rb +7 -0
  80. data/lib/generators/tripper/sync_with_community/templates/model/belongs_to.rb +1 -0
  81. data/lib/generators/tripper/sync_with_community/templates/model/has_one.rb +1 -0
  82. data/lib/generators/tripper/sync_with_community/templates/model/validates.rb +2 -0
  83. data/lib/generators/tripper/templates/actions/create.rb +8 -0
  84. data/lib/generators/tripper/templates/actions/destroy.rb +5 -0
  85. data/lib/generators/tripper/templates/actions/edit.rb +3 -0
  86. data/lib/generators/tripper/templates/actions/index.rb +3 -0
  87. data/lib/generators/tripper/templates/actions/new.rb +3 -0
  88. data/lib/generators/tripper/templates/actions/show.rb +3 -0
  89. data/lib/generators/tripper/templates/actions/update.rb +8 -0
  90. data/lib/generators/tripper/templates/controller.rb +3 -0
  91. data/lib/generators/tripper/templates/fixtures.yml +9 -0
  92. data/lib/generators/tripper/templates/helper.rb +2 -0
  93. data/lib/generators/tripper/templates/migration.rb +30 -0
  94. data/lib/generators/tripper/templates/model.rb +54 -0
  95. data/lib/generators/tripper/templates/tests/rspec/actions/create.rb +11 -0
  96. data/lib/generators/tripper/templates/tests/rspec/actions/destroy.rb +6 -0
  97. data/lib/generators/tripper/templates/tests/rspec/actions/edit.rb +4 -0
  98. data/lib/generators/tripper/templates/tests/rspec/actions/index.rb +4 -0
  99. data/lib/generators/tripper/templates/tests/rspec/actions/new.rb +4 -0
  100. data/lib/generators/tripper/templates/tests/rspec/actions/show.rb +4 -0
  101. data/lib/generators/tripper/templates/tests/rspec/actions/update.rb +11 -0
  102. data/lib/generators/tripper/templates/tests/rspec/controller.rb +8 -0
  103. data/lib/generators/tripper/templates/tests/rspec/model.rb +7 -0
  104. data/lib/generators/tripper/templates/tests/shoulda/actions/create.rb +13 -0
  105. data/lib/generators/tripper/templates/tests/shoulda/actions/destroy.rb +8 -0
  106. data/lib/generators/tripper/templates/tests/shoulda/actions/edit.rb +6 -0
  107. data/lib/generators/tripper/templates/tests/shoulda/actions/index.rb +6 -0
  108. data/lib/generators/tripper/templates/tests/shoulda/actions/new.rb +6 -0
  109. data/lib/generators/tripper/templates/tests/shoulda/actions/show.rb +6 -0
  110. data/lib/generators/tripper/templates/tests/shoulda/actions/update.rb +13 -0
  111. data/lib/generators/tripper/templates/tests/shoulda/controller.rb +5 -0
  112. data/lib/generators/tripper/templates/tests/shoulda/model.rb +7 -0
  113. data/lib/generators/tripper/templates/tests/testunit/actions/create.rb +11 -0
  114. data/lib/generators/tripper/templates/tests/testunit/actions/destroy.rb +6 -0
  115. data/lib/generators/tripper/templates/tests/testunit/actions/edit.rb +4 -0
  116. data/lib/generators/tripper/templates/tests/testunit/actions/index.rb +4 -0
  117. data/lib/generators/tripper/templates/tests/testunit/actions/new.rb +4 -0
  118. data/lib/generators/tripper/templates/tests/testunit/actions/show.rb +4 -0
  119. data/lib/generators/tripper/templates/tests/testunit/actions/update.rb +11 -0
  120. data/lib/generators/tripper/templates/tests/testunit/controller.rb +5 -0
  121. data/lib/generators/tripper/templates/tests/testunit/model.rb +7 -0
  122. data/lib/generators/tripper/templates/views/erb/_form.html.erb +16 -0
  123. data/lib/generators/tripper/templates/views/erb/edit.html.erb +14 -0
  124. data/lib/generators/tripper/templates/views/erb/index.html.erb +29 -0
  125. data/lib/generators/tripper/templates/views/erb/new.html.erb +7 -0
  126. data/lib/generators/tripper/templates/views/erb/show.html.erb +25 -0
  127. data/lib/generators/tripper/templates/views/haml/_form.html.haml +9 -0
  128. data/lib/generators/tripper/templates/views/haml/edit.html.haml +14 -0
  129. data/lib/generators/tripper/templates/views/haml/index.html.haml +25 -0
  130. data/lib/generators/tripper/templates/views/haml/new.html.haml +7 -0
  131. data/lib/generators/tripper/templates/views/haml/show.html.haml +20 -0
  132. data/lib/tripper.rb +1 -0
  133. data/lib/tripper/GOSPLDB/config/database.yml +6 -0
  134. data/lib/tripper/GOSPLDB/config_db.rb +9 -0
  135. data/lib/tripper/GOSPLDB/console +2 -0
  136. data/lib/tripper/GOSPLDB/gospl_db_classes.rb +343 -0
  137. data/lib/tripper/GOSPLDB/play_around.rb +4 -0
  138. data/lib/tripper/GOSPLDB/rakefile.rb +88 -0
  139. data/lib/tripper/GOSPLDBToORMDB/gospl_db_to_orm_db.rb +88 -0
  140. data/lib/tripper/ORMDB/config/database.yml +6 -0
  141. data/lib/tripper/ORMDB/config_db.rb +9 -0
  142. data/lib/tripper/ORMDB/console +2 -0
  143. data/lib/tripper/ORMDB/db/migrations/0_create_orm_object_table.rb +17 -0
  144. data/lib/tripper/ORMDB/db/migrations/10_create_no_lot_constraint_table.rb +17 -0
  145. data/lib/tripper/ORMDB/db/migrations/11_create_value_constraint_table.rb +14 -0
  146. data/lib/tripper/ORMDB/db/migrations/12_create_value_constraint_value_table.rb +16 -0
  147. data/lib/tripper/ORMDB/db/migrations/13_create_value_range_table.rb +15 -0
  148. data/lib/tripper/ORMDB/db/migrations/14_create_frequency_constraint_table.rb +16 -0
  149. data/lib/tripper/ORMDB/db/migrations/15_create_value_table.rb +15 -0
  150. data/lib/tripper/ORMDB/db/migrations/16_create_ring_constraint_table.rb +14 -0
  151. data/lib/tripper/ORMDB/db/migrations/17_create_orm_schema_table.rb +21 -0
  152. data/lib/tripper/ORMDB/db/migrations/18_create_uniqueness_constraint_table.rb +15 -0
  153. data/lib/tripper/ORMDB/db/migrations/1_create_no_lot_table.rb +18 -0
  154. data/lib/tripper/ORMDB/db/migrations/2_create_lot_table.rb +18 -0
  155. data/lib/tripper/ORMDB/db/migrations/3_create_object_role_table.rb +18 -0
  156. data/lib/tripper/ORMDB/db/migrations/4_create_reference_table.rb +17 -0
  157. data/lib/tripper/ORMDB/db/migrations/5_create_predicate_table.rb +18 -0
  158. data/lib/tripper/ORMDB/db/migrations/6_create_object_role_constraint_table.rb +18 -0
  159. data/lib/tripper/ORMDB/db/migrations/7_create_subtype_table.rb +17 -0
  160. data/lib/tripper/ORMDB/db/migrations/8_create_mandatory_constraint_table.rb +15 -0
  161. data/lib/tripper/ORMDB/db/migrations/9_create_constraint_table.rb +15 -0
  162. data/lib/tripper/ORMDB/db/orm_ml.sqlite3 +0 -0
  163. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.backup +0 -0
  164. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.juli28-2013 +0 -0
  165. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.old +0 -0
  166. data/lib/tripper/ORMDB/db/schema.rb +58 -0
  167. data/lib/tripper/ORMDB/erd.pdf +0 -0
  168. data/lib/tripper/ORMDB/migrate_db.rb +21 -0
  169. data/lib/tripper/ORMDB/orm_db_classes.rb +423 -0
  170. data/lib/tripper/ORMDB/populate.rb +4 -0
  171. data/lib/tripper/ORMDB/rakefile.rb +88 -0
  172. data/lib/tripper/model_parsers/attribute_parser/AttributeParser.g +50 -0
  173. data/lib/tripper/model_parsers/attribute_parser/AttributeParser.tokens +13 -0
  174. data/lib/tripper/model_parsers/attribute_parser/AttributeParserLexer.rb +538 -0
  175. data/lib/tripper/model_parsers/attribute_parser/AttributeParserParser.rb +412 -0
  176. data/lib/tripper/model_parsers/attribute_parser/playing_around.rb +14 -0
  177. data/lib/tripper/model_parsers/belongs_to/BelongsToParser.g +63 -0
  178. data/lib/tripper/model_parsers/belongs_to/BelongsToParser.tokens +21 -0
  179. data/lib/tripper/model_parsers/belongs_to/BelongsToParserLexer.rb +667 -0
  180. data/lib/tripper/model_parsers/belongs_to/BelongsToParserParser.rb +552 -0
  181. data/lib/tripper/model_parsers/belongs_to/playing_around.rb +9 -0
  182. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.g +47 -0
  183. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.tokens +14 -0
  184. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserLexer.rb +513 -0
  185. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserParser.rb +279 -0
  186. data/lib/tripper/model_parsers/database_fields_parser/playing_around.rb +14 -0
  187. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.g +92 -0
  188. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.tokens +25 -0
  189. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserLexer.rb +787 -0
  190. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserParser.rb +1024 -0
  191. data/lib/tripper/model_parsers/has_and_belongs_to_many/playing_around.rb +9 -0
  192. data/lib/tripper/model_parsers/has_many/HasManyParser.g +77 -0
  193. data/lib/tripper/model_parsers/has_many/HasManyParser.tokens +23 -0
  194. data/lib/tripper/model_parsers/has_many/HasManyParserLexer.rb +710 -0
  195. data/lib/tripper/model_parsers/has_many/HasManyParserParser.rb +788 -0
  196. data/lib/tripper/model_parsers/has_many/playing_around.rb +9 -0
  197. data/lib/tripper/model_parsers/has_one/HasOneParser.g +63 -0
  198. data/lib/tripper/model_parsers/has_one/HasOneParser.tokens +21 -0
  199. data/lib/tripper/model_parsers/has_one/HasOneParserLexer.rb +664 -0
  200. data/lib/tripper/model_parsers/has_one/HasOneParserParser.rb +552 -0
  201. data/lib/tripper/model_parsers/has_one/playing_around.rb +9 -0
  202. data/lib/tripper/model_parsers/validates/ValidatesParser.g +68 -0
  203. data/lib/tripper/model_parsers/validates/ValidatesParser.tokens +35 -0
  204. data/lib/tripper/model_parsers/validates/ValidatesParserLexer.rb +899 -0
  205. data/lib/tripper/model_parsers/validates/ValidatesParserParser.rb +869 -0
  206. data/lib/tripper/model_parsers/validates/playing_around.rb +9 -0
  207. data/lib/tripper/rails.rb +8 -0
  208. data/lib/tripper/version.rb +3 -0
  209. data/tripper.gemspec +33 -0
  210. metadata +408 -0
@@ -0,0 +1,869 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g
4
+ # --
5
+ # Generated using ANTLR version: 3.2.1-SNAPSHOT Jul 31, 2010 19:34:52
6
+ # Ruby runtime library version: 1.8.11
7
+ # Input grammar file: /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g
8
+ # Generated at: 2013-05-05 11:33:11
9
+ #
10
+
11
+ # ~~~> start load path setup
12
+ this_directory = File.expand_path( File.dirname( __FILE__ ) )
13
+ $LOAD_PATH.unshift( this_directory ) unless $LOAD_PATH.include?( this_directory )
14
+
15
+ antlr_load_failed = proc do
16
+ load_path = $LOAD_PATH.map { |dir| ' - ' << dir }.join( $/ )
17
+ raise LoadError, <<-END.strip!
18
+
19
+ Failed to load the ANTLR3 runtime library (version 1.8.11):
20
+
21
+ Ensure the library has been installed on your system and is available
22
+ on the load path. If rubygems is available on your system, this can
23
+ be done with the command:
24
+
25
+ gem install antlr3
26
+
27
+ Current load path:
28
+ #{ load_path }
29
+
30
+ END
31
+ end
32
+
33
+ defined?( ANTLR3 ) or begin
34
+
35
+ # 1: try to load the ruby antlr3 runtime library from the system path
36
+ require 'antlr3'
37
+
38
+ rescue LoadError
39
+
40
+ # 2: try to load rubygems if it isn't already loaded
41
+ defined?( Gem ) or begin
42
+ require 'rubygems'
43
+ rescue LoadError
44
+ antlr_load_failed.call
45
+ end
46
+
47
+ # 3: try to activate the antlr3 gem
48
+ begin
49
+ Gem.activate( 'antlr3', '~> 1.8.11' )
50
+ rescue Gem::LoadError
51
+ antlr_load_failed.call
52
+ end
53
+
54
+ require 'antlr3'
55
+
56
+ end
57
+ # <~~~ end load path setup
58
+
59
+ # - - - - - - begin action @parser::header - - - - - -
60
+ # /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g
61
+
62
+
63
+ def strip_quotes str
64
+ return str[1,(str.length)-2]
65
+ end
66
+
67
+ # - - - - - - end action @parser::header - - - - - - -
68
+
69
+
70
+ module ValidatesParser
71
+ # TokenData defines all of the token type integer values
72
+ # as constants, which will be included in all
73
+ # ANTLR-generated recognizers.
74
+ const_defined?( :TokenData ) or TokenData = ANTLR3::TokenScheme.new
75
+
76
+ module TokenData
77
+
78
+ # define the token constants
79
+ define_tokens( :T__24 => 24, :T__23 => 23, :T__22 => 22, :T__21 => 21,
80
+ :T__20 => 20, :ATTRIBUTE => 5, :WHITESPACE => 9, :EOF => -1,
81
+ :ACTUALSTRING => 10, :T__19 => 19, :T__16 => 16, :HC => 6,
82
+ :T__15 => 15, :T__18 => 18, :T__17 => 17, :T__12 => 12,
83
+ :T__11 => 11, :T__14 => 14, :T__13 => 13, :LC => 7, :DIGIT => 8,
84
+ :COMMENT => 4 )
85
+
86
+ # register the proper human-readable name or literal value
87
+ # for each token type
88
+ #
89
+ # this is necessary because anonymous tokens, which are
90
+ # created from literal values in the grammar, do not
91
+ # have descriptive names
92
+ register_names( "COMMENT", "ATTRIBUTE", "HC", "LC", "DIGIT", "WHITESPACE",
93
+ "ACTUALSTRING", "'validates'", "','", "':'", "'uniqueness'",
94
+ "'presence'", "'=>'", "'true'", "'{'", "'}'", "'scope'",
95
+ "'['", "']'", "'\\''", "'\"'" )
96
+
97
+ end
98
+
99
+
100
+ class Parser < ANTLR3::Parser
101
+ @grammar_home = ValidatesParser
102
+
103
+ RULE_METHODS = [ :comment, :validates, :validation_helper, :validation_helper_old_syntax,
104
+ :validation_helper_new_syntax, :ruby_scope, :scope_old_syntax,
105
+ :scope_new_syntax, :list, :attribute, :list_attribute ].freeze
106
+
107
+
108
+ include TokenData
109
+
110
+ begin
111
+ generated_using( "/Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g", "3.2.1-SNAPSHOT Jul 31, 2010 19:34:52", "1.8.11" )
112
+ rescue NoMethodError => error
113
+ # ignore
114
+ end
115
+
116
+ def initialize( input, options = {} )
117
+ super( input, options )
118
+
119
+
120
+ end
121
+
122
+ attr_accessor :attribute, :list, :type
123
+
124
+ # - - - - - - - - - - - - Rules - - - - - - - - - - - - -
125
+
126
+ #
127
+ # parser rule comment
128
+ #
129
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
130
+ # 17:1: comment : COMMENT ;
131
+ #
132
+ def comment
133
+ # -> uncomment the next line to manually enable rule tracing
134
+ # trace_in( __method__, 1 )
135
+
136
+ begin
137
+ # at line 17:10: COMMENT
138
+ match( COMMENT, TOKENS_FOLLOWING_COMMENT_IN_comment_35 )
139
+
140
+ rescue ANTLR3::Error::RecognitionError => re
141
+ report_error(re)
142
+ recover(re)
143
+
144
+ ensure
145
+ # -> uncomment the next line to manually enable rule tracing
146
+ # trace_out( __method__, 1 )
147
+
148
+ end
149
+
150
+ return
151
+ end
152
+
153
+
154
+ #
155
+ # parser rule validates
156
+ #
157
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
158
+ # 19:1: validates returns [expr] : ( (c= COMMENT )* | 'validates' attribute validation_helper ( comment )? ) ;
159
+ #
160
+ def validates
161
+ # -> uncomment the next line to manually enable rule tracing
162
+ # trace_in( __method__, 2 )
163
+ expr = nil
164
+ c = nil
165
+
166
+ begin
167
+ # at line 19:27: ( (c= COMMENT )* | 'validates' attribute validation_helper ( comment )? )
168
+ # at line 19:27: ( (c= COMMENT )* | 'validates' attribute validation_helper ( comment )? )
169
+ alt_3 = 2
170
+ look_3_0 = @input.peek( 1 )
171
+
172
+ if ( look_3_0 == EOF || look_3_0 == COMMENT )
173
+ alt_3 = 1
174
+ elsif ( look_3_0 == T__11 )
175
+ alt_3 = 2
176
+ else
177
+ raise NoViableAlternative( "", 3, 0 )
178
+ end
179
+ case alt_3
180
+ when 1
181
+ # at line 19:28: (c= COMMENT )*
182
+ # at line 19:28: (c= COMMENT )*
183
+ while true # decision 1
184
+ alt_1 = 2
185
+ look_1_0 = @input.peek( 1 )
186
+
187
+ if ( look_1_0 == COMMENT )
188
+ alt_1 = 1
189
+
190
+ end
191
+ case alt_1
192
+ when 1
193
+ # at line 19:29: c= COMMENT
194
+ c = match( COMMENT, TOKENS_FOLLOWING_COMMENT_IN_validates_50 )
195
+
196
+ else
197
+ break # out of loop for decision 1
198
+ end
199
+ end # loop for decision 1
200
+
201
+ when 2
202
+ # at line 19:43: 'validates' attribute validation_helper ( comment )?
203
+ match( T__11, TOKENS_FOLLOWING_T__11_IN_validates_56 )
204
+ @state.following.push( TOKENS_FOLLOWING_attribute_IN_validates_58 )
205
+ attribute
206
+ @state.following.pop
207
+ @state.following.push( TOKENS_FOLLOWING_validation_helper_IN_validates_60 )
208
+ validation_helper
209
+ @state.following.pop
210
+ # at line 19:83: ( comment )?
211
+ alt_2 = 2
212
+ look_2_0 = @input.peek( 1 )
213
+
214
+ if ( look_2_0 == COMMENT )
215
+ alt_2 = 1
216
+ end
217
+ case alt_2
218
+ when 1
219
+ # at line 19:83: comment
220
+ @state.following.push( TOKENS_FOLLOWING_comment_IN_validates_62 )
221
+ comment
222
+ @state.following.pop
223
+
224
+ end
225
+
226
+ end
227
+ # --> action
228
+
229
+ @list = [] unless @list
230
+ expr = {type: @type, attribute: @attribute, on: @list} unless c
231
+
232
+ # <-- action
233
+
234
+ rescue ANTLR3::Error::RecognitionError => re
235
+ report_error(re)
236
+ recover(re)
237
+
238
+ ensure
239
+ # -> uncomment the next line to manually enable rule tracing
240
+ # trace_out( __method__, 2 )
241
+
242
+ end
243
+
244
+ return expr
245
+ end
246
+
247
+
248
+ #
249
+ # parser rule validation_helper
250
+ #
251
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
252
+ # 26:1: validation_helper : ',' ( validation_helper_old_syntax | validation_helper_new_syntax ) ;
253
+ #
254
+ def validation_helper
255
+ # -> uncomment the next line to manually enable rule tracing
256
+ # trace_in( __method__, 3 )
257
+
258
+ begin
259
+ # at line 26:20: ',' ( validation_helper_old_syntax | validation_helper_new_syntax )
260
+ match( T__12, TOKENS_FOLLOWING_T__12_IN_validation_helper_75 )
261
+ # at line 26:24: ( validation_helper_old_syntax | validation_helper_new_syntax )
262
+ alt_4 = 2
263
+ look_4_0 = @input.peek( 1 )
264
+
265
+ if ( look_4_0 == T__13 )
266
+ alt_4 = 1
267
+ elsif ( look_4_0.between?( T__14, T__15 ) )
268
+ alt_4 = 2
269
+ else
270
+ raise NoViableAlternative( "", 4, 0 )
271
+ end
272
+ case alt_4
273
+ when 1
274
+ # at line 26:25: validation_helper_old_syntax
275
+ @state.following.push( TOKENS_FOLLOWING_validation_helper_old_syntax_IN_validation_helper_78 )
276
+ validation_helper_old_syntax
277
+ @state.following.pop
278
+
279
+ when 2
280
+ # at line 26:56: validation_helper_new_syntax
281
+ @state.following.push( TOKENS_FOLLOWING_validation_helper_new_syntax_IN_validation_helper_82 )
282
+ validation_helper_new_syntax
283
+ @state.following.pop
284
+
285
+ end
286
+
287
+ rescue ANTLR3::Error::RecognitionError => re
288
+ report_error(re)
289
+ recover(re)
290
+
291
+ ensure
292
+ # -> uncomment the next line to manually enable rule tracing
293
+ # trace_out( __method__, 3 )
294
+
295
+ end
296
+
297
+ return
298
+ end
299
+
300
+
301
+ #
302
+ # parser rule validation_helper_old_syntax
303
+ #
304
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
305
+ # 28:1: validation_helper_old_syntax : ':' (a= 'uniqueness' | a= 'presence' ) '=>' ( 'true' | ruby_scope ) ;
306
+ #
307
+ def validation_helper_old_syntax
308
+ # -> uncomment the next line to manually enable rule tracing
309
+ # trace_in( __method__, 4 )
310
+ a = nil
311
+
312
+ begin
313
+ # at line 28:31: ':' (a= 'uniqueness' | a= 'presence' ) '=>' ( 'true' | ruby_scope )
314
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_validation_helper_old_syntax_90 )
315
+ # at line 28:35: (a= 'uniqueness' | a= 'presence' )
316
+ alt_5 = 2
317
+ look_5_0 = @input.peek( 1 )
318
+
319
+ if ( look_5_0 == T__14 )
320
+ alt_5 = 1
321
+ elsif ( look_5_0 == T__15 )
322
+ alt_5 = 2
323
+ else
324
+ raise NoViableAlternative( "", 5, 0 )
325
+ end
326
+ case alt_5
327
+ when 1
328
+ # at line 28:36: a= 'uniqueness'
329
+ a = match( T__14, TOKENS_FOLLOWING_T__14_IN_validation_helper_old_syntax_95 )
330
+
331
+ when 2
332
+ # at line 28:53: a= 'presence'
333
+ a = match( T__15, TOKENS_FOLLOWING_T__15_IN_validation_helper_old_syntax_101 )
334
+
335
+ end
336
+ match( T__16, TOKENS_FOLLOWING_T__16_IN_validation_helper_old_syntax_104 )
337
+ # at line 28:72: ( 'true' | ruby_scope )
338
+ alt_6 = 2
339
+ look_6_0 = @input.peek( 1 )
340
+
341
+ if ( look_6_0 == T__17 )
342
+ alt_6 = 1
343
+ elsif ( look_6_0 == T__18 )
344
+ alt_6 = 2
345
+ else
346
+ raise NoViableAlternative( "", 6, 0 )
347
+ end
348
+ case alt_6
349
+ when 1
350
+ # at line 28:73: 'true'
351
+ match( T__17, TOKENS_FOLLOWING_T__17_IN_validation_helper_old_syntax_107 )
352
+
353
+ when 2
354
+ # at line 28:82: ruby_scope
355
+ @state.following.push( TOKENS_FOLLOWING_ruby_scope_IN_validation_helper_old_syntax_111 )
356
+ ruby_scope
357
+ @state.following.pop
358
+
359
+ end
360
+ # --> action
361
+ @type = a.text
362
+ # <-- action
363
+
364
+ rescue ANTLR3::Error::RecognitionError => re
365
+ report_error(re)
366
+ recover(re)
367
+
368
+ ensure
369
+ # -> uncomment the next line to manually enable rule tracing
370
+ # trace_out( __method__, 4 )
371
+
372
+ end
373
+
374
+ return
375
+ end
376
+
377
+
378
+ #
379
+ # parser rule validation_helper_new_syntax
380
+ #
381
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
382
+ # 30:1: validation_helper_new_syntax : (a= 'uniqueness' | a= 'presence' ) ':' ( 'true' | ruby_scope ) ;
383
+ #
384
+ def validation_helper_new_syntax
385
+ # -> uncomment the next line to manually enable rule tracing
386
+ # trace_in( __method__, 5 )
387
+ a = nil
388
+
389
+ begin
390
+ # at line 30:31: (a= 'uniqueness' | a= 'presence' ) ':' ( 'true' | ruby_scope )
391
+ # at line 30:31: (a= 'uniqueness' | a= 'presence' )
392
+ alt_7 = 2
393
+ look_7_0 = @input.peek( 1 )
394
+
395
+ if ( look_7_0 == T__14 )
396
+ alt_7 = 1
397
+ elsif ( look_7_0 == T__15 )
398
+ alt_7 = 2
399
+ else
400
+ raise NoViableAlternative( "", 7, 0 )
401
+ end
402
+ case alt_7
403
+ when 1
404
+ # at line 30:32: a= 'uniqueness'
405
+ a = match( T__14, TOKENS_FOLLOWING_T__14_IN_validation_helper_new_syntax_124 )
406
+
407
+ when 2
408
+ # at line 30:49: a= 'presence'
409
+ a = match( T__15, TOKENS_FOLLOWING_T__15_IN_validation_helper_new_syntax_130 )
410
+
411
+ end
412
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_validation_helper_new_syntax_133 )
413
+ # at line 30:67: ( 'true' | ruby_scope )
414
+ alt_8 = 2
415
+ look_8_0 = @input.peek( 1 )
416
+
417
+ if ( look_8_0 == T__17 )
418
+ alt_8 = 1
419
+ elsif ( look_8_0 == T__18 )
420
+ alt_8 = 2
421
+ else
422
+ raise NoViableAlternative( "", 8, 0 )
423
+ end
424
+ case alt_8
425
+ when 1
426
+ # at line 30:68: 'true'
427
+ match( T__17, TOKENS_FOLLOWING_T__17_IN_validation_helper_new_syntax_136 )
428
+
429
+ when 2
430
+ # at line 30:77: ruby_scope
431
+ @state.following.push( TOKENS_FOLLOWING_ruby_scope_IN_validation_helper_new_syntax_140 )
432
+ ruby_scope
433
+ @state.following.pop
434
+
435
+ end
436
+ # --> action
437
+ @type = a.text
438
+ # <-- action
439
+
440
+ rescue ANTLR3::Error::RecognitionError => re
441
+ report_error(re)
442
+ recover(re)
443
+
444
+ ensure
445
+ # -> uncomment the next line to manually enable rule tracing
446
+ # trace_out( __method__, 5 )
447
+
448
+ end
449
+
450
+ return
451
+ end
452
+
453
+
454
+ #
455
+ # parser rule ruby_scope
456
+ #
457
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
458
+ # 32:1: ruby_scope : '{' ( scope_old_syntax | scope_new_syntax ) '}' ;
459
+ #
460
+ def ruby_scope
461
+ # -> uncomment the next line to manually enable rule tracing
462
+ # trace_in( __method__, 6 )
463
+
464
+ begin
465
+ # at line 32:13: '{' ( scope_old_syntax | scope_new_syntax ) '}'
466
+ match( T__18, TOKENS_FOLLOWING_T__18_IN_ruby_scope_150 )
467
+ # at line 32:17: ( scope_old_syntax | scope_new_syntax )
468
+ alt_9 = 2
469
+ look_9_0 = @input.peek( 1 )
470
+
471
+ if ( look_9_0 == T__13 )
472
+ alt_9 = 1
473
+ elsif ( look_9_0 == T__20 )
474
+ alt_9 = 2
475
+ else
476
+ raise NoViableAlternative( "", 9, 0 )
477
+ end
478
+ case alt_9
479
+ when 1
480
+ # at line 32:18: scope_old_syntax
481
+ @state.following.push( TOKENS_FOLLOWING_scope_old_syntax_IN_ruby_scope_153 )
482
+ scope_old_syntax
483
+ @state.following.pop
484
+
485
+ when 2
486
+ # at line 32:37: scope_new_syntax
487
+ @state.following.push( TOKENS_FOLLOWING_scope_new_syntax_IN_ruby_scope_157 )
488
+ scope_new_syntax
489
+ @state.following.pop
490
+
491
+ end
492
+ match( T__19, TOKENS_FOLLOWING_T__19_IN_ruby_scope_160 )
493
+
494
+ rescue ANTLR3::Error::RecognitionError => re
495
+ report_error(re)
496
+ recover(re)
497
+
498
+ ensure
499
+ # -> uncomment the next line to manually enable rule tracing
500
+ # trace_out( __method__, 6 )
501
+
502
+ end
503
+
504
+ return
505
+ end
506
+
507
+
508
+ #
509
+ # parser rule scope_old_syntax
510
+ #
511
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
512
+ # 34:1: scope_old_syntax : ':' 'scope' '=>' ( list | list_attribute ) ;
513
+ #
514
+ def scope_old_syntax
515
+ # -> uncomment the next line to manually enable rule tracing
516
+ # trace_in( __method__, 7 )
517
+
518
+ begin
519
+ # at line 34:19: ':' 'scope' '=>' ( list | list_attribute )
520
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_scope_old_syntax_167 )
521
+ match( T__20, TOKENS_FOLLOWING_T__20_IN_scope_old_syntax_169 )
522
+ match( T__16, TOKENS_FOLLOWING_T__16_IN_scope_old_syntax_171 )
523
+ # at line 34:36: ( list | list_attribute )
524
+ alt_10 = 2
525
+ look_10_0 = @input.peek( 1 )
526
+
527
+ if ( look_10_0 == T__21 )
528
+ alt_10 = 1
529
+ elsif ( look_10_0 == T__13 || look_10_0.between?( T__23, T__24 ) )
530
+ alt_10 = 2
531
+ else
532
+ raise NoViableAlternative( "", 10, 0 )
533
+ end
534
+ case alt_10
535
+ when 1
536
+ # at line 34:37: list
537
+ @state.following.push( TOKENS_FOLLOWING_list_IN_scope_old_syntax_174 )
538
+ list
539
+ @state.following.pop
540
+
541
+ when 2
542
+ # at line 34:44: list_attribute
543
+ @state.following.push( TOKENS_FOLLOWING_list_attribute_IN_scope_old_syntax_178 )
544
+ list_attribute
545
+ @state.following.pop
546
+
547
+ end
548
+
549
+ rescue ANTLR3::Error::RecognitionError => re
550
+ report_error(re)
551
+ recover(re)
552
+
553
+ ensure
554
+ # -> uncomment the next line to manually enable rule tracing
555
+ # trace_out( __method__, 7 )
556
+
557
+ end
558
+
559
+ return
560
+ end
561
+
562
+
563
+ #
564
+ # parser rule scope_new_syntax
565
+ #
566
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
567
+ # 36:1: scope_new_syntax : 'scope' ':' ( list | list_attribute ) ;
568
+ #
569
+ def scope_new_syntax
570
+ # -> uncomment the next line to manually enable rule tracing
571
+ # trace_in( __method__, 8 )
572
+
573
+ begin
574
+ # at line 36:19: 'scope' ':' ( list | list_attribute )
575
+ match( T__20, TOKENS_FOLLOWING_T__20_IN_scope_new_syntax_186 )
576
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_scope_new_syntax_188 )
577
+ # at line 36:31: ( list | list_attribute )
578
+ alt_11 = 2
579
+ look_11_0 = @input.peek( 1 )
580
+
581
+ if ( look_11_0 == T__21 )
582
+ alt_11 = 1
583
+ elsif ( look_11_0 == T__13 || look_11_0.between?( T__23, T__24 ) )
584
+ alt_11 = 2
585
+ else
586
+ raise NoViableAlternative( "", 11, 0 )
587
+ end
588
+ case alt_11
589
+ when 1
590
+ # at line 36:32: list
591
+ @state.following.push( TOKENS_FOLLOWING_list_IN_scope_new_syntax_191 )
592
+ list
593
+ @state.following.pop
594
+
595
+ when 2
596
+ # at line 36:39: list_attribute
597
+ @state.following.push( TOKENS_FOLLOWING_list_attribute_IN_scope_new_syntax_195 )
598
+ list_attribute
599
+ @state.following.pop
600
+
601
+ end
602
+
603
+ rescue ANTLR3::Error::RecognitionError => re
604
+ report_error(re)
605
+ recover(re)
606
+
607
+ ensure
608
+ # -> uncomment the next line to manually enable rule tracing
609
+ # trace_out( __method__, 8 )
610
+
611
+ end
612
+
613
+ return
614
+ end
615
+
616
+
617
+ #
618
+ # parser rule list
619
+ #
620
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
621
+ # 38:1: list : '[' list_attribute ',' ( list_attribute )* ']' ;
622
+ #
623
+ def list
624
+ # -> uncomment the next line to manually enable rule tracing
625
+ # trace_in( __method__, 9 )
626
+
627
+ begin
628
+ # at line 38:7: '[' list_attribute ',' ( list_attribute )* ']'
629
+ match( T__21, TOKENS_FOLLOWING_T__21_IN_list_203 )
630
+ @state.following.push( TOKENS_FOLLOWING_list_attribute_IN_list_205 )
631
+ list_attribute
632
+ @state.following.pop
633
+ match( T__12, TOKENS_FOLLOWING_T__12_IN_list_207 )
634
+ # at line 38:30: ( list_attribute )*
635
+ while true # decision 12
636
+ alt_12 = 2
637
+ look_12_0 = @input.peek( 1 )
638
+
639
+ if ( look_12_0 == T__13 || look_12_0.between?( T__23, T__24 ) )
640
+ alt_12 = 1
641
+
642
+ end
643
+ case alt_12
644
+ when 1
645
+ # at line 38:30: list_attribute
646
+ @state.following.push( TOKENS_FOLLOWING_list_attribute_IN_list_209 )
647
+ list_attribute
648
+ @state.following.pop
649
+
650
+ else
651
+ break # out of loop for decision 12
652
+ end
653
+ end # loop for decision 12
654
+ match( T__22, TOKENS_FOLLOWING_T__22_IN_list_212 )
655
+
656
+ rescue ANTLR3::Error::RecognitionError => re
657
+ report_error(re)
658
+ recover(re)
659
+
660
+ ensure
661
+ # -> uncomment the next line to manually enable rule tracing
662
+ # trace_out( __method__, 9 )
663
+
664
+ end
665
+
666
+ return
667
+ end
668
+
669
+
670
+ #
671
+ # parser rule attribute
672
+ #
673
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
674
+ # 40:1: attribute : ( ( '\\'' a= ATTRIBUTE '\\'' ) | ( '\"' a= ATTRIBUTE '\"' ) | ( ':' a= ATTRIBUTE ) );
675
+ #
676
+ def attribute
677
+ # -> uncomment the next line to manually enable rule tracing
678
+ # trace_in( __method__, 10 )
679
+ a = nil
680
+
681
+ begin
682
+ # at line 40:10: ( ( '\\'' a= ATTRIBUTE '\\'' ) | ( '\"' a= ATTRIBUTE '\"' ) | ( ':' a= ATTRIBUTE ) )
683
+ alt_13 = 3
684
+ case look_13 = @input.peek( 1 )
685
+ when T__23 then alt_13 = 1
686
+ when T__24 then alt_13 = 2
687
+ when T__13 then alt_13 = 3
688
+ else
689
+ raise NoViableAlternative( "", 13, 0 )
690
+ end
691
+ case alt_13
692
+ when 1
693
+ # at line 40:12: ( '\\'' a= ATTRIBUTE '\\'' )
694
+ # at line 40:12: ( '\\'' a= ATTRIBUTE '\\'' )
695
+ # at line 40:13: '\\'' a= ATTRIBUTE '\\''
696
+ match( T__23, TOKENS_FOLLOWING_T__23_IN_attribute_220 )
697
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_224 )
698
+ match( T__23, TOKENS_FOLLOWING_T__23_IN_attribute_226 )
699
+
700
+
701
+ when 2
702
+ # at line 40:38: ( '\"' a= ATTRIBUTE '\"' )
703
+ # at line 40:38: ( '\"' a= ATTRIBUTE '\"' )
704
+ # at line 40:39: '\"' a= ATTRIBUTE '\"'
705
+ match( T__24, TOKENS_FOLLOWING_T__24_IN_attribute_232 )
706
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_236 )
707
+ match( T__24, TOKENS_FOLLOWING_T__24_IN_attribute_238 )
708
+
709
+
710
+ when 3
711
+ # at line 40:62: ( ':' a= ATTRIBUTE )
712
+ # at line 40:62: ( ':' a= ATTRIBUTE )
713
+ # at line 40:63: ':' a= ATTRIBUTE
714
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_attribute_244 )
715
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_248 )
716
+
717
+ # --> action
718
+
719
+ @attribute = a.text
720
+
721
+ # <-- action
722
+
723
+ end
724
+ rescue ANTLR3::Error::RecognitionError => re
725
+ report_error(re)
726
+ recover(re)
727
+
728
+ ensure
729
+ # -> uncomment the next line to manually enable rule tracing
730
+ # trace_out( __method__, 10 )
731
+
732
+ end
733
+
734
+ return
735
+ end
736
+
737
+
738
+ #
739
+ # parser rule list_attribute
740
+ #
741
+ # (in /Users/rivmeche/Google Drive/vub/_Thesis/code/tripper/lib/tripper/model_parsers/validates/ValidatesParser.g)
742
+ # 46:1: list_attribute : ( ( '\\'' a= ATTRIBUTE '\\'' ) | ( '\"' a= ATTRIBUTE '\"' ) | ( ':' a= ATTRIBUTE ) ) ;
743
+ #
744
+ def list_attribute
745
+ # -> uncomment the next line to manually enable rule tracing
746
+ # trace_in( __method__, 11 )
747
+ a = nil
748
+
749
+ begin
750
+ # at line 46:17: ( ( '\\'' a= ATTRIBUTE '\\'' ) | ( '\"' a= ATTRIBUTE '\"' ) | ( ':' a= ATTRIBUTE ) )
751
+ # at line 46:17: ( ( '\\'' a= ATTRIBUTE '\\'' ) | ( '\"' a= ATTRIBUTE '\"' ) | ( ':' a= ATTRIBUTE ) )
752
+ alt_14 = 3
753
+ case look_14 = @input.peek( 1 )
754
+ when T__23 then alt_14 = 1
755
+ when T__24 then alt_14 = 2
756
+ when T__13 then alt_14 = 3
757
+ else
758
+ raise NoViableAlternative( "", 14, 0 )
759
+ end
760
+ case alt_14
761
+ when 1
762
+ # at line 46:18: ( '\\'' a= ATTRIBUTE '\\'' )
763
+ # at line 46:18: ( '\\'' a= ATTRIBUTE '\\'' )
764
+ # at line 46:19: '\\'' a= ATTRIBUTE '\\''
765
+ match( T__23, TOKENS_FOLLOWING_T__23_IN_list_attribute_262 )
766
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_list_attribute_266 )
767
+ match( T__23, TOKENS_FOLLOWING_T__23_IN_list_attribute_268 )
768
+
769
+
770
+ when 2
771
+ # at line 46:44: ( '\"' a= ATTRIBUTE '\"' )
772
+ # at line 46:44: ( '\"' a= ATTRIBUTE '\"' )
773
+ # at line 46:45: '\"' a= ATTRIBUTE '\"'
774
+ match( T__24, TOKENS_FOLLOWING_T__24_IN_list_attribute_274 )
775
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_list_attribute_278 )
776
+ match( T__24, TOKENS_FOLLOWING_T__24_IN_list_attribute_280 )
777
+
778
+
779
+ when 3
780
+ # at line 46:68: ( ':' a= ATTRIBUTE )
781
+ # at line 46:68: ( ':' a= ATTRIBUTE )
782
+ # at line 46:69: ':' a= ATTRIBUTE
783
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_list_attribute_286 )
784
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_list_attribute_290 )
785
+
786
+
787
+ end
788
+ # --> action
789
+
790
+ @list = [] unless @list
791
+ @list << a.text
792
+
793
+ # <-- action
794
+
795
+ rescue ANTLR3::Error::RecognitionError => re
796
+ report_error(re)
797
+ recover(re)
798
+
799
+ ensure
800
+ # -> uncomment the next line to manually enable rule tracing
801
+ # trace_out( __method__, 11 )
802
+
803
+ end
804
+
805
+ return
806
+ end
807
+
808
+
809
+
810
+ TOKENS_FOLLOWING_COMMENT_IN_comment_35 = Set[ 1 ]
811
+ TOKENS_FOLLOWING_COMMENT_IN_validates_50 = Set[ 1, 4 ]
812
+ TOKENS_FOLLOWING_T__11_IN_validates_56 = Set[ 13, 23, 24 ]
813
+ TOKENS_FOLLOWING_attribute_IN_validates_58 = Set[ 12 ]
814
+ TOKENS_FOLLOWING_validation_helper_IN_validates_60 = Set[ 1, 4 ]
815
+ TOKENS_FOLLOWING_comment_IN_validates_62 = Set[ 1 ]
816
+ TOKENS_FOLLOWING_T__12_IN_validation_helper_75 = Set[ 13, 14, 15 ]
817
+ TOKENS_FOLLOWING_validation_helper_old_syntax_IN_validation_helper_78 = Set[ 1 ]
818
+ TOKENS_FOLLOWING_validation_helper_new_syntax_IN_validation_helper_82 = Set[ 1 ]
819
+ TOKENS_FOLLOWING_T__13_IN_validation_helper_old_syntax_90 = Set[ 14, 15 ]
820
+ TOKENS_FOLLOWING_T__14_IN_validation_helper_old_syntax_95 = Set[ 16 ]
821
+ TOKENS_FOLLOWING_T__15_IN_validation_helper_old_syntax_101 = Set[ 16 ]
822
+ TOKENS_FOLLOWING_T__16_IN_validation_helper_old_syntax_104 = Set[ 17, 18 ]
823
+ TOKENS_FOLLOWING_T__17_IN_validation_helper_old_syntax_107 = Set[ 1 ]
824
+ TOKENS_FOLLOWING_ruby_scope_IN_validation_helper_old_syntax_111 = Set[ 1 ]
825
+ TOKENS_FOLLOWING_T__14_IN_validation_helper_new_syntax_124 = Set[ 13 ]
826
+ TOKENS_FOLLOWING_T__15_IN_validation_helper_new_syntax_130 = Set[ 13 ]
827
+ TOKENS_FOLLOWING_T__13_IN_validation_helper_new_syntax_133 = Set[ 17, 18 ]
828
+ TOKENS_FOLLOWING_T__17_IN_validation_helper_new_syntax_136 = Set[ 1 ]
829
+ TOKENS_FOLLOWING_ruby_scope_IN_validation_helper_new_syntax_140 = Set[ 1 ]
830
+ TOKENS_FOLLOWING_T__18_IN_ruby_scope_150 = Set[ 13, 20 ]
831
+ TOKENS_FOLLOWING_scope_old_syntax_IN_ruby_scope_153 = Set[ 19 ]
832
+ TOKENS_FOLLOWING_scope_new_syntax_IN_ruby_scope_157 = Set[ 19 ]
833
+ TOKENS_FOLLOWING_T__19_IN_ruby_scope_160 = Set[ 1 ]
834
+ TOKENS_FOLLOWING_T__13_IN_scope_old_syntax_167 = Set[ 20 ]
835
+ TOKENS_FOLLOWING_T__20_IN_scope_old_syntax_169 = Set[ 16 ]
836
+ TOKENS_FOLLOWING_T__16_IN_scope_old_syntax_171 = Set[ 13, 21, 23, 24 ]
837
+ TOKENS_FOLLOWING_list_IN_scope_old_syntax_174 = Set[ 1 ]
838
+ TOKENS_FOLLOWING_list_attribute_IN_scope_old_syntax_178 = Set[ 1 ]
839
+ TOKENS_FOLLOWING_T__20_IN_scope_new_syntax_186 = Set[ 13 ]
840
+ TOKENS_FOLLOWING_T__13_IN_scope_new_syntax_188 = Set[ 13, 21, 23, 24 ]
841
+ TOKENS_FOLLOWING_list_IN_scope_new_syntax_191 = Set[ 1 ]
842
+ TOKENS_FOLLOWING_list_attribute_IN_scope_new_syntax_195 = Set[ 1 ]
843
+ TOKENS_FOLLOWING_T__21_IN_list_203 = Set[ 13, 21, 23, 24 ]
844
+ TOKENS_FOLLOWING_list_attribute_IN_list_205 = Set[ 12 ]
845
+ TOKENS_FOLLOWING_T__12_IN_list_207 = Set[ 13, 21, 22, 23, 24 ]
846
+ TOKENS_FOLLOWING_list_attribute_IN_list_209 = Set[ 13, 21, 22, 23, 24 ]
847
+ TOKENS_FOLLOWING_T__22_IN_list_212 = Set[ 1 ]
848
+ TOKENS_FOLLOWING_T__23_IN_attribute_220 = Set[ 5 ]
849
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_224 = Set[ 23 ]
850
+ TOKENS_FOLLOWING_T__23_IN_attribute_226 = Set[ 1 ]
851
+ TOKENS_FOLLOWING_T__24_IN_attribute_232 = Set[ 5 ]
852
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_236 = Set[ 24 ]
853
+ TOKENS_FOLLOWING_T__24_IN_attribute_238 = Set[ 1 ]
854
+ TOKENS_FOLLOWING_T__13_IN_attribute_244 = Set[ 5 ]
855
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_248 = Set[ 1 ]
856
+ TOKENS_FOLLOWING_T__23_IN_list_attribute_262 = Set[ 5 ]
857
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_list_attribute_266 = Set[ 23 ]
858
+ TOKENS_FOLLOWING_T__23_IN_list_attribute_268 = Set[ 1 ]
859
+ TOKENS_FOLLOWING_T__24_IN_list_attribute_274 = Set[ 5 ]
860
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_list_attribute_278 = Set[ 24 ]
861
+ TOKENS_FOLLOWING_T__24_IN_list_attribute_280 = Set[ 1 ]
862
+ TOKENS_FOLLOWING_T__13_IN_list_attribute_286 = Set[ 5 ]
863
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_list_attribute_290 = Set[ 1 ]
864
+
865
+ end # class Parser < ANTLR3::Parser
866
+
867
+ at_exit { Parser.main( ARGV ) } if __FILE__ == $0
868
+ end
869
+