tripper 0.0.3d

Sign up to get free protection for your applications and to get access to all the features.
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,279 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # DatabaseFieldsParser.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: DatabaseFieldsParser.g
8
+ # Generated at: 2013-05-15 13:56:44
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
+ # DatabaseFieldsParser.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 DatabaseFieldsParser
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( :ACTUALSTRING => 9, :HC => 5, :T__12 => 12, :T__11 => 11,
80
+ :T__13 => 13, :T__10 => 10, :ATTRIBUTE => 4, :WHITESPACE => 8,
81
+ :LC => 6, :DIGIT => 7, :EOF => -1 )
82
+
83
+ # register the proper human-readable name or literal value
84
+ # for each token type
85
+ #
86
+ # this is necessary because anonymous tokens, which are
87
+ # created from literal values in the grammar, do not
88
+ # have descriptive names
89
+ register_names( "ATTRIBUTE", "HC", "LC", "DIGIT", "WHITESPACE", "ACTUALSTRING",
90
+ "'#'", "'database_fields'", "':'", "','" )
91
+
92
+ end
93
+
94
+
95
+ class Parser < ANTLR3::Parser
96
+ @grammar_home = DatabaseFieldsParser
97
+
98
+ RULE_METHODS = [ :database_fields, :attributes, :attribute ].freeze
99
+
100
+
101
+ include TokenData
102
+
103
+ begin
104
+ generated_using( "DatabaseFieldsParser.g", "3.2.1-SNAPSHOT Jul 31, 2010 19:34:52", "1.8.11" )
105
+ rescue NoMethodError => error
106
+ # ignore
107
+ end
108
+
109
+ def initialize( input, options = {} )
110
+ super( input, options )
111
+
112
+
113
+ end
114
+
115
+ attr_accessor :attributes
116
+
117
+ # - - - - - - - - - - - - Rules - - - - - - - - - - - - -
118
+
119
+ #
120
+ # parser rule database_fields
121
+ #
122
+ # (in DatabaseFieldsParser.g)
123
+ # 15:1: database_fields returns [expr] : ( '#' 'database_fields' ':' ( attributes )* ( attribute )? ) ;
124
+ #
125
+ def database_fields
126
+ # -> uncomment the next line to manually enable rule tracing
127
+ # trace_in( __method__, 1 )
128
+ expr = nil
129
+
130
+ begin
131
+ # at line 15:33: ( '#' 'database_fields' ':' ( attributes )* ( attribute )? )
132
+ # at line 15:33: ( '#' 'database_fields' ':' ( attributes )* ( attribute )? )
133
+ # at line 15:34: '#' 'database_fields' ':' ( attributes )* ( attribute )?
134
+ match( T__10, TOKENS_FOLLOWING_T__10_IN_database_fields_39 )
135
+ match( T__11, TOKENS_FOLLOWING_T__11_IN_database_fields_41 )
136
+ match( T__12, TOKENS_FOLLOWING_T__12_IN_database_fields_43 )
137
+ # at line 15:60: ( attributes )*
138
+ while true # decision 1
139
+ alt_1 = 2
140
+ look_1_0 = @input.peek( 1 )
141
+
142
+ if ( look_1_0 == ATTRIBUTE )
143
+ look_1_1 = @input.peek( 2 )
144
+
145
+ if ( look_1_1 == T__13 )
146
+ alt_1 = 1
147
+
148
+ end
149
+
150
+ end
151
+ case alt_1
152
+ when 1
153
+ # at line 15:60: attributes
154
+ @state.following.push( TOKENS_FOLLOWING_attributes_IN_database_fields_45 )
155
+ attributes
156
+ @state.following.pop
157
+
158
+ else
159
+ break # out of loop for decision 1
160
+ end
161
+ end # loop for decision 1
162
+ # at line 15:72: ( attribute )?
163
+ alt_2 = 2
164
+ look_2_0 = @input.peek( 1 )
165
+
166
+ if ( look_2_0 == ATTRIBUTE )
167
+ alt_2 = 1
168
+ end
169
+ case alt_2
170
+ when 1
171
+ # at line 15:72: attribute
172
+ @state.following.push( TOKENS_FOLLOWING_attribute_IN_database_fields_48 )
173
+ attribute
174
+ @state.following.pop
175
+
176
+ end
177
+
178
+ # --> action
179
+
180
+ @attributes = [] unless @attributes
181
+ expr = @attributes - ["id", "created_at", "updated_at"]
182
+
183
+ # <-- action
184
+
185
+ rescue ANTLR3::Error::RecognitionError => re
186
+ report_error(re)
187
+ recover(re)
188
+
189
+ ensure
190
+ # -> uncomment the next line to manually enable rule tracing
191
+ # trace_out( __method__, 1 )
192
+
193
+ end
194
+
195
+ return expr
196
+ end
197
+
198
+
199
+ #
200
+ # parser rule attributes
201
+ #
202
+ # (in DatabaseFieldsParser.g)
203
+ # 22:1: attributes : attribute ',' ;
204
+ #
205
+ def attributes
206
+ # -> uncomment the next line to manually enable rule tracing
207
+ # trace_in( __method__, 2 )
208
+
209
+ begin
210
+ # at line 22:13: attribute ','
211
+ @state.following.push( TOKENS_FOLLOWING_attribute_IN_attributes_60 )
212
+ attribute
213
+ @state.following.pop
214
+ match( T__13, TOKENS_FOLLOWING_T__13_IN_attributes_62 )
215
+
216
+ rescue ANTLR3::Error::RecognitionError => re
217
+ report_error(re)
218
+ recover(re)
219
+
220
+ ensure
221
+ # -> uncomment the next line to manually enable rule tracing
222
+ # trace_out( __method__, 2 )
223
+
224
+ end
225
+
226
+ return
227
+ end
228
+
229
+
230
+ #
231
+ # parser rule attribute
232
+ #
233
+ # (in DatabaseFieldsParser.g)
234
+ # 25:1: attribute : a= ATTRIBUTE ;
235
+ #
236
+ def attribute
237
+ # -> uncomment the next line to manually enable rule tracing
238
+ # trace_in( __method__, 3 )
239
+ a = nil
240
+
241
+ begin
242
+ # at line 26:4: a= ATTRIBUTE
243
+ a = match( ATTRIBUTE, TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_74 )
244
+ # --> action
245
+
246
+ @attributes = [] unless @attributes
247
+ @attributes << a.text
248
+
249
+ # <-- action
250
+
251
+ rescue ANTLR3::Error::RecognitionError => re
252
+ report_error(re)
253
+ recover(re)
254
+
255
+ ensure
256
+ # -> uncomment the next line to manually enable rule tracing
257
+ # trace_out( __method__, 3 )
258
+
259
+ end
260
+
261
+ return
262
+ end
263
+
264
+
265
+
266
+ TOKENS_FOLLOWING_T__10_IN_database_fields_39 = Set[ 11 ]
267
+ TOKENS_FOLLOWING_T__11_IN_database_fields_41 = Set[ 12 ]
268
+ TOKENS_FOLLOWING_T__12_IN_database_fields_43 = Set[ 1, 4 ]
269
+ TOKENS_FOLLOWING_attributes_IN_database_fields_45 = Set[ 1, 4 ]
270
+ TOKENS_FOLLOWING_attribute_IN_database_fields_48 = Set[ 1 ]
271
+ TOKENS_FOLLOWING_attribute_IN_attributes_60 = Set[ 13 ]
272
+ TOKENS_FOLLOWING_T__13_IN_attributes_62 = Set[ 1 ]
273
+ TOKENS_FOLLOWING_ATTRIBUTE_IN_attribute_74 = Set[ 1 ]
274
+
275
+ end # class Parser < ANTLR3::Parser
276
+
277
+ at_exit { Parser.main( ARGV ) } if __FILE__ == $0
278
+ end
279
+
@@ -0,0 +1,14 @@
1
+ require './DatabaseFieldsParserParser'
2
+ require './DatabaseFieldsParserLexer'
3
+ # input = ANTLR3::StringStream.new( "attr_accessible :hour, :minute, :second" )
4
+ # lexer = DatabaseFieldsParser::Lexer.new(input)
5
+ # tokens = ANTLR3::CommonTokenStream.new(lexer)
6
+ parser = DatabaseFieldsParser::Parser.new("# database_fields: hour, minute, second")
7
+ a= parser.database_fields
8
+ puts a
9
+ # input = ANTLR3::StringStream.new( "attr_accessible :tes, :bla, :blo" )
10
+ # lexer = DatabaseFieldsParser::Lexer.new(input)
11
+ # tokens = ANTLR3::CommonTokenStream.new(lexer)
12
+ parser = DatabaseFieldsParser::Parser.new("# database_fields: tes, bla, blo")
13
+ a= parser.database_fields
14
+ puts a
@@ -0,0 +1,92 @@
1
+ grammar HasAndBelongsToManyParser;
2
+
3
+ options {
4
+ language = Ruby;
5
+ }
6
+
7
+ @header {
8
+ def strip_quotes str
9
+ return str[1,(str.length)-2]
10
+ end
11
+
12
+ @@attribute = nil
13
+ @@class_name = nil
14
+ @@foreign_key = nil
15
+ @@association_foreign_key = nil
16
+ }
17
+
18
+ @members {
19
+ attr_accessor :attribute, :class_name, :foreign_key, :association_foreign_key
20
+ }
21
+
22
+ comment: COMMENT;
23
+
24
+ has_and_belongs_to_many returns [expr]: ((c=COMMENT)* | 'has_and_belongs_to_many' attribute class_name? foreign_key? association_foreign_key? comment?)
25
+ {
26
+ $expr = {attribute: @attribute, class_name: @class_name, foreign_key: @foreign_key, association_foreign_key: @association_foreign_key} unless $c
27
+ }
28
+ ;
29
+
30
+ class_name: ',' (class_name_old_syntax | class_name_new_syntax);
31
+
32
+ class_name_old_syntax: ':' 'class_name' '=>' class_name_word
33
+ ;
34
+
35
+ class_name_word: (('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE))
36
+ {
37
+ @class_name = $a.text
38
+ }
39
+ ;
40
+
41
+ class_name_new_syntax: 'class_name' ':' class_name_word;
42
+
43
+ foreign_key: ',' (foreign_key_old_syntax | foreign_key_new_syntax);
44
+
45
+ foreign_key_old_syntax: ':' 'foreign_key' '=>' foreign_key_word
46
+ ;
47
+
48
+ foreign_key_word: (('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE))
49
+ {
50
+ @foreign_key = $a.text
51
+ }
52
+ ;
53
+
54
+ foreign_key_new_syntax: 'foreign_key' ':' foreign_key_word;
55
+
56
+
57
+ association_foreign_key: ',' (association_foreign_key_old_syntax | association_foreign_key_new_syntax);
58
+
59
+ association_foreign_key_old_syntax: ':' 'association_foreign_key' '=>' association_foreign_key_word
60
+ ;
61
+
62
+ association_foreign_key_word: (('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE))
63
+ {
64
+ @association_foreign_key = $a.text
65
+ }
66
+ ;
67
+
68
+ association_foreign_key_new_syntax: 'association_foreign_key' ':' foreign_key_word;
69
+
70
+
71
+ attribute: ('\'' a=ATTRIBUTE '\'') | ('"' a=ATTRIBUTE '"') | (':' a=ATTRIBUTE)
72
+ {
73
+ @attribute = $a.text
74
+ }
75
+ ;
76
+
77
+ //string: STRING;
78
+
79
+ /*------------------------------------------------------------------
80
+ * LEXER RULES
81
+ *------------------------------------------------------------------*/
82
+ //LITERAL: (HC|LC)(HC|LC|'_')*;
83
+ ATTRIBUTE: (HC|LC)(HC|LC|DIGIT|'_')*;
84
+ //LITERAL: (HC|LC)(HC|LC|DIGIT|'_'|'-')*;
85
+ //NUMERICCONSTANT: ('-')? DIGIT+ ('.' DIGIT+)?;
86
+ //STRING: '\'' ACTUALSTRING '\'';
87
+ WHITESPACE: ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { $channel = HIDDEN; };
88
+ COMMENT: '#' ~('\n'|'\r')*;
89
+ fragment ACTUALSTRING: ~('\\'|'\'')*;
90
+ fragment DIGIT: '0'..'9';
91
+ fragment HC: 'A'..'Z';
92
+ fragment LC: 'a'..'z';
@@ -0,0 +1,25 @@
1
+ ACTUALSTRING=10
2
+ T__19=19
3
+ T__16=16
4
+ HC=6
5
+ T__15=15
6
+ T__18=18
7
+ T__17=17
8
+ T__12=12
9
+ T__11=11
10
+ T__14=14
11
+ T__13=13
12
+ ATTRIBUTE=5
13
+ WHITESPACE=9
14
+ LC=7
15
+ DIGIT=8
16
+ COMMENT=4
17
+ 'association_foreign_key'=19
18
+ '"'=17
19
+ ':'=13
20
+ 'has_and_belongs_to_many'=11
21
+ ','=12
22
+ '=>'=15
23
+ 'foreign_key'=18
24
+ 'class_name'=14
25
+ '\''=16
@@ -0,0 +1,787 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # HasAndBelongsToManyParser.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: HasAndBelongsToManyParser.g
8
+ # Generated at: 2013-07-28 14:32:01
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
+
60
+ module HasAndBelongsToManyParser
61
+ # TokenData defines all of the token type integer values
62
+ # as constants, which will be included in all
63
+ # ANTLR-generated recognizers.
64
+ const_defined?( :TokenData ) or TokenData = ANTLR3::TokenScheme.new
65
+
66
+ module TokenData
67
+
68
+ # define the token constants
69
+ define_tokens( :ACTUALSTRING => 10, :T__19 => 19, :T__16 => 16, :T__15 => 15,
70
+ :HC => 6, :T__18 => 18, :T__17 => 17, :T__12 => 12, :T__11 => 11,
71
+ :T__14 => 14, :T__13 => 13, :ATTRIBUTE => 5, :LC => 7,
72
+ :WHITESPACE => 9, :DIGIT => 8, :COMMENT => 4, :EOF => -1 )
73
+
74
+ end
75
+
76
+
77
+ class Lexer < ANTLR3::Lexer
78
+ @grammar_home = HasAndBelongsToManyParser
79
+ include TokenData
80
+
81
+
82
+ begin
83
+ generated_using( "HasAndBelongsToManyParser.g", "3.2.1-SNAPSHOT Jul 31, 2010 19:34:52", "1.8.11" )
84
+ rescue NoMethodError => error
85
+ # ignore
86
+ end
87
+
88
+ RULE_NAMES = [ "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
89
+ "T__17", "T__18", "T__19", "ATTRIBUTE", "WHITESPACE",
90
+ "COMMENT", "ACTUALSTRING", "DIGIT", "HC", "LC" ].freeze
91
+ RULE_METHODS = [ :t__11!, :t__12!, :t__13!, :t__14!, :t__15!, :t__16!,
92
+ :t__17!, :t__18!, :t__19!, :attribute!, :whitespace!,
93
+ :comment!, :actualstring!, :digit!, :hc!, :lc! ].freeze
94
+
95
+
96
+ def initialize( input=nil, options = {} )
97
+ super( input, options )
98
+
99
+ end
100
+
101
+
102
+ # - - - - - - - - - - - lexer rules - - - - - - - - - - - -
103
+ # lexer rule t__11! (T__11)
104
+ # (in HasAndBelongsToManyParser.g)
105
+ def t__11!
106
+ # -> uncomment the next line to manually enable rule tracing
107
+ # trace_in( __method__, 1 )
108
+
109
+ type = T__11
110
+ channel = ANTLR3::DEFAULT_CHANNEL
111
+
112
+
113
+ # - - - - main rule block - - - -
114
+ # at line 7:9: 'has_and_belongs_to_many'
115
+ match( "has_and_belongs_to_many" )
116
+
117
+
118
+ @state.type = type
119
+ @state.channel = channel
120
+
121
+ ensure
122
+ # -> uncomment the next line to manually enable rule tracing
123
+ # trace_out( __method__, 1 )
124
+
125
+ end
126
+
127
+ # lexer rule t__12! (T__12)
128
+ # (in HasAndBelongsToManyParser.g)
129
+ def t__12!
130
+ # -> uncomment the next line to manually enable rule tracing
131
+ # trace_in( __method__, 2 )
132
+
133
+ type = T__12
134
+ channel = ANTLR3::DEFAULT_CHANNEL
135
+
136
+
137
+ # - - - - main rule block - - - -
138
+ # at line 8:9: ','
139
+ match( 0x2c )
140
+
141
+
142
+ @state.type = type
143
+ @state.channel = channel
144
+
145
+ ensure
146
+ # -> uncomment the next line to manually enable rule tracing
147
+ # trace_out( __method__, 2 )
148
+
149
+ end
150
+
151
+ # lexer rule t__13! (T__13)
152
+ # (in HasAndBelongsToManyParser.g)
153
+ def t__13!
154
+ # -> uncomment the next line to manually enable rule tracing
155
+ # trace_in( __method__, 3 )
156
+
157
+ type = T__13
158
+ channel = ANTLR3::DEFAULT_CHANNEL
159
+
160
+
161
+ # - - - - main rule block - - - -
162
+ # at line 9:9: ':'
163
+ match( 0x3a )
164
+
165
+
166
+ @state.type = type
167
+ @state.channel = channel
168
+
169
+ ensure
170
+ # -> uncomment the next line to manually enable rule tracing
171
+ # trace_out( __method__, 3 )
172
+
173
+ end
174
+
175
+ # lexer rule t__14! (T__14)
176
+ # (in HasAndBelongsToManyParser.g)
177
+ def t__14!
178
+ # -> uncomment the next line to manually enable rule tracing
179
+ # trace_in( __method__, 4 )
180
+
181
+ type = T__14
182
+ channel = ANTLR3::DEFAULT_CHANNEL
183
+
184
+
185
+ # - - - - main rule block - - - -
186
+ # at line 10:9: 'class_name'
187
+ match( "class_name" )
188
+
189
+
190
+ @state.type = type
191
+ @state.channel = channel
192
+
193
+ ensure
194
+ # -> uncomment the next line to manually enable rule tracing
195
+ # trace_out( __method__, 4 )
196
+
197
+ end
198
+
199
+ # lexer rule t__15! (T__15)
200
+ # (in HasAndBelongsToManyParser.g)
201
+ def t__15!
202
+ # -> uncomment the next line to manually enable rule tracing
203
+ # trace_in( __method__, 5 )
204
+
205
+ type = T__15
206
+ channel = ANTLR3::DEFAULT_CHANNEL
207
+
208
+
209
+ # - - - - main rule block - - - -
210
+ # at line 11:9: '=>'
211
+ match( "=>" )
212
+
213
+
214
+ @state.type = type
215
+ @state.channel = channel
216
+
217
+ ensure
218
+ # -> uncomment the next line to manually enable rule tracing
219
+ # trace_out( __method__, 5 )
220
+
221
+ end
222
+
223
+ # lexer rule t__16! (T__16)
224
+ # (in HasAndBelongsToManyParser.g)
225
+ def t__16!
226
+ # -> uncomment the next line to manually enable rule tracing
227
+ # trace_in( __method__, 6 )
228
+
229
+ type = T__16
230
+ channel = ANTLR3::DEFAULT_CHANNEL
231
+
232
+
233
+ # - - - - main rule block - - - -
234
+ # at line 12:9: '\\''
235
+ match( 0x27 )
236
+
237
+
238
+ @state.type = type
239
+ @state.channel = channel
240
+
241
+ ensure
242
+ # -> uncomment the next line to manually enable rule tracing
243
+ # trace_out( __method__, 6 )
244
+
245
+ end
246
+
247
+ # lexer rule t__17! (T__17)
248
+ # (in HasAndBelongsToManyParser.g)
249
+ def t__17!
250
+ # -> uncomment the next line to manually enable rule tracing
251
+ # trace_in( __method__, 7 )
252
+
253
+ type = T__17
254
+ channel = ANTLR3::DEFAULT_CHANNEL
255
+
256
+
257
+ # - - - - main rule block - - - -
258
+ # at line 13:9: '\"'
259
+ match( 0x22 )
260
+
261
+
262
+ @state.type = type
263
+ @state.channel = channel
264
+
265
+ ensure
266
+ # -> uncomment the next line to manually enable rule tracing
267
+ # trace_out( __method__, 7 )
268
+
269
+ end
270
+
271
+ # lexer rule t__18! (T__18)
272
+ # (in HasAndBelongsToManyParser.g)
273
+ def t__18!
274
+ # -> uncomment the next line to manually enable rule tracing
275
+ # trace_in( __method__, 8 )
276
+
277
+ type = T__18
278
+ channel = ANTLR3::DEFAULT_CHANNEL
279
+
280
+
281
+ # - - - - main rule block - - - -
282
+ # at line 14:9: 'foreign_key'
283
+ match( "foreign_key" )
284
+
285
+
286
+ @state.type = type
287
+ @state.channel = channel
288
+
289
+ ensure
290
+ # -> uncomment the next line to manually enable rule tracing
291
+ # trace_out( __method__, 8 )
292
+
293
+ end
294
+
295
+ # lexer rule t__19! (T__19)
296
+ # (in HasAndBelongsToManyParser.g)
297
+ def t__19!
298
+ # -> uncomment the next line to manually enable rule tracing
299
+ # trace_in( __method__, 9 )
300
+
301
+ type = T__19
302
+ channel = ANTLR3::DEFAULT_CHANNEL
303
+
304
+
305
+ # - - - - main rule block - - - -
306
+ # at line 15:9: 'association_foreign_key'
307
+ match( "association_foreign_key" )
308
+
309
+
310
+ @state.type = type
311
+ @state.channel = channel
312
+
313
+ ensure
314
+ # -> uncomment the next line to manually enable rule tracing
315
+ # trace_out( __method__, 9 )
316
+
317
+ end
318
+
319
+ # lexer rule attribute! (ATTRIBUTE)
320
+ # (in HasAndBelongsToManyParser.g)
321
+ def attribute!
322
+ # -> uncomment the next line to manually enable rule tracing
323
+ # trace_in( __method__, 10 )
324
+
325
+ type = ATTRIBUTE
326
+ channel = ANTLR3::DEFAULT_CHANNEL
327
+
328
+
329
+ # - - - - main rule block - - - -
330
+ # at line 83:12: ( HC | LC ) ( HC | LC | DIGIT | '_' )*
331
+ if @input.peek( 1 ).between?( 0x41, 0x5a ) || @input.peek( 1 ).between?( 0x61, 0x7a )
332
+ @input.consume
333
+ else
334
+ mse = MismatchedSet( nil )
335
+ recover mse
336
+ raise mse
337
+ end
338
+
339
+
340
+ # at line 83:19: ( HC | LC | DIGIT | '_' )*
341
+ while true # decision 1
342
+ alt_1 = 2
343
+ look_1_0 = @input.peek( 1 )
344
+
345
+ if ( look_1_0.between?( 0x30, 0x39 ) || look_1_0.between?( 0x41, 0x5a ) || look_1_0 == 0x5f || look_1_0.between?( 0x61, 0x7a ) )
346
+ alt_1 = 1
347
+
348
+ end
349
+ case alt_1
350
+ when 1
351
+ # at line
352
+ if @input.peek( 1 ).between?( 0x30, 0x39 ) || @input.peek( 1 ).between?( 0x41, 0x5a ) || @input.peek(1) == 0x5f || @input.peek( 1 ).between?( 0x61, 0x7a )
353
+ @input.consume
354
+ else
355
+ mse = MismatchedSet( nil )
356
+ recover mse
357
+ raise mse
358
+ end
359
+
360
+
361
+
362
+ else
363
+ break # out of loop for decision 1
364
+ end
365
+ end # loop for decision 1
366
+
367
+
368
+ @state.type = type
369
+ @state.channel = channel
370
+
371
+ ensure
372
+ # -> uncomment the next line to manually enable rule tracing
373
+ # trace_out( __method__, 10 )
374
+
375
+ end
376
+
377
+ # lexer rule whitespace! (WHITESPACE)
378
+ # (in HasAndBelongsToManyParser.g)
379
+ def whitespace!
380
+ # -> uncomment the next line to manually enable rule tracing
381
+ # trace_in( __method__, 11 )
382
+
383
+ type = WHITESPACE
384
+ channel = ANTLR3::DEFAULT_CHANNEL
385
+
386
+
387
+ # - - - - main rule block - - - -
388
+ # at line 87:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
389
+ # at file 87:13: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
390
+ match_count_2 = 0
391
+ while true
392
+ alt_2 = 2
393
+ look_2_0 = @input.peek( 1 )
394
+
395
+ if ( look_2_0.between?( 0x9, 0xa ) || look_2_0.between?( 0xc, 0xd ) || look_2_0 == 0x20 )
396
+ alt_2 = 1
397
+
398
+ end
399
+ case alt_2
400
+ when 1
401
+ # at line
402
+ if @input.peek( 1 ).between?( 0x9, 0xa ) || @input.peek( 1 ).between?( 0xc, 0xd ) || @input.peek(1) == 0x20
403
+ @input.consume
404
+ else
405
+ mse = MismatchedSet( nil )
406
+ recover mse
407
+ raise mse
408
+ end
409
+
410
+
411
+
412
+ else
413
+ match_count_2 > 0 and break
414
+ eee = EarlyExit(2)
415
+
416
+
417
+ raise eee
418
+ end
419
+ match_count_2 += 1
420
+ end
421
+
422
+ # --> action
423
+ channel = HIDDEN;
424
+ # <-- action
425
+
426
+
427
+ @state.type = type
428
+ @state.channel = channel
429
+
430
+ ensure
431
+ # -> uncomment the next line to manually enable rule tracing
432
+ # trace_out( __method__, 11 )
433
+
434
+ end
435
+
436
+ # lexer rule comment! (COMMENT)
437
+ # (in HasAndBelongsToManyParser.g)
438
+ def comment!
439
+ # -> uncomment the next line to manually enable rule tracing
440
+ # trace_in( __method__, 12 )
441
+
442
+ type = COMMENT
443
+ channel = ANTLR3::DEFAULT_CHANNEL
444
+
445
+
446
+ # - - - - main rule block - - - -
447
+ # at line 88:10: '#' (~ ( '\\n' | '\\r' ) )*
448
+ match( 0x23 )
449
+ # at line 88:14: (~ ( '\\n' | '\\r' ) )*
450
+ while true # decision 3
451
+ alt_3 = 2
452
+ look_3_0 = @input.peek( 1 )
453
+
454
+ if ( look_3_0.between?( 0x0, 0x9 ) || look_3_0.between?( 0xb, 0xc ) || look_3_0.between?( 0xe, 0xffff ) )
455
+ alt_3 = 1
456
+
457
+ end
458
+ case alt_3
459
+ when 1
460
+ # at line 88:14: ~ ( '\\n' | '\\r' )
461
+ if @input.peek( 1 ).between?( 0x0, 0x9 ) || @input.peek( 1 ).between?( 0xb, 0xc ) || @input.peek( 1 ).between?( 0xe, 0xff )
462
+ @input.consume
463
+ else
464
+ mse = MismatchedSet( nil )
465
+ recover mse
466
+ raise mse
467
+ end
468
+
469
+
470
+
471
+ else
472
+ break # out of loop for decision 3
473
+ end
474
+ end # loop for decision 3
475
+
476
+
477
+ @state.type = type
478
+ @state.channel = channel
479
+
480
+ ensure
481
+ # -> uncomment the next line to manually enable rule tracing
482
+ # trace_out( __method__, 12 )
483
+
484
+ end
485
+
486
+ # lexer rule actualstring! (ACTUALSTRING)
487
+ # (in HasAndBelongsToManyParser.g)
488
+ def actualstring!
489
+ # -> uncomment the next line to manually enable rule tracing
490
+ # trace_in( __method__, 13 )
491
+
492
+
493
+ # - - - - main rule block - - - -
494
+ # at line 89:24: (~ ( '\\\\' | '\\'' ) )*
495
+ # at line 89:24: (~ ( '\\\\' | '\\'' ) )*
496
+ while true # decision 4
497
+ alt_4 = 2
498
+ look_4_0 = @input.peek( 1 )
499
+
500
+ if ( look_4_0.between?( 0x0, 0x26 ) || look_4_0.between?( 0x28, 0x5b ) || look_4_0.between?( 0x5d, 0xffff ) )
501
+ alt_4 = 1
502
+
503
+ end
504
+ case alt_4
505
+ when 1
506
+ # at line 89:24: ~ ( '\\\\' | '\\'' )
507
+ if @input.peek( 1 ).between?( 0x0, 0x26 ) || @input.peek( 1 ).between?( 0x28, 0x5b ) || @input.peek( 1 ).between?( 0x5d, 0xff )
508
+ @input.consume
509
+ else
510
+ mse = MismatchedSet( nil )
511
+ recover mse
512
+ raise mse
513
+ end
514
+
515
+
516
+
517
+ else
518
+ break # out of loop for decision 4
519
+ end
520
+ end # loop for decision 4
521
+
522
+ ensure
523
+ # -> uncomment the next line to manually enable rule tracing
524
+ # trace_out( __method__, 13 )
525
+
526
+ end
527
+
528
+ # lexer rule digit! (DIGIT)
529
+ # (in HasAndBelongsToManyParser.g)
530
+ def digit!
531
+ # -> uncomment the next line to manually enable rule tracing
532
+ # trace_in( __method__, 14 )
533
+
534
+
535
+ # - - - - main rule block - - - -
536
+ # at line 90:17: '0' .. '9'
537
+ match_range( 0x30, 0x39 )
538
+
539
+ ensure
540
+ # -> uncomment the next line to manually enable rule tracing
541
+ # trace_out( __method__, 14 )
542
+
543
+ end
544
+
545
+ # lexer rule hc! (HC)
546
+ # (in HasAndBelongsToManyParser.g)
547
+ def hc!
548
+ # -> uncomment the next line to manually enable rule tracing
549
+ # trace_in( __method__, 15 )
550
+
551
+
552
+ # - - - - main rule block - - - -
553
+ # at line 91:14: 'A' .. 'Z'
554
+ match_range( 0x41, 0x5a )
555
+
556
+ ensure
557
+ # -> uncomment the next line to manually enable rule tracing
558
+ # trace_out( __method__, 15 )
559
+
560
+ end
561
+
562
+ # lexer rule lc! (LC)
563
+ # (in HasAndBelongsToManyParser.g)
564
+ def lc!
565
+ # -> uncomment the next line to manually enable rule tracing
566
+ # trace_in( __method__, 16 )
567
+
568
+
569
+ # - - - - main rule block - - - -
570
+ # at line 92:14: 'a' .. 'z'
571
+ match_range( 0x61, 0x7a )
572
+
573
+ ensure
574
+ # -> uncomment the next line to manually enable rule tracing
575
+ # trace_out( __method__, 16 )
576
+
577
+ end
578
+
579
+ # main rule used to study the input at the current position,
580
+ # and choose the proper lexer rule to call in order to
581
+ # fetch the next token
582
+ #
583
+ # usually, you don't make direct calls to this method,
584
+ # but instead use the next_token method, which will
585
+ # build and emit the actual next token
586
+ def token!
587
+ # at line 1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | ATTRIBUTE | WHITESPACE | COMMENT )
588
+ alt_5 = 12
589
+ alt_5 = @dfa5.predict( @input )
590
+ case alt_5
591
+ when 1
592
+ # at line 1:10: T__11
593
+ t__11!
594
+
595
+ when 2
596
+ # at line 1:16: T__12
597
+ t__12!
598
+
599
+ when 3
600
+ # at line 1:22: T__13
601
+ t__13!
602
+
603
+ when 4
604
+ # at line 1:28: T__14
605
+ t__14!
606
+
607
+ when 5
608
+ # at line 1:34: T__15
609
+ t__15!
610
+
611
+ when 6
612
+ # at line 1:40: T__16
613
+ t__16!
614
+
615
+ when 7
616
+ # at line 1:46: T__17
617
+ t__17!
618
+
619
+ when 8
620
+ # at line 1:52: T__18
621
+ t__18!
622
+
623
+ when 9
624
+ # at line 1:58: T__19
625
+ t__19!
626
+
627
+ when 10
628
+ # at line 1:64: ATTRIBUTE
629
+ attribute!
630
+
631
+ when 11
632
+ # at line 1:74: WHITESPACE
633
+ whitespace!
634
+
635
+ when 12
636
+ # at line 1:85: COMMENT
637
+ comment!
638
+
639
+ end
640
+ end
641
+
642
+
643
+ # - - - - - - - - - - DFA definitions - - - - - - - - - - -
644
+ class DFA5 < ANTLR3::DFA
645
+ EOT = unpack( 1, -1, 1, 10, 2, -1, 1, 10, 3, -1, 2, 10, 3, -1, 33,
646
+ 10, 1, 50, 3, 10, 1, -1, 1, 54, 2, 10, 1, -1, 21, 10,
647
+ 1, 78, 1, 79, 2, -1 )
648
+ EOF = unpack( 80, -1 )
649
+ MIN = unpack( 1, 9, 1, 97, 2, -1, 1, 108, 3, -1, 1, 111, 1, 115, 3,
650
+ -1, 1, 115, 1, 97, 1, 114, 1, 115, 1, 95, 1, 115, 1,
651
+ 101, 1, 111, 1, 97, 1, 115, 1, 105, 1, 99, 1, 110, 1,
652
+ 95, 1, 103, 1, 105, 1, 100, 2, 110, 1, 97, 1, 95, 1,
653
+ 97, 1, 95, 1, 116, 1, 98, 1, 109, 1, 107, 1, 105, 3,
654
+ 101, 1, 111, 1, 108, 1, 48, 1, 121, 1, 110, 1, 111,
655
+ 1, -1, 1, 48, 1, 95, 1, 110, 1, -1, 1, 102, 1, 103,
656
+ 1, 111, 1, 115, 1, 114, 1, 95, 1, 101, 1, 116, 1, 105,
657
+ 1, 111, 1, 103, 1, 95, 1, 110, 1, 109, 1, 95, 1, 97,
658
+ 1, 107, 1, 110, 1, 101, 2, 121, 2, 48, 2, -1 )
659
+ MAX = unpack( 1, 122, 1, 97, 2, -1, 1, 108, 3, -1, 1, 111, 1, 115,
660
+ 3, -1, 1, 115, 1, 97, 1, 114, 1, 115, 1, 95, 1, 115,
661
+ 1, 101, 1, 111, 1, 97, 1, 115, 1, 105, 1, 99, 1, 110,
662
+ 1, 95, 1, 103, 1, 105, 1, 100, 2, 110, 1, 97, 1, 95,
663
+ 1, 97, 1, 95, 1, 116, 1, 98, 1, 109, 1, 107, 1, 105,
664
+ 3, 101, 1, 111, 1, 108, 1, 122, 1, 121, 1, 110, 1, 111,
665
+ 1, -1, 1, 122, 1, 95, 1, 110, 1, -1, 1, 102, 1, 103,
666
+ 1, 111, 1, 115, 1, 114, 1, 95, 1, 101, 1, 116, 1, 105,
667
+ 1, 111, 1, 103, 1, 95, 1, 110, 1, 109, 1, 95, 1, 97,
668
+ 1, 107, 1, 110, 1, 101, 2, 121, 2, 122, 2, -1 )
669
+ ACCEPT = unpack( 2, -1, 1, 2, 1, 3, 1, -1, 1, 5, 1, 6, 1, 7, 2, -1,
670
+ 1, 10, 1, 11, 1, 12, 37, -1, 1, 4, 3, -1, 1, 8, 23,
671
+ -1, 1, 1, 1, 9 )
672
+ SPECIAL = unpack( 80, -1 )
673
+ TRANSITION = [
674
+ unpack( 2, 11, 1, -1, 2, 11, 18, -1, 1, 11, 1, -1, 1, 7, 1, 12,
675
+ 3, -1, 1, 6, 4, -1, 1, 2, 13, -1, 1, 3, 2, -1, 1, 5, 3,
676
+ -1, 26, 10, 6, -1, 1, 9, 1, 10, 1, 4, 2, 10, 1, 8, 1, 10,
677
+ 1, 1, 18, 10 ),
678
+ unpack( 1, 13 ),
679
+ unpack( ),
680
+ unpack( ),
681
+ unpack( 1, 14 ),
682
+ unpack( ),
683
+ unpack( ),
684
+ unpack( ),
685
+ unpack( 1, 15 ),
686
+ unpack( 1, 16 ),
687
+ unpack( ),
688
+ unpack( ),
689
+ unpack( ),
690
+ unpack( 1, 17 ),
691
+ unpack( 1, 18 ),
692
+ unpack( 1, 19 ),
693
+ unpack( 1, 20 ),
694
+ unpack( 1, 21 ),
695
+ unpack( 1, 22 ),
696
+ unpack( 1, 23 ),
697
+ unpack( 1, 24 ),
698
+ unpack( 1, 25 ),
699
+ unpack( 1, 26 ),
700
+ unpack( 1, 27 ),
701
+ unpack( 1, 28 ),
702
+ unpack( 1, 29 ),
703
+ unpack( 1, 30 ),
704
+ unpack( 1, 31 ),
705
+ unpack( 1, 32 ),
706
+ unpack( 1, 33 ),
707
+ unpack( 1, 34 ),
708
+ unpack( 1, 35 ),
709
+ unpack( 1, 36 ),
710
+ unpack( 1, 37 ),
711
+ unpack( 1, 38 ),
712
+ unpack( 1, 39 ),
713
+ unpack( 1, 40 ),
714
+ unpack( 1, 41 ),
715
+ unpack( 1, 42 ),
716
+ unpack( 1, 43 ),
717
+ unpack( 1, 44 ),
718
+ unpack( 1, 45 ),
719
+ unpack( 1, 46 ),
720
+ unpack( 1, 47 ),
721
+ unpack( 1, 48 ),
722
+ unpack( 1, 49 ),
723
+ unpack( 10, 10, 7, -1, 26, 10, 4, -1, 1, 10, 1, -1, 26, 10 ),
724
+ unpack( 1, 51 ),
725
+ unpack( 1, 52 ),
726
+ unpack( 1, 53 ),
727
+ unpack( ),
728
+ unpack( 10, 10, 7, -1, 26, 10, 4, -1, 1, 10, 1, -1, 26, 10 ),
729
+ unpack( 1, 55 ),
730
+ unpack( 1, 56 ),
731
+ unpack( ),
732
+ unpack( 1, 57 ),
733
+ unpack( 1, 58 ),
734
+ unpack( 1, 59 ),
735
+ unpack( 1, 60 ),
736
+ unpack( 1, 61 ),
737
+ unpack( 1, 62 ),
738
+ unpack( 1, 63 ),
739
+ unpack( 1, 64 ),
740
+ unpack( 1, 65 ),
741
+ unpack( 1, 66 ),
742
+ unpack( 1, 67 ),
743
+ unpack( 1, 68 ),
744
+ unpack( 1, 69 ),
745
+ unpack( 1, 70 ),
746
+ unpack( 1, 71 ),
747
+ unpack( 1, 72 ),
748
+ unpack( 1, 73 ),
749
+ unpack( 1, 74 ),
750
+ unpack( 1, 75 ),
751
+ unpack( 1, 76 ),
752
+ unpack( 1, 77 ),
753
+ unpack( 10, 10, 7, -1, 26, 10, 4, -1, 1, 10, 1, -1, 26, 10 ),
754
+ unpack( 10, 10, 7, -1, 26, 10, 4, -1, 1, 10, 1, -1, 26, 10 ),
755
+ unpack( ),
756
+ unpack( )
757
+ ].freeze
758
+
759
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
760
+ if a > 0 and z < 0
761
+ MAX[ i ] %= 0x10000
762
+ end
763
+ end
764
+
765
+ @decision = 5
766
+
767
+
768
+ def description
769
+ <<-'__dfa_description__'.strip!
770
+ 1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | ATTRIBUTE | WHITESPACE | COMMENT );
771
+ __dfa_description__
772
+ end
773
+ end
774
+
775
+
776
+ private
777
+
778
+ def initialize_dfas
779
+ super rescue nil
780
+ @dfa5 = DFA5.new( self, 5 )
781
+
782
+ end
783
+ end # class Lexer < ANTLR3::Lexer
784
+
785
+ at_exit { Lexer.main( ARGV ) } if __FILE__ == $0
786
+ end
787
+