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,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
+