source: ruby/trunk/lib/adl_parser/lib/parser.rb @ 265

Last change on this file since 265 was 265, checked in by Tatsukawa, Akimichi, 11 years ago

refactoring adl scanners in object-oriented way in progress

File size: 112.6 KB
Line 
1#
2# DO NOT MODIFY!!!!
3# This file is automatically generated by Racc 1.4.6
4# from Racc grammer file "".
5#
6
7require 'racc/parser.rb'
8
9
10
11$:.unshift File.join(File.dirname(__FILE__))
12require 'logger'
13require 'rubygems'
14require 'adl_parser.rb'
15require 'am.rb'
16require 'rm.rb'
17$DEBUG = true
18
19
20
21module OpenEHR
22  module ADL
23    class Parser < Racc::Parser
24
25module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1205)
26
27def assert_at(file,line, message = "")
28  unless yield
29    raise "Assertion failed !: #{file}, #{line}: #{message}"
30  end
31end
32
33if $DEBUG
34  @@logger = Logger.new('log/parser.log','daily')
35  @@logger.level = Logger::DEBUG
36else
37  @@logger = Logger.new(STDOUT)
38  @@logger.level = Logger::WARN
39end
40
41@@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
42@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
43
44###----------/* keywords */ ---------------------------------------------
45@@adl_reserved = {
46    'archetype' => :SYM_ARCHETYPE,
47    'adl_version' => :SYM_ADL_VERSION,
48    'controlled' => :SYM_IS_CONTROLLED,
49    'specialize' => :SYM_SPECIALIZE,
50    'concept' => :SYM_CONCEPT,
51    'language' => :SYM_LANGUAGE,
52    'description' => :SYM_DESCRIPTION,
53    'definition' => :SYM_DEFINITION,
54    'invariant' => :SYM_INVARIANT,
55    'ontology' => :SYM_ONTOLOGY,
56    'matches' => :SYM_MATCHES,
57    'is_in' => :SYM_MATCHES,
58    'occurrences' => :SYM_OCCURRENCES,
59    'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE
60    'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE
61    'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY
62}
63
64@@dadl_reserved = {
65  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE
66  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE
67  'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY
68}
69
70@@cadl_reserved = {
71  'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn]
72  'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee]
73  'and' => :SYM_AND, # [Aa][Nn][Dd]
74  'or' => :SYM_OR, # [Oo][Rr]
75  'xor' => :SYM_XOR, # [Xx][Oo][Rr]
76  'not' => :SYM_NOT, # [Nn][Oo][Tt]
77  'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss]
78  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE
79  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE
80  'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll]
81  'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss]
82  'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee]
83  'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss]
84  'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy]
85  'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd]
86  'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd]
87  'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee]
88  'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss]
89  'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn]
90  'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt]
91  'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY
92  'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee]
93  'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
94  'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
95  'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee]
96  'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee]
97}
98
99
100###----------/* Scanner */ -----------------------------------------------
101
102
103def scan
104  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:")
105  adl_scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
106  cadl_scanner = OpenEHR::ADL::Scanner::CADLScanner.new(@adl_type, @filename)
107  dadl_scanner = OpenEHR::ADL::Scanner::DADLScanner.new(@adl_type, @filename)
108  regex_scanner = OpenEHR::ADL::Scanner::RegexScanner.new(@adl_type, @filename)
109  term_constraint_scanner = OpenEHR::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename)
110
111  until @data.nil?  do
112    case @adl_type.last
113    when :adl
114      @data = adl_scanner.scan(@data) do |sym, val|
115        yield sym, val
116      end
117    when :dadl
118      @data = dadl_scanner.scan(@data) do |sym, val|
119        yield sym, val
120      end
121    when :cadl
122      @data = cadl_scanner.scan(@data) do |sym, val|
123        yield sym, val
124      end
125    when :regexp
126      @data = regex_scanner.scan(@data) do |sym, val|
127        yield sym, val
128      end
129    when :term_constraint
130      @@logger.debug("#{__FILE__}:#{__LINE__}: scan: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{@data.inspect}")
131      @data = term_constraint_scanner.scan(@data) do |sym, val|
132        yield sym, val
133      end
134    else
135      raise
136    end
137    @data = $' # variable $' receives the string after the match
138  end
139  yield :EOF, nil
140  yield false, '$'
141end # of scan
142
143### def scan
144###   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:")
145 
146###   until @data.nil?  do
147###     case @adl_type.last
148###     when :adl
149###       @data = scan_adl(@data) do |sym, val|
150###         yield sym, val
151###       end
152###     when :dadl
153###       @data = scan_dadl(@data) do |sym, val|
154###         yield sym, val
155###       end
156###     when :cadl
157###       @data = scan_cadl(@data) do |sym, val|
158###         yield sym, val
159###       end
160###     when :regexp
161###       @data = scan_regexp(@data) do |sym, val|
162###         yield sym, val
163###       end
164###     when :term_constraint
165###       @@logger.debug("#{__FILE__}:#{__LINE__}: scan: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
166###       @data = scan_term_constraint(@data) do |sym, val|
167###         yield sym, val
168###       end
169###     else
170###       raise
171###     end
172###     @data = $' # variable $' receives the string after the match
173###   end
174###   yield :EOF, nil
175###   yield false, '$'
176### end # of scan
177
178def scan_adl(data)
179  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_adl at #{@filename}:#{@lineno}: data = #{data.inspect}")
180  until data.nil?  do
181    case @adl_type.last
182    when :adl
183      case data
184      when /\A\n/ # carriage return
185        @lineno += 1
186        ;
187      when /\A[ \t\r\f]+/ #just drop it
188        ;
189      when /\A--.*\n/ # single line comment
190        @lineno += 1
191        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
192        ;
193      when /\Adescription/   # description
194        yield :SYM_DESCRIPTION, :SYM_DESCRIPTION
195      when /\Adefinition/   # definition
196        yield :SYM_DEFINITION, :SYM_DEFINITION
197        ###----------/* symbols */ -------------------------------------------------
198      when /\A[A-Z][a-zA-Z0-9_]*/
199        yield :V_TYPE_IDENTIFIER, $&
200#      when /\A[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z0-9]+/   #V_ARCHETYPE_ID
201      when /\A(\w+)-(\w+)-(\w+)\.(\w+)(-\w+)?\.(v\w+)/   #V_ARCHETYPE_ID
202        object_id, rm_originator, rm_name, rm_entity, concept_name, specialisation, version_id = $&, $1, $2, $3, $4, $5, $6
203        archetype_id = OpenEHR::RM::Support::Identification::Archetype_ID.new(object_id, concept_name, rm_name, rm_entity, rm_originator, specialisation, version_id)
204#        yield :V_ARCHETYPE_ID, $&
205        yield :V_ARCHETYPE_ID, archetype_id
206      when /\A[a-z][a-zA-Z0-9_]*/
207#        word = $&.downcase
208        word = $&
209        if @@adl_reserved[word]
210          @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
211          yield @@adl_reserved[word], @@adl_reserved[word]
212        elsif #/\A[A-Z][a-zA-Z0-9_]*/
213          @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
214          yield :V_ATTRIBUTE_IDENTIFIER, $&
215        end
216      when /\A\=/   # =
217        yield :SYM_EQ, :SYM_EQ
218      when /\A\>=/   # >=
219        yield :SYM_GE, :SYM_GE
220      when /\A\<=/   # <=
221        yield :SYM_LE, :SYM_LE
222      when /\A\</   # <
223        if @in_interval
224#          @start_block_received = false
225          yield :SYM_LT, :SYM_LT
226        else
227#          @start_block_received = true
228          @adl_type.push(:dadl)
229          yield :SYM_START_DBLOCK,  $&
230        end
231      when /\A\>/   # >
232        if @in_interval
233          yield :SYM_GT, :SYM_GT
234        else
235          adl_type = @adl_type.pop
236          assert_at(__FILE__,__LINE__){adl_type == :dadl}
237          yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
238        end
239      when /\A\{/   # {
240        @adl_type.push(:cadl)
241        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
242        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
243      when /\A\}/   # }
244        adl_type = @adl_type.pop
245#        puts "Escaping #{adl_type}"
246        assert_at(__FILE__,__LINE__){adl_type == :cadl}
247        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
248        yield :SYM_END_CBLOCK, $&
249      when /\A\-/   # -
250        yield :Minus_code, :Minus_code
251      when /\A\+/   # +
252        yield :Plus_code, :Plus_code
253      when /\A\*/   # *
254        yield :Star_code, :Star_code
255      when /\A\//   # /
256        yield :Slash_code, :Slash_code
257      when /\A\^/   # ^
258        yield :Caret_code, :Caret_code
259      when /\A\=/   # =
260        yield :Equal_code, :Equal_code
261      when /\A\.\.\./   # ...
262        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
263      when /\A\.\./   # ..
264        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
265      when /\A\./   # .
266        yield :Dot_code, :Dot_code
267      when /\A\;/   # ;
268        yield :Semicolon_code, :Semicolon_code
269      when /\A\,/   # ,
270        yield :Comma_code, :Comma_code
271      when /\A\:/   # :
272        yield :Colon_code, :Colon_code
273      when /\A\!/   # !
274        yield :Exclamation_code, :Exclamation_code
275      when /\A\(/   # (
276        yield :Left_parenthesis_code, :Left_parenthesis_code
277      when /\A\)/   # )
278        yield :Right_parenthesis_code, :Right_parenthesis_code
279      when /\A\$/   # $
280        yield :Dollar_code, :Dollar_code
281      when /\A\?\?/   # ??
282        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
283      when /\A\?/   # ?
284        yield :Question_mark_code, :Question_mark_code
285      when /\A[0-9]+\.[0-9]+(\.[0-9]+)*/   # ?
286        yield :V_VERSION_STRING, $&
287      when /\A\|/   # |
288        if @in_interval
289          @in_interval = false
290        else
291          @in_interval = true
292        end
293        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
294      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
295#      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
296        yield :V_QUALIFIED_TERM_CODE_REF, $&
297      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
298        yield :V_LOCAL_TERM_CODE_REF, $&
299      when /\A\[/   # [
300        yield :Left_bracket_code, :Left_bracket_code
301      when /\A\]/   # ]
302        yield :Right_bracket_code, :Right_bracket_code
303
304      when /\A"([^"]*)"/m #V_STRING
305        yield :V_STRING, $1
306      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
307        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
308      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
309        yield :V_LOCAL_CODE, $&
310      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
311        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
312      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
313        yield :V_ISO8601_EXTENDED_TIME, $&
314      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
315        yield :V_ISO8601_EXTENDED_DATE, $&
316      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
317        yield :V_GENERIC_TYPE_IDENTIFIER, $&
318      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
319        yield :V_INTEGER, $&
320      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
321        yield :V_REAL, $&
322        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
323      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
324        yield :V_URI, $&
325      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
326        yield :V_ISO8601_DURATION, $&
327      when /\A\S/ #UTF8CHAR
328        yield :UTF8CHAR, $&
329      end
330      data = $' # variable $' receives the string after the match
331    when :dadl
332      data = scan_dadl(data) do |sym, val|
333        yield sym, val
334      end
335    when :cadl
336      data = scan_cadl(data) do |sym, val|
337        yield sym, val
338      end
339    when :regexp
340      data = scan_regexp(data) do |sym, val|
341        yield sym, val
342      end
343    when :term_constraint
344      @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
345
346      data = scan_term_constraint(data) do |sym, val|
347        yield sym, val
348      end
349    else
350      raise
351    end
352  end
353end # scan_adl
354
355
356def scan_cadl(data)
357  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_cadl at #{@filename}:#{@lineno}: data = #{data.inspect}")
358  until data.nil?  do
359    case @adl_type.last
360    when :cadl
361      case scanned = @@cadl_scanner.parse(data)
362      when Yaparc::Result::OK
363        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
364          @in_c_domain_type = true
365          @adl_type.push(:dadl)
366          yield scanned.value
367        else
368          yield scanned.value
369        end
370        data = scanned.input
371      end
372
373      case data
374      when /\A\n/ # carriage return
375        @lineno += 1
376        ;
377      when /\A[ \t\r\f]+/ #just drop it
378        ;
379      when /\A--.*\n/ # single line comment
380        @lineno += 1
381        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
382        ;
383        ###----------/* symbols */ -------------------------------------------------
384      when /\A\=/   # =
385        yield :SYM_EQ, :SYM_EQ
386      when /\A\>=/   # >=
387        yield :SYM_GE, :SYM_GE
388      when /\A\<=/   # <=
389        yield :SYM_LE, :SYM_LE
390###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
391###         @in_c_domain_type = true
392###         @adl_type.push(:dadl)
393###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
394      when /\A\</   # <
395        if @in_interval
396          yield :SYM_LT, :SYM_LT
397        else
398          @adl_type.push(:dadl)
399          yield :SYM_START_DBLOCK,  $&
400        end
401      when /\A\>/   # >
402        if @in_interval
403          yield :SYM_GT, :SYM_GT
404        else
405          adl_type = @adl_type.pop
406#          puts "Escaping #{adl_type}"
407          assert_at(__FILE__,__LINE__){adl_type == :dadl}
408          yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
409        end
410      when /\A\-/   # -
411        yield :Minus_code, :Minus_code
412      when /\A\+/   # +
413        yield :Plus_code, :Plus_code
414      when /\A\*/   # *
415        yield :Star_code, :Star_code
416      when /\A\//   # /
417        yield :Slash_code, :Slash_code
418      when /\A\^/   # ^
419        yield :Caret_code, :Caret_code
420      when /\A\.\.\./   # ...
421        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
422      when /\A\.\./   # ..
423        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
424      when /\A\./   # .
425        yield :Dot_code, :Dot_code
426      when /\A\;/   # ;
427        yield :Semicolon_code, :Semicolon_code
428      when /\A\,/   # ,
429        yield :Comma_code, :Comma_code
430      when /\A\:/   # :
431        yield :Colon_code, :Colon_code
432      when /\A\!/   # !
433        yield :Exclamation_code, :Exclamation_code
434      when /\A\(/   # (
435        yield :Left_parenthesis_code, :Left_parenthesis_code
436      when /\A\)/   # )
437        yield :Right_parenthesis_code, :Right_parenthesis_code
438      when /\A\{\// #V_REGEXP
439        if @adl_type.last != :regexp
440          @in_regexp = true
441          @adl_type.push(:regexp)
442          yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
443        else
444          raise
445        end
446#        yield :V_REGEXP, :V_REGEXP
447      when /\A\{/   # {
448        @adl_type.push(:cadl)
449        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
450        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
451      when /\A\}/   # }
452        adl_type = @adl_type.pop
453#        puts "Escaping #{adl_type}"
454        assert_at(__FILE__,__LINE__){adl_type == :cadl}
455        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
456        yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
457      when /\A\$/   # $
458        yield :Dollar_code, :Dollar_code
459      when /\A\?\?/   # ??
460        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
461      when /\A\?/   # ?
462        yield :Question_mark_code, :Question_mark_code
463      when /\A\|/   # |
464        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
465        if @in_interval
466          @in_interval = false
467        else
468#          @in_interval = false
469          @in_interval = true
470        end
471        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
472        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
473
474      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/  #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
475#      when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
476        yield :V_QUALIFIED_TERM_CODE_REF, $&
477      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
478        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
479      when /\A\[([a-zA-Z0-9\(\)\._\-]+)::[ \t\n]*/
480        @adl_type.push(:term_constraint)
481        yield :START_TERM_CODE_CONSTRAINT, $1
482      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
483        yield :V_LOCAL_TERM_CODE_REF, $&
484      when /\A\[/   # [
485        yield :Left_bracket_code, :Left_bracket_code
486      when /\A\]/   # ]
487        yield :Right_bracket_code, :Right_bracket_code
488      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
489        yield :V_GENERIC_TYPE_IDENTIFIER, $&
490      when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
491        yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $&
492      when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
493        yield :V_ISO8601_DATE_CONSTRAINT_PATTERN, $&
494      when /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
495        yield :V_ISO8601_TIME_CONSTRAINT_PATTERN, $&
496      when /\A[a-z][a-zA-Z0-9_]*/
497        word = $&.dup
498        if @@cadl_reserved[word.downcase]
499          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
500        else
501          @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
502          yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
503        end
504      when /\A[A-Z][a-zA-Z0-9_]*/
505        word = $&.dup
506        if @@cadl_reserved[word.downcase]
507          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
508        else
509          yield :V_TYPE_IDENTIFIER, $&
510        end
511      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
512        yield :V_LOCAL_CODE, $&
513      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
514        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
515      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
516        yield :V_ISO8601_EXTENDED_TIME, $&
517      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
518        yield :V_ISO8601_EXTENDED_DATE, $&
519      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
520        yield :V_INTEGER, $&
521      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
522        yield :V_REAL, $&
523           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
524      when /\A"([^"]*)"/m #V_STRING
525        yield :V_STRING, $1
526      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
527        yield :V_URI, $&
528###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
529###         yield :V_ISO8601_DURATION, $&
530      when /\A\S/ #UTF8CHAR
531        yield :UTF8CHAR, $&
532      else
533        raise
534      end
535      data = $' # variable $' receives the string after the match
536    when :adl
537      data = scan_adl(data) do |sym, val|
538        yield sym, val
539      end
540    when :dadl
541      data = scan_dadl(data) do |sym, val|
542        yield sym, val
543      end
544    when :regexp
545      data = scan_regexp(data) do |sym, val|
546        yield sym, val
547      end
548    when :term_constraint
549      @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
550     
551      data = scan_term_constraint(data) do |sym, val|
552        yield sym, val
553      end
554    else
555      raise
556    end
557  end # of until
558end # of scan_cadl
559
560def scan_dadl(data)
561  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_dadl at #{@filename}:#{@lineno}: data = #{data.inspect}")
562  until data.nil?  do
563    case @adl_type.last
564    when :dadl
565      case scanned = @@dadl_scanner.parse(data)
566      when Yaparc::Result::OK
567        yield scanned.value
568        data = scanned.input
569      else
570      end
571
572      case data
573      when /\A\n/ # carriage return
574        @lineno += 1
575        ;
576      when /\A[ \t\r\f]+/ #just drop it
577        ;
578      when /\A--.*\n/ # single line comment
579        @lineno += 1
580        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
581        ;
582        ###----------/* symbols */ -------------------------------------------------
583      when /\A\=/   # =
584        yield :SYM_EQ, :SYM_EQ
585      when /\A\>\=/   # >=
586        yield :SYM_GE, :SYM_GE
587      when /\A\<\=/   # <=
588        yield :SYM_LE, :SYM_LE
589      when /\A\</   # <
590        if @in_interval
591          yield :SYM_LT, :SYM_LT
592        else
593          @adl_type.push(:dadl)
594          yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
595        end
596      when /\A\>/   # >
597        if @in_interval
598#          @in_interval = false
599          yield :SYM_GT, :SYM_GT
600        elsif @in_c_domain_type == true
601          assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
602          adl_type = @adl_type.pop
603          if @adl_type.last == :cadl
604            @in_c_domain_type = false
605            yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
606          else
607            yield :SYM_END_DBLOCK, $&
608          end
609        elsif @in_c_domain_type == false
610          adl_type = @adl_type.pop
611          assert_at(__FILE__,__LINE__){adl_type == :dadl}
612          yield :SYM_END_DBLOCK, $&
613        else
614          raise
615        end
616      when /\A\-/   # -
617        yield :Minus_code, :Minus_code
618      when /\A\+/   # +
619        yield :Plus_code, :Plus_code
620      when /\A\*/   # *
621        yield :Star_code, :Star_code
622      when /\A\//   # /
623        yield :Slash_code, :Slash_code
624      when /\A\^/   # ^
625        yield :Caret_code, :Caret_code
626      when /\A\.\.\./   # ...
627        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
628      when /\A\.\./   # ..
629        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
630      when /\A\./   # .
631        yield :Dot_code, :Dot_code
632      when /\A\;/   # ;
633        yield :Semicolon_code, :Semicolon_code
634      when /\A\,/   # ,
635        yield :Comma_code, :Comma_code
636      when /\A\:/   # :
637        yield :Colon_code, :Colon_code
638      when /\A\!/   # !
639        yield :Exclamation_code, :Exclamation_code
640      when /\A\(/   # (
641        yield :Left_parenthesis_code, :Left_parenthesis_code
642      when /\A\)/   # )
643        yield :Right_parenthesis_code, :Right_parenthesis_code
644      when /\A\$/   # $
645        yield :Dollar_code, :Dollar_code
646      when /\A\?\?/   # ??
647        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
648      when /\A\?/   # ?
649        yield :Question_mark_code, :Question_mark_code
650      when /\A\|/   # |
651        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
652        if @in_interval
653          @in_interval = false
654        else
655#          @in_interval = false
656          @in_interval = true
657        end
658        @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
659        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
660###       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
661###         yield :V_QUALIFIED_TERM_CODE_REF, $&
662###       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
663###         yield :V_LOCAL_TERM_CODE_REF, $&
664###       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
665###         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
666      when /\A\[/   # [
667        yield :Left_bracket_code, :Left_bracket_code
668      when /\A\]/   # ]
669        yield :Right_bracket_code, :Right_bracket_code
670###       when /\A[A-Z][a-zA-Z0-9_-]*/
671###         yield :V_TYPE_IDENTIFIER, $&
672###       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
673###         yield :V_GENERIC_TYPE_IDENTIFIER, $&
674###       when /\A[a-z][a-zA-Z0-9_]*/
675###         word = $&.downcase
676###         if @@dadl_reserved[word]
677###           yield @@dadl_reserved[word], @@dadl_reserved[word]
678###         else
679###           yield :V_ATTRIBUTE_IDENTIFIER, $&
680###         end
681###       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
682###         yield :V_LOCAL_CODE, $&
683      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
684        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
685      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
686        yield :V_ISO8601_EXTENDED_TIME, $&
687      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
688        yield :V_ISO8601_EXTENDED_DATE, $&
689      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
690        yield :V_GENERIC_TYPE_IDENTIFIER, $&
691      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
692        yield :V_INTEGER, $&
693###       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
694###         yield :V_REAL, $&
695        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
696###       when /\A"([^"]*)"/m #V_STRING
697###         yield :V_STRING, $1
698      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
699        yield :V_URI, $&
700###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
701###         yield :V_ISO8601_DURATION, $&
702      when /\A\S/ #UTF8CHAR
703        yield :UTF8CHAR, $&
704      end
705      data = $' # variable $' receives the string after the match
706    when :adl
707      data = scan_adl(data) do |sym, val|
708        yield sym, val
709      end
710    when :cadl
711      data = scan_cadl(data) do |sym, val|
712        yield sym, val
713      end
714    when :regexp
715#      puts "Entering scan_regexp"
716      data = scan_regexp(data) do |sym, val|
717        yield sym, val
718      end
719    when :term_constraint
720      @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
721
722      data = scan_term_constraint(data) do |sym, val|
723        yield sym, val
724      end
725    else
726      raise
727    end
728  end
729end # of scan_dadl
730
731def scan_regexp(data)
732  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_regexp at #{@filename}:#{@lineno}: data = #{data.inspect}")
733  until data.nil?  do
734    case @adl_type.last
735    when :regexp
736      case data
737      when /\A\/\}/ #V_REGEXP
738        if @adl_type.last == :regexp
739          @in_regexp = false
740          @adl_type.pop
741          yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
742        else
743          raise
744        end
745      when /\A(.*)(\/\})/ #V_REGEXP
746        yield :REGEXP_BODY, $1
747        if @adl_type.last == :regexp
748          @in_regexp = false
749          @adl_type.pop
750          yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
751        else
752          raise
753        end
754      else
755        raise data
756      end
757      data = $' # variable $' receives the string after the match
758    when :adl
759      data = scan_adl(data) do |sym, val|
760        yield sym, val
761      end
762    when :dadl
763      data = scan_dadl(data) do |sym, val|
764        yield sym, val
765      end
766    when :cadl
767      data = scan_cadl(data) do |sym, val|
768        yield sym, val
769      end
770    when :term_constraint
771      @@logger.debug("#{__FILE__}:#{__LINE__}: scan_regexp: Entering scan_term_constraint at #{@filename}:#{@lineno}")
772      data = scan_term_constraint(data) do |sym, val|
773        yield sym, val
774      end
775    else
776      raise
777    end
778  end
779end # of scan_regexp
780
781def scan_term_constraint(data)
782  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_term_constraint")
783  until data.nil?  do
784    case @adl_type.last
785    when :term_constraint
786      case data
787      when /\A\n/ # carriage return
788        @lineno += 1
789        ;
790      when /\A[ \t\r\f]+/ #just drop it
791        ;
792      when /\A--.*$/ # single line comment
793        @lineno += 1
794        #@@logger.debug("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
795        ;
796      when /\A([a-zA-Z0-9\._\-])+[ \t]*,/ # match any line, with ',' termination
797        yield :TERM_CODE, $1
798      when /\A([a-zA-Z0-9\._\-])+[ \t]*;/ # match second last line with ';' termination (assumed value)
799        yield :TERM_CODE, $1
800      when /\A([a-zA-Z0-9\._\-])*[ \t]*\]/ # match final line, terminating in ']'
801        adl_type = @adl_type.pop
802        assert_at(__FILE__,__LINE__){adl_type == :term_constraint}
803        yield :END_TERM_CODE_CONSTRAINT, $1
804      else
805        raise "data = #{data}"
806      end
807      data = $' # variable $' receives the string after the match
808    when :adl
809      data = scan_adl(data) do |sym, val|
810        yield sym, val
811      end
812    when :dadl
813      data = scan_dadl(data) do |sym, val|
814        yield sym, val
815      end
816    when :cadl
817      data = scan_cadl(data) do |sym, val|
818        yield sym, val
819      end
820    else
821      raise
822    end
823  end
824end # of scan_term_constraint
825
826
827def parse(data, filename, lineno = 1, debug = false)
828  @yydebug = true
829  @parsestring = data
830  @data = data
831  @lineno = lineno
832  @filename = filename
833  @adl_type = [:adl] # {:adl, :cadl, :dadl}
834  @in_regexp = false
835  @in_interval = false
836  @in_c_domain_type = false
837  yyparse self, :scan
838end
839
840def on_error( t, v, values)
841  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
842end
843
844
845
846
847
848
849
850### Local Variables:
851### mode:ruby
852### mode:font-lock
853### comment-column:0
854### comment-start: "### "
855### comment-end:""
856### End:
857...end parser.y/module_eval...
858##### State transition tables begin ###
859
860racc_action_table = [
861   576,   483,   147,   164,   476,   594,   474,    59,   215,   472,
862   131,   470,   452,   578,   575,   464,   462,    29,   383,   341,
863   387,    67,   385,   321,   155,   157,    25,    26,   526,   114,
864   119,   216,    73,   500,   190,   121,    36,   513,   515,   463,
865   518,   519,    36,   517,   502,    30,    62,   574,   148,   155,
866   157,   434,    49,    51,   284,   112,   444,    81,    84,    87,
867   194,   160,    97,   309,   314,   238,   114,   117,   119,   121,
868   534,   526,   121,   121,   119,    73,   117,   114,   128,   129,
869   513,   515,    79,   518,   519,   277,   160,   281,   286,   288,
870   537,   163,   119,   298,    75,    49,    51,   284,   152,   153,
871    81,    84,    87,   194,   121,    97,   309,   314,   114,   114,
872   117,   119,   121,   534,   102,   119,   436,   230,   232,   494,
873   168,   498,   134,   152,   153,     9,    73,   496,   155,   157,
874   281,   286,   288,   537,   155,   157,   298,    71,   102,   338,
875   249,   322,   631,   323,   344,    11,    49,    51,   111,   248,
876   231,    81,    84,    87,   467,   117,    97,   100,   101,   155,
877   157,   140,   102,   100,   101,   160,    91,    95,   325,   326,
878   135,   160,    97,    79,   117,    81,    84,    87,   468,   117,
879    97,   100,   101,   389,   114,   140,   190,   155,   157,   138,
880    91,    95,   173,   155,   157,   121,   160,    79,   392,    81,
881    84,    87,   152,   153,    97,   100,   101,  -374,   152,   153,
882  -373,    81,   329,   330,    91,    95,   155,   157,   219,   158,
883   161,    79,   571,   151,   160,    22,   154,   156,   155,   157,
884   160,   158,   161,   152,   153,   151,   325,   326,   154,   156,
885    97,   219,   242,    23,   238,   544,   103,   573,   541,   394,
886   601,   542,   543,   160,     1,    81,    84,    87,   602,   603,
887    97,   152,   153,   263,   109,   160,   256,   152,   153,   259,
888   261,   395,    67,     4,    49,    51,   103,    79,    81,    84,
889    87,   144,    16,    97,    17,   159,   145,   102,    49,    51,
890   152,   153,   333,    36,   325,   326,   219,   159,    97,   149,
891    79,   396,   152,   153,   150,   121,   219,    81,   329,   330,
892   140,    81,    84,    87,   102,    16,    97,    17,    49,    51,
893   114,   117,   119,   121,    81,    84,    87,   128,   129,    97,
894   100,   101,   219,    81,    84,    87,   420,   140,    97,    91,
895    95,   272,   219,    81,    84,    87,    79,   416,    97,   277,
896   272,    81,    84,    87,   398,    79,    97,   100,   101,   389,
897   102,   481,   415,   329,   330,    79,    91,    95,   335,    81,
898    84,    87,   102,    79,    97,   128,   129,   212,   241,    81,
899    84,    87,   242,    71,    97,   325,   326,    35,   240,    97,
900   244,    79,    49,    51,   399,   140,   400,    81,    84,    87,
901   102,    79,    97,   100,   101,   401,   418,   402,   219,    81,
902    84,    87,    91,    95,    97,   100,   101,   403,    40,    79,
903    36,   629,   630,    71,    91,    95,   404,   219,    35,    49,
904    51,    79,    49,    51,    81,   329,   330,    81,    84,    87,
905   102,   405,    97,   100,   101,    81,    84,    87,   431,   432,
906    97,   406,    91,    95,    81,   329,   330,   492,   102,    79,
907   407,    36,   408,    71,    81,    84,    87,    79,   409,    97,
908    49,    51,    49,    51,   429,   430,   219,    81,    84,    87,
909   410,    71,    97,   100,   101,   102,    79,    81,   329,   330,
910    49,    51,    91,    95,   270,    81,    84,    87,   411,    79,
911    97,   100,   101,   102,   239,    81,   329,   330,   140,   247,
912    91,    95,   246,    81,    84,    87,   145,    79,    97,    81,
913   329,   330,    81,    84,    87,   150,   140,    97,   100,   101,
914   144,   102,   611,   612,   613,    79,   416,    91,    95,   219,
915    81,    84,    87,   149,    79,    97,   100,   101,   245,   219,
916   244,   415,   329,   330,    71,    91,    95,   219,   172,   169,
917   170,   171,    79,    49,    51,   346,   347,    35,    81,    84,
918    87,   348,   349,    97,   100,   101,    81,    84,    87,   251,
919   102,    97,    56,    91,    95,   252,    81,    84,    87,   416,
920    79,    97,    35,   253,    81,    84,    87,   264,    79,    97,
921    36,   427,   428,   140,    81,   329,   330,   265,    79,    49,
922    51,   325,   326,   356,   357,    97,    79,    81,    84,    87,
923   358,   359,    97,   100,   101,    36,   325,   326,   425,   426,
924    97,   119,    91,    95,    49,    51,   243,   284,   242,    79,
925    81,    84,    87,   194,   437,    97,   309,   314,   438,   114,
926   117,   119,   121,    81,    84,    87,   325,   326,    97,   439,
927    97,   440,   114,   117,   119,   121,   172,   169,   170,   171,
928   281,   286,   288,  -103,   366,   367,   298,   176,   423,   424,
929    81,    84,    87,   194,   441,    97,   128,   129,   111,   114,
930   117,   119,   121,   190,   124,   112,   374,   375,    81,    84,
931    87,   421,   422,    97,   128,   129,   111,   114,   117,   119,
932   121,   442,   124,    81,    84,    87,    49,    51,    97,    81,
933   329,   330,   114,   117,   119,   121,    81,    84,    87,   241,
934   445,    97,   446,   447,   448,   114,   117,   119,   121,    81,
935    84,    87,   449,   450,    97,   240,   453,   454,   114,   117,
936   119,   121,   172,   169,   170,   171,   172,   169,   170,   171,
937   328,    81,   329,   330,   172,   169,   170,   171,   172,   169,
938   170,   171,   172,   169,   170,   171,   172,   169,   170,   171,
939   172,   169,   170,   171,   455,   456,   457,   458,   460,   461,
940   140,   214,   148,   138,   213,   210,   103,   166,   478,   480,
941   266,   482,   163,   485,   486,   487,   117,   489,   146,   140,
942   139,   136,    36,   110,    69,   503,   114,   505,   117,   507,
943   119,   509,   121,   511,   512,    35,   540,    62,    58,   546,
944   547,   548,   267,   550,    57,   552,   114,   554,   117,   556,
945   119,   558,   121,   560,   561,   562,   563,   564,   565,   163,
946  -103,   569,   250,    54,   173,    34,   114,    31,   580,   581,
947   582,   121,   121,    28,   121,   583,   584,   585,   586,   587,
948   588,   268,   591,   592,   593,    24,   596,   597,   111,    21,
949   269,   604,   605,   606,   607,    79,   573,   609,   270,   271,
950   619,   620,   621,   622,    15,   624,    14,   625,    12,   627,
951   628,   319,     8,     7,   121 ]
952
953racc_action_check = [
954   531,   410,    86,    91,   405,   570,   404,    43,   147,   403,
955    63,   402,   375,   531,   529,   398,   395,    21,   265,   250,
956   267,    52,   266,   231,   222,   222,    18,    18,   531,   250,
957   265,   147,   531,   430,   267,   266,    43,   531,   531,   395,
958   531,   531,    52,   462,   432,    21,    63,   529,    86,   320,
959   320,   357,   531,   531,   531,   410,   367,   531,   531,   531,
960   531,   222,   531,   531,   531,   320,   531,   531,   531,   531,
961   531,   462,   375,   405,   404,   462,   403,   402,   398,   398,
962   462,   462,    91,   462,   462,   462,   320,   531,   531,   531,
963   531,   570,   430,   531,    54,   462,   462,   462,   222,   222,
964   462,   462,   462,   462,   432,   462,   462,   462,   357,   462,
965   462,   462,   462,   462,    54,   367,   359,   163,   166,   424,
966    95,   428,    69,   320,   320,     4,    54,   426,   227,   227,
967   462,   462,   462,   462,   229,   229,   462,    54,   166,   248,
968   188,   240,   624,   240,   252,     4,    54,    54,   248,   187,
969   163,    54,    54,    54,   400,   252,    54,    54,    54,   224,
970   224,   166,   624,    95,    95,   227,    54,    54,   424,   424,
971    69,   229,   424,    54,   359,   166,   166,   166,   401,   428,
972   166,   166,   166,   268,   426,   624,   269,   218,   218,    71,
973   166,   166,    98,   226,   226,   264,   224,   166,   271,   624,
974   624,   624,   227,   227,   624,   624,   624,    71,   229,   229,
975    98,   400,   400,   400,   624,   624,    88,    88,   157,    88,
976    88,   624,   519,    88,   218,    14,    88,    88,   174,   174,
977   226,   174,   174,   224,   224,   174,   401,   401,   174,   174,
978   401,   152,   522,    14,   174,   480,   110,   522,   480,   272,
979   575,   480,   480,    88,     0,   157,   157,   157,   579,   579,
980   157,   218,   218,   194,    60,   174,   194,   226,   226,   194,
981   194,   274,    60,     0,   519,   519,    58,   157,   152,   152,
982   152,    84,    11,   152,    11,    88,    84,   171,   110,   110,
983    88,    88,   244,    60,   244,   244,   153,   174,   244,    87,
984   152,   275,   174,   174,    87,   480,   161,   575,   575,   575,
985   171,   194,   194,   194,   168,    26,   194,    26,    58,    58,
986   194,   194,   194,   194,   171,   171,   171,   243,   243,   171,
987   171,   171,   160,   153,   153,   153,   349,   168,   153,   171,
988   171,   278,   159,   161,   161,   161,   171,   321,   161,   214,
989   214,   168,   168,   168,   279,   153,   168,   168,   168,   408,
990   626,   408,   321,   321,   321,   161,   168,   168,   246,   160,
991   160,   160,   170,   168,   160,   246,   246,   136,   282,   159,
992   159,   159,   283,   626,   159,   349,   349,   136,   284,   349,
993   287,   160,   626,   626,   289,   170,   290,   626,   626,   626,
994   619,   159,   626,   626,   626,   293,   347,   296,   158,   170,
995   170,   170,   626,   626,   170,   170,   170,   300,    28,   626,
996   136,   622,   622,   619,   170,   170,   303,   151,    28,   136,
997   136,   170,   619,   619,   270,   270,   270,   619,   619,   619,
998    82,   306,   619,   619,   619,   158,   158,   158,   355,   355,
999   158,   309,   619,   619,   347,   347,   347,   422,   614,   619,
1000   310,    28,   312,    82,   151,   151,   151,   158,   314,   151,
1001    28,    28,    82,    82,   354,   354,   154,    82,    82,    82,
1002   315,   614,    82,    82,    82,   169,   151,   574,   574,   574,
1003   614,   614,    82,    82,   317,   614,   614,   614,   319,    82,
1004   614,   614,   614,   102,   175,   422,   422,   422,   169,   186,
1005   614,   614,   185,   154,   154,   154,   325,   614,   154,   418,
1006   418,   418,   169,   169,   169,   326,   102,   169,   169,   169,
1007   329,   609,   606,   606,   606,   154,   564,   169,   169,   219,
1008   102,   102,   102,   330,   169,   102,   102,   102,   184,   156,
1009   182,   564,   564,   564,   609,   102,   102,   155,   175,   175,
1010   175,   175,   102,   609,   609,   254,   254,   515,   609,   609,
1011   609,   255,   255,   609,   609,   609,   219,   219,   219,   191,
1012   172,   219,    34,   609,   609,   192,   156,   156,   156,   486,
1013   609,   156,    34,   193,   155,   155,   155,   195,   219,   155,
1014   515,   353,   353,   172,   486,   486,   486,   196,   156,   515,
1015   515,   420,   420,   257,   257,   420,   155,   172,   172,   172,
1016   258,   258,   172,   172,   172,    34,   494,   494,   352,   352,
1017   494,   251,   172,   172,    34,    34,   181,   215,   179,   172,
1018   215,   215,   215,   215,   360,   215,   215,   215,   361,   215,
1019   215,   215,   215,   263,   263,   263,   241,   241,   263,   362,
1020   241,   363,   263,   263,   263,   263,    96,    96,    96,    96,
1021   215,   215,   215,   103,   260,   260,   215,   103,   351,   351,
1022   103,   103,   103,   103,   364,   103,   103,   103,   103,   103,
1023   103,   103,   103,   103,   103,    62,   262,   262,    62,    62,
1024    62,   350,   350,    62,    62,    62,    62,    62,    62,    62,
1025    62,   365,    62,   256,   256,   256,   518,   518,   256,   492,
1026   492,   492,   256,   256,   256,   256,   261,   261,   261,   178,
1027   368,   261,   369,   370,   371,   261,   261,   261,   261,   259,
1028   259,   259,   372,   373,   259,   176,   376,   377,   259,   259,
1029   259,   259,   237,   237,   237,   237,   234,   234,   234,   234,
1030   242,   242,   242,   242,   236,   236,   236,   236,   617,   617,
1031   617,   617,   235,   235,   235,   235,   233,   233,   233,   233,
1032   632,   632,   632,   632,   378,   379,   380,   381,   393,   394,
1033   148,   146,   141,   140,   139,   116,   108,    92,   406,   407,
1034   199,   409,    89,   413,   415,   417,   249,   419,    85,    79,
1035    73,    70,    67,    61,    53,   433,   434,   435,   436,   443,
1036   444,   451,   452,   460,   461,    48,   463,    47,    42,   488,
1037   490,   491,   202,   493,    36,   495,   496,   497,   498,   499,
1038   500,   501,   502,   504,   506,   508,   510,   511,   512,   514,
1039    35,   517,   189,    33,   520,    27,   247,    24,   537,   538,
1040   540,   541,   542,    20,   544,   549,   551,   553,   555,   557,
1041   559,   204,   565,   566,   568,    16,   572,   573,   245,    13,
1042   205,   581,   589,   590,   591,   595,   598,   604,   207,   213,
1043   610,   611,   612,   613,     8,   616,     6,   618,     5,   620,
1044   621,   216,     3,     2,   543 ]
1045
1046racc_action_pointer = [
1047   253,   nil,   884,   902,   124,   880,   869,   nil,   894,   nil,
1048   nil,   258,   nil,   851,   224,   nil,   867,   nil,     4,   nil,
1049   833,    16,   nil,   nil,   832,   nil,   291,   824,   417,   nil,
1050   nil,   nil,   nil,   821,   581,   799,   833,   nil,   nil,   nil,
1051   nil,   nil,   820,    -8,   nil,   nil,   nil,   776,   814,   nil,
1052   nil,   nil,    -2,   766,    93,   nil,   nil,   nil,   265,   nil,
1053   249,   805,   640,    -5,   nil,   nil,   nil,   768,   nil,   121,
1054   761,   160,   nil,   776,   nil,   nil,   nil,   nil,   nil,   765,
1055   nil,   nil,   419,   nil,   223,   774,   -32,   241,   210,   715,
1056   nil,     2,   750,   nil,   nil,    99,   590,   nil,   163,   nil,
1057   nil,   nil,   482,   622,   nil,   nil,   nil,   nil,   785,   nil,
1058   235,   nil,   nil,   nil,   nil,   nil,   743,   nil,   nil,   nil,
1059   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1060   nil,   nil,   nil,   nil,   nil,   nil,   376,   nil,   nil,   759,
1061   764,   712,   nil,   nil,   nil,   nil,   779,    -4,   746,   nil,
1062   nil,   406,   220,   275,   455,   536,   528,   197,   387,   321,
1063   311,   285,   nil,   116,   nil,   nil,   117,   nil,   293,   464,
1064   351,   266,   559,   nil,   222,   482,   689,   nil,   673,   582,
1065   nil,   580,   494,   nil,   492,   456,   453,    93,    84,   796,
1066   nil,   523,   529,   578,   253,   541,   551,   nil,   nil,   744,
1067   nil,   nil,   776,   nil,   815,   824,   nil,   832,   nil,   nil,
1068   nil,   nil,   nil,   853,   306,   582,   865,   nil,   181,   518,
1069   nil,   nil,    18,   nil,   153,   nil,   187,   122,   nil,   128,
1070   nil,    11,   nil,   700,   680,   696,   688,   676,   nil,   nil,
1071    86,   597,   703,   263,   235,   812,   311,   789,    82,   738,
1072   -38,   562,    87,   nil,   504,   510,   655,   552,   559,   681,
1073   613,   668,   635,   595,   125,   -39,   -35,   -37,   128,   115,
1074   376,   161,   167,   nil,   237,   287,   nil,   nil,   297,   331,
1075   nil,   nil,   322,   326,   332,   nil,   nil,   334,   nil,   380,
1076   373,   nil,   nil,   382,   nil,   nil,   384,   nil,   nil,   nil,
1077   394,   nil,   nil,   403,   nil,   nil,   418,   nil,   nil,   395,
1078   380,   nil,   406,   nil,   412,   457,   nil,   438,   nil,   461,
1079    43,   304,   nil,   nil,   nil,   453,   462,   nil,   nil,   472,
1080   485,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1081   nil,   nil,   nil,   nil,   nil,   nil,   nil,   396,   nil,   326,
1082   640,   617,   567,   540,   413,   387,   nil,    41,   nil,   106,
1083   583,   587,   598,   600,   623,   650,   nil,    46,   669,   671,
1084   672,   673,   681,   682,   nil,     2,   685,   686,   723,   724,
1085   725,   726,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1086   nil,   nil,   nil,   705,   755,     4,   nil,   nil,    14,   nil,
1087   153,   177,    10,     8,     5,     3,   733,   738,   304,   737,
1088     0,   nil,   nil,   789,   nil,   742,   nil,   744,   461,   746,
1089   552,   nil,   447,   nil,   109,   nil,   117,   nil,   111,   nil,
1090    23,   nil,    34,   754,   749,   756,   750,   nil,   nil,   nil,
1091   nil,   nil,   nil,   758,   751,   nil,   nil,   nil,   nil,   nil,
1092   nil,   760,   752,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1093   789,   812,    42,   790,   nil,   nil,   nil,   nil,   nil,   nil,
1094   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1095   235,   nil,   nil,   nil,   nil,   nil,   546,   nil,   768,   nil,
1096   769,   770,   661,   772,   567,   774,   769,   776,   770,   778,
1097   771,   780,   772,   nil,   782,   nil,   783,   nil,   784,   nil,
1098   785,   835,   790,   nil,   762,   556,   nil,   837,   663,   221,
1099   825,   nil,   186,   nil,   nil,   nil,   nil,   nil,   nil,    -9,
1100   nil,    -1,   nil,   nil,   nil,   nil,   nil,   765,   825,   nil,
1101   823,   791,   792,   834,   794,   nil,   nil,   nil,   nil,   804,
1102   nil,   805,   nil,   806,   nil,   807,   nil,   808,   nil,   809,
1103   nil,   nil,   nil,   nil,   493,   810,   859,   nil,   834,   nil,
1104     4,   nil,   847,   806,   429,   249,   nil,   nil,   nil,   166,
1105   nil,   869,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   868,
1106   860,   826,   nil,   nil,   nil,   805,   nil,   nil,   825,   nil,
1107   nil,   nil,   nil,   nil,   842,   nil,   448,   nil,   nil,   510,
1108   844,   868,   869,   870,   437,   nil,   848,   692,   883,   379,
1109   813,   814,   337,   nil,   141,   nil,   339,   nil,   nil,   nil,
1110   nil,   nil,   704 ]
1111
1112racc_action_default = [
1113  -376,    -2,  -376,  -376,    -6,  -376,   -13,    -4,  -376,    -5,
1114    -7,  -376,    -1,  -376,  -376,   633,  -376,   -12,  -376,    -9,
1115   -18,  -376,   -15,   -14,  -376,    -8,  -376,   -21,  -376,   -17,
1116   -16,   -11,   -10,  -376,  -376,  -112,   -94,   -89,   -19,   -90,
1117   -20,  -108,  -376,  -376,   -98,   -99,  -100,  -376,  -376,  -146,
1118   -87,  -147,   -88,   -82,  -376,   -22,   -23,   -95,  -376,  -110,
1119  -376,  -376,  -376,  -376,  -104,  -109,  -101,  -376,   -91,  -376,
1120  -376,  -289,  -281,  -376,  -282,   -25,   -24,  -248,   -26,  -284,
1121  -253,  -152,   -27,  -254,  -376,  -376,  -376,  -376,  -376,  -305,
1122  -273,  -376,  -376,  -283,  -274,  -376,  -251,  -167,   -31,  -286,
1123  -271,  -272,  -376,  -112,   -96,   -93,  -113,   -97,  -376,  -111,
1124  -376,  -187,  -148,  -122,  -191,  -123,  -376,  -204,  -124,  -217,
1125  -125,  -230,  -126,  -127,  -247,  -128,  -129,  -130,  -182,  -183,
1126  -121,  -102,  -105,   -92,   -84,   -83,  -376,    -3,  -288,  -376,
1127  -289,  -285,  -249,  -373,  -153,  -168,  -376,  -376,  -376,  -154,
1128  -169,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
1129  -376,  -376,   -30,  -376,  -256,  -255,  -376,  -259,  -376,  -376,
1130  -376,  -376,  -376,   -32,  -376,  -376,  -148,  -144,  -133,  -122,
1131  -145,  -134,  -123,  -116,  -135,  -124,  -136,  -125,  -137,  -126,
1132  -243,  -138,  -127,  -376,  -376,  -139,  -128,  -117,  -140,  -129,
1133  -118,  -141,  -119,  -142,  -131,  -120,  -143,  -132,  -114,  -106,
1134  -107,   -85,   -86,  -376,  -376,  -376,  -376,  -287,  -263,  -376,
1135  -278,  -279,  -264,  -275,  -265,  -276,  -261,  -260,  -277,  -262,
1136  -307,  -376,  -252,  -250,  -267,  -268,  -269,  -266,  -280,  -270,
1137  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
1138  -376,  -376,  -376,  -115,  -376,  -376,  -376,  -376,  -376,  -376,
1139  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
1140  -376,  -376,  -290,   -63,  -376,  -376,   -33,   -62,   -34,  -357,
1141  -336,  -322,  -317,  -310,  -347,  -343,  -328,  -316,  -334,  -376,
1142  -313,   -54,  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,
1143  -331,   -57,  -342,  -337,  -312,   -58,  -344,  -318,   -59,  -353,
1144  -340,  -324,  -348,   -60,  -354,  -350,  -330,  -311,   -61,  -376,
1145  -376,  -376,  -149,  -151,  -171,  -376,  -376,  -155,  -157,  -376,
1146  -376,  -185,  -170,  -172,  -189,  -186,  -184,  -193,  -190,  -188,
1147  -206,  -194,  -192,  -219,  -207,  -205,  -166,  -376,  -181,  -376,
1148  -376,  -376,  -376,  -376,  -376,  -376,  -203,  -376,  -216,  -376,
1149  -376,  -376,  -376,  -376,  -376,  -376,  -229,  -376,  -376,  -376,
1150  -376,  -376,  -376,  -376,  -242,  -376,  -376,  -376,  -376,  -376,
1151  -376,  -376,  -232,  -220,  -218,  -233,  -231,  -246,  -244,  -150,
1152  -245,  -156,   -28,   -68,  -376,  -376,   -29,   -64,  -376,  -257,
1153  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
1154  -376,  -258,  -303,  -376,  -308,  -152,  -304,  -376,  -376,  -376,
1155  -376,  -164,  -376,  -179,  -376,  -201,  -376,  -214,  -376,  -227,
1156  -376,  -240,  -376,  -376,  -376,  -376,  -376,  -163,  -178,  -200,
1157  -213,  -226,  -239,  -376,  -376,  -165,  -180,  -202,  -215,  -228,
1158  -241,  -376,  -376,  -162,  -177,  -199,  -212,  -225,  -238,   -69,
1159  -376,  -376,  -376,  -376,  -359,  -358,  -314,  -315,  -321,  -320,
1160  -327,  -326,  -333,  -332,  -339,  -338,  -346,  -345,  -355,  -341,
1161  -376,  -349,  -356,  -352,  -351,  -306,  -376,  -158,  -376,  -173,
1162  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
1163  -376,  -376,  -376,  -195,  -376,  -208,  -376,  -221,  -376,  -234,
1164  -376,  -376,  -376,   -43,  -305,  -376,   -53,   -44,  -376,  -376,
1165   -31,   -72,  -310,   -70,   -36,   -37,  -372,   -38,   -39,  -360,
1166   -40,  -376,  -363,   -41,  -367,  -366,   -42,  -369,  -376,   -35,
1167  -376,  -376,  -376,  -376,  -376,  -309,  -160,  -175,  -159,  -376,
1168  -174,  -376,  -196,  -376,  -209,  -376,  -222,  -376,  -235,  -376,
1169  -197,  -210,  -223,  -236,  -376,  -292,  -376,   -49,  -376,   -67,
1170  -305,   -52,   -50,  -376,  -376,  -376,   -44,   -71,   -65,  -376,
1171  -370,  -376,   -66,  -161,  -176,  -198,  -211,  -224,  -237,  -376,
1172  -295,  -376,  -291,   -45,   -47,  -376,   -51,  -365,  -376,  -364,
1173  -361,  -362,  -368,  -371,   -73,  -294,  -376,  -293,   -46,  -376,
1174   -75,  -296,  -297,  -298,   -74,   -77,  -376,   -80,  -376,  -376,
1175  -376,  -376,  -376,   -78,  -376,   -48,   -76,  -299,  -300,  -301,
1176  -302,   -81,   -79 ]
1177
1178racc_goto_table = [
1179    96,   113,   165,    38,   162,    48,   118,   180,   276,    55,
1180   413,    48,   202,   120,   523,   104,    65,   273,   105,   126,
1181   116,    92,    77,   174,    66,   125,    68,    64,    96,    19,
1182   614,    98,     3,   115,    68,   108,   393,   531,    60,   623,
1183   626,   133,   179,   132,    32,   289,   618,   185,   175,    92,
1184   142,   623,   610,   123,   187,   278,    63,   275,   459,    82,
1185   199,   183,   208,   193,   197,   200,   196,   104,    78,   205,
1186   209,   484,   218,    76,   182,   222,    65,   224,   122,   226,
1187   227,   397,   229,   577,    66,   220,   221,   108,   223,    18,
1188   225,    10,     2,   228,   192,   137,    70,    53,    33,   204,
1189   207,   178,   181,   184,   186,   188,   191,   195,   198,   201,
1190   203,   211,   233,    48,   175,   234,   235,   236,   237,   189,
1191   206,   177,    27,    20,   167,   141,    13,     6,   217,   566,
1192   589,     5,   545,   254,   599,   579,   nil,   nil,   nil,   nil,
1193   320,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1194   nil,   262,   nil,   nil,   283,   nil,   nil,   260,   nil,   nil,
1195   nil,   nil,   nil,   nil,   nil,   255,   nil,   nil,   nil,   nil,
1196   nil,   nil,   nil,   nil,   nil,   nil,   388,   nil,   390,   nil,
1197   nil,   327,   nil,   nil,   nil,   258,   287,   331,   nil,   nil,
1198   336,   nil,   nil,   nil,   nil,   350,   334,   nil,   360,   339,
1199   368,   nil,   376,   nil,   nil,   nil,   nil,   nil,   nil,   391,
1200   257,   nil,   324,   355,   343,   332,   365,   nil,   373,   354,
1201   381,   382,   364,   386,   372,   nil,   380,   351,   384,   nil,
1202   361,   nil,   369,   nil,   377,   nil,   nil,   nil,   nil,   nil,
1203   340,   nil,   nil,   345,   nil,   nil,   nil,   353,   nil,   nil,
1204   363,   nil,   371,   590,   379,   nil,   521,   nil,   nil,   nil,
1205   412,   nil,   nil,   337,   nil,   nil,   342,   nil,   nil,   nil,
1206   nil,   nil,   352,   nil,   nil,   362,   nil,   370,   nil,   378,
1207   nil,   nil,   nil,   nil,   nil,   nil,   417,   nil,   nil,   nil,
1208   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1209   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1210   nil,   479,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1211   419,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1212   443,   nil,   451,   nil,   nil,   nil,   nil,   nil,   nil,   466,
1213   nil,   nil,   465,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1214   435,   nil,   nil,   nil,   nil,   nil,   nil,   488,   nil,   nil,
1215   nil,   491,   477,   nil,   nil,   nil,   nil,   475,   nil,   nil,
1216   nil,   nil,   469,   433,   nil,   nil,   nil,   nil,   nil,   nil,
1217   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   501,
1218   nil,   490,   nil,   499,   473,   493,   nil,   nil,   nil,   nil,
1219   nil,   522,   nil,   nil,   nil,   nil,   nil,   508,   nil,   510,
1220   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   471,   497,
1221   nil,   nil,   nil,   nil,   nil,   412,   nil,   506,   nil,   567,
1222   nil,   549,   nil,   287,   nil,   nil,   nil,   262,   nil,   520,
1223   nil,   nil,   495,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1224   504,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   559,
1225   nil,   nil,   nil,   557,   nil,   551,   nil,   nil,   nil,   nil,
1226   522,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1227   nil,   nil,   nil,   nil,   nil,   595,   nil,   nil,   nil,   555,
1228   568,   nil,    48,   nil,   nil,   570,   572,   nil,   355,   365,
1229   373,   381,   287,   412,   nil,   nil,   608,   nil,   520,   nil,
1230   nil,   nil,   553,   598,   600,   nil,   nil,   nil,   nil,   nil,
1231   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1232   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1233   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1234   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1235   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1236   632 ]
1237
1238racc_goto_check = [
1239    56,    81,    34,    15,    22,    23,    83,   104,    24,    15,
1240   115,    23,    78,    84,    26,    59,    72,    48,    62,    88,
1241    71,    55,   105,   109,    66,    87,    60,    69,    56,    14,
1242    53,    23,     1,    82,    60,    23,    51,    50,    58,    54,
1243    53,    60,    81,    69,    14,    39,    37,    83,    56,    55,
1244   105,    54,    36,    86,    84,    25,    68,    20,    52,    18,
1245    88,    71,    74,    75,    76,    77,    87,    59,    17,    79,
1246    62,    80,   109,    16,    82,   109,    72,   109,    85,   109,
1247   109,    48,   109,    26,    66,   110,   110,    23,   110,    13,
1248   110,    12,    11,   110,    86,    10,     9,     8,     7,    90,
1249    91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1250   101,    15,    56,    23,    56,    56,    56,    56,    56,    85,
1251   102,   103,     6,     5,   106,   108,     4,     3,   112,   113,
1252   114,     2,   116,    81,   127,   129,   nil,   nil,   nil,   nil,
1253   109,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1254   nil,    88,   nil,   nil,    81,   nil,   nil,    87,   nil,   nil,
1255   nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,   nil,   nil,
1256   nil,   nil,   nil,   nil,   nil,   nil,    78,   nil,    78,   nil,
1257   nil,    81,   nil,   nil,   nil,    86,    82,    83,   nil,   nil,
1258    83,   nil,   nil,   nil,   nil,    81,    84,   nil,    81,    84,
1259    81,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,    81,
1260    85,   nil,    82,    88,    87,    82,    88,   nil,    88,    87,
1261    88,    88,    87,    88,    87,   nil,    87,    82,    87,   nil,
1262    82,   nil,    82,   nil,    82,   nil,   nil,   nil,   nil,   nil,
1263    86,   nil,   nil,    86,   nil,   nil,   nil,    86,   nil,   nil,
1264    86,   nil,    86,   115,    86,   nil,    24,   nil,   nil,   nil,
1265    81,   nil,   nil,    85,   nil,   nil,    85,   nil,   nil,   nil,
1266   nil,   nil,    85,   nil,   nil,    85,   nil,    85,   nil,    85,
1267   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,
1268   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1269   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1270   nil,   104,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1271    82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1272    87,   nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,    81,
1273   nil,   nil,    83,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1274    86,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
1275   nil,    81,    88,   nil,   nil,   nil,   nil,    87,   nil,   nil,
1276   nil,   nil,    82,    85,   nil,   nil,   nil,   nil,   nil,   nil,
1277   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,
1278   nil,    82,   nil,    87,    86,    82,   nil,   nil,   nil,   nil,
1279   nil,    81,   nil,   nil,   nil,   nil,   nil,    87,   nil,    88,
1280   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    85,    86,
1281   nil,   nil,   nil,   nil,   nil,    81,   nil,    86,   nil,    22,
1282   nil,    81,   nil,    82,   nil,   nil,   nil,    88,   nil,    23,
1283   nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1284    85,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,
1285   nil,   nil,   nil,    87,   nil,    82,   nil,   nil,   nil,   nil,
1286    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1287   nil,   nil,   nil,   nil,   nil,    22,   nil,   nil,   nil,    86,
1288    15,   nil,    23,   nil,   nil,    23,    23,   nil,    88,    88,
1289    88,    88,    82,    81,   nil,   nil,    34,   nil,    23,   nil,
1290   nil,   nil,    85,    81,    81,   nil,   nil,   nil,   nil,   nil,
1291   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1292   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1293   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1294   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1295   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1296    56 ]
1297
1298racc_goto_pointer = [
1299   nil,    32,   131,   127,   120,   110,   102,    71,    64,    43,
1300    25,    92,    87,    78,    18,   -25,    19,    14,     5,   nil,
1301  -157,   nil,   -85,   -23,  -206,  -159,  -448,   nil,   nil,   nil,
1302   nil,   nil,   nil,   nil,   -89,   nil,  -552,  -564,   nil,  -170,
1303   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -197,   nil,
1304  -425,  -236,  -335,  -579,  -575,   -33,   -54,   nil,    -5,   -43,
1305   -26,   nil,   -40,   nil,   nil,   nil,   -24,   nil,     9,   -20,
1306   nil,   -42,   -32,   nil,   -46,   -40,   -39,   -38,   -91,   -34,
1307  -339,   -61,   -29,   -56,   -49,    16,    -9,   -37,   -43,   nil,
1308    -4,    -3,    -2,    -1,     0,     1,     2,     3,     4,     5,
1309     6,     7,    17,    18,   -96,   -32,    29,   nil,    46,   -79,
1310   -67,   nil,   -20,  -383,  -434,  -311,  -354,   nil,   nil,   nil,
1311   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -440,   nil,  -402 ]
1312
1313racc_goto_default = [
1314   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
1315   nil,   nil,   nil,   nil,   nil,   nil,   nil,   539,   nil,    85,
1316   nil,    89,   nil,   143,   nil,   nil,   nil,   524,   525,   527,
1317   528,   530,   533,   536,    93,   538,   nil,   nil,   514,   516,
1318   291,   294,   297,   301,   305,   308,   313,   318,   nil,   274,
1319   nil,   nil,   nil,   nil,   615,   616,   617,    50,    52,    37,
1320    39,    42,   nil,   107,    44,    45,    46,    47,   nil,   nil,
1321    61,   nil,    41,    43,   106,   nil,   nil,   nil,   nil,   nil,
1322   130,    72,    74,   nil,   nil,   292,   295,   299,   302,   127,
1323   312,   317,   282,   nil,   nil,   nil,   nil,   nil,   nil,   304,
1324   307,   311,   316,   280,   285,   nil,    80,    83,    86,    88,
1325    90,    94,    99,   nil,   nil,   nil,   414,   290,   293,   296,
1326   300,   303,   306,   310,   315,   279,   529,   532,   535,   nil ]
1327
1328racc_reduce_table = [
1329  0, 0, :racc_error,
1330  2, 96, :_reduce_1,
1331  1, 96, :_reduce_none,
1332  8, 97, :_reduce_3,
1333  2, 98, :_reduce_4,
1334  2, 98, :_reduce_5,
1335  1, 106, :_reduce_6,
1336  2, 106, :_reduce_7,
1337  3, 107, :_reduce_8,
1338  1, 108, :_reduce_9,
1339  3, 108, :_reduce_10,
1340  3, 109, :_reduce_11,
1341  1, 109, :_reduce_12,
1342  0, 99, :_reduce_none,
1343  2, 99, :_reduce_14,
1344  2, 99, :_reduce_none,
1345  2, 100, :_reduce_16,
1346  2, 100, :_reduce_none,
1347  0, 101, :_reduce_18,
1348  2, 101, :_reduce_19,
1349  2, 101, :_reduce_none,
1350  0, 102, :_reduce_none,
1351  2, 102, :_reduce_22,
1352  2, 102, :_reduce_none,
1353  2, 103, :_reduce_24,
1354  2, 103, :_reduce_none,
1355  1, 111, :_reduce_26,
1356  1, 111, :_reduce_27,
1357  5, 112, :_reduce_28,
1358  5, 112, :_reduce_29,
1359  2, 114, :_reduce_30,
1360  1, 116, :_reduce_31,
1361  2, 116, :_reduce_32,
1362  1, 115, :_reduce_none,
1363  1, 115, :_reduce_34,
1364  1, 121, :_reduce_35,
1365  1, 121, :_reduce_36,
1366  1, 121, :_reduce_37,
1367  1, 121, :_reduce_38,
1368  1, 121, :_reduce_39,
1369  1, 121, :_reduce_40,
1370  1, 121, :_reduce_41,
1371  1, 121, :_reduce_42,
1372  1, 121, :_reduce_none,
1373  1, 121, :_reduce_none,
1374  3, 128, :_reduce_45,
1375  4, 122, :_reduce_46,
1376  3, 122, :_reduce_none,
1377  6, 123, :_reduce_48,
1378  2, 130, :_reduce_49,
1379  2, 133, :_reduce_50,
1380  3, 133, :_reduce_none,
1381  2, 133, :_reduce_none,
1382  1, 127, :_reduce_53,
1383  1, 134, :_reduce_54,
1384  1, 134, :_reduce_55,
1385  1, 134, :_reduce_56,
1386  1, 134, :_reduce_57,
1387  1, 134, :_reduce_58,
1388  1, 134, :_reduce_59,
1389  1, 134, :_reduce_60,
1390  1, 134, :_reduce_61,
1391  1, 119, :_reduce_none,
1392  1, 120, :_reduce_63,
1393  2, 120, :_reduce_64,
1394  5, 143, :_reduce_65,
1395  5, 143, :_reduce_66,
1396  5, 143, :_reduce_67,
1397  2, 144, :_reduce_68,
1398  3, 144, :_reduce_69,
1399  1, 145, :_reduce_70,
1400  2, 145, :_reduce_71,
1401  1, 145, :_reduce_72,
1402  0, 131, :_reduce_none,
1403  2, 131, :_reduce_74,
1404  0, 132, :_reduce_none,
1405  2, 132, :_reduce_76,
1406  1, 148, :_reduce_none,
1407  2, 148, :_reduce_none,
1408  3, 149, :_reduce_none,
1409  1, 149, :_reduce_none,
1410  3, 149, :_reduce_none,
1411  0, 104, :_reduce_none,
1412  2, 104, :_reduce_none,
1413  2, 104, :_reduce_none,
1414  2, 105, :_reduce_85,
1415  2, 105, :_reduce_none,
1416  1, 110, :_reduce_none,
1417  1, 152, :_reduce_none,
1418  1, 152, :_reduce_none,
1419  1, 153, :_reduce_90,
1420  2, 153, :_reduce_91,
1421  3, 153, :_reduce_92,
1422  3, 155, :_reduce_93,
1423  1, 156, :_reduce_94,
1424  2, 156, :_reduce_none,
1425  1, 157, :_reduce_96,
1426  1, 157, :_reduce_97,
1427  1, 154, :_reduce_98,
1428  1, 154, :_reduce_99,
1429  1, 160, :_reduce_100,
1430  2, 160, :_reduce_101,
1431  3, 161, :_reduce_102,
1432  1, 162, :_reduce_103,
1433  1, 163, :_reduce_104,
1434  2, 163, :_reduce_105,
1435  3, 164, :_reduce_106,
1436  3, 165, :_reduce_107,
1437  1, 159, :_reduce_108,
1438  2, 159, :_reduce_109,
1439  2, 167, :_reduce_110,
1440  3, 167, :_reduce_111,
1441  1, 168, :_reduce_none,
1442  1, 158, :_reduce_113,
1443  2, 158, :_reduce_114,
1444  3, 169, :_reduce_115,
1445  1, 170, :_reduce_116,
1446  1, 170, :_reduce_117,
1447  1, 170, :_reduce_118,
1448  1, 170, :_reduce_119,
1449  1, 170, :_reduce_120,
1450  1, 166, :_reduce_121,
1451  1, 166, :_reduce_122,
1452  1, 166, :_reduce_123,
1453  1, 166, :_reduce_124,
1454  1, 166, :_reduce_125,
1455  1, 166, :_reduce_126,
1456  1, 166, :_reduce_127,
1457  1, 166, :_reduce_128,
1458  1, 166, :_reduce_129,
1459  1, 166, :_reduce_130,
1460  1, 171, :_reduce_none,
1461  1, 171, :_reduce_none,
1462  1, 171, :_reduce_none,
1463  1, 171, :_reduce_none,
1464  1, 171, :_reduce_none,
1465  1, 171, :_reduce_none,
1466  1, 171, :_reduce_none,
1467  1, 171, :_reduce_none,
1468  1, 171, :_reduce_none,
1469  1, 172, :_reduce_none,
1470  1, 172, :_reduce_none,
1471  1, 172, :_reduce_none,
1472  1, 172, :_reduce_none,
1473  1, 172, :_reduce_none,
1474  1, 172, :_reduce_none,
1475  1, 118, :_reduce_146,
1476  1, 118, :_reduce_147,
1477  1, 175, :_reduce_148,
1478  3, 185, :_reduce_none,
1479  3, 185, :_reduce_none,
1480  3, 185, :_reduce_none,
1481  1, 176, :_reduce_152,
1482  2, 176, :_reduce_153,
1483  2, 176, :_reduce_154,
1484  3, 186, :_reduce_none,
1485  3, 186, :_reduce_none,
1486  3, 186, :_reduce_none,
1487  5, 194, :_reduce_none,
1488  6, 194, :_reduce_none,
1489  6, 194, :_reduce_none,
1490  7, 194, :_reduce_none,
1491  4, 194, :_reduce_none,
1492  4, 194, :_reduce_none,
1493  4, 194, :_reduce_none,
1494  4, 194, :_reduce_none,
1495  3, 194, :_reduce_none,
1496  1, 177, :_reduce_167,
1497  2, 177, :_reduce_168,
1498  2, 177, :_reduce_169,
1499  3, 187, :_reduce_none,
1500  3, 187, :_reduce_none,
1501  3, 187, :_reduce_none,
1502  5, 195, :_reduce_none,
1503  6, 195, :_reduce_none,
1504  6, 195, :_reduce_none,
1505  7, 195, :_reduce_none,
1506  4, 195, :_reduce_none,
1507  4, 195, :_reduce_none,
1508  4, 195, :_reduce_none,
1509  4, 195, :_reduce_none,
1510  3, 195, :_reduce_none,
1511  1, 178, :_reduce_182,
1512  1, 178, :_reduce_183,
1513  3, 188, :_reduce_none,
1514  3, 188, :_reduce_none,
1515  3, 188, :_reduce_none,
1516  1, 179, :_reduce_none,
1517  3, 189, :_reduce_none,
1518  3, 189, :_reduce_none,
1519  3, 189, :_reduce_none,
1520  1, 180, :_reduce_none,
1521  3, 190, :_reduce_none,
1522  3, 190, :_reduce_none,
1523  3, 190, :_reduce_none,
1524  5, 196, :_reduce_none,
1525  6, 196, :_reduce_none,
1526  6, 196, :_reduce_none,
1527  7, 196, :_reduce_none,
1528  4, 196, :_reduce_none,
1529  4, 196, :_reduce_none,
1530  4, 196, :_reduce_none,
1531  4, 196, :_reduce_none,
1532  3, 196, :_reduce_none,
1533  1, 181, :_reduce_none,
1534  3, 191, :_reduce_none,
1535  3, 191, :_reduce_none,
1536  3, 191, :_reduce_none,
1537  5, 197, :_reduce_none,
1538  6, 197, :_reduce_none,
1539  6, 197, :_reduce_none,
1540  7, 197, :_reduce_none,
1541  4, 197, :_reduce_none,
1542  4, 197, :_reduce_none,
1543  4, 197, :_reduce_none,
1544  4, 197, :_reduce_none,
1545  3, 197, :_reduce_none,
1546  1, 182, :_reduce_none,
1547  3, 192, :_reduce_none,
1548  3, 192, :_reduce_none,
1549  3, 192, :_reduce_none,
1550  5, 198, :_reduce_none,
1551  6, 198, :_reduce_none,
1552  6, 198, :_reduce_none,
1553  7, 198, :_reduce_none,
1554  4, 198, :_reduce_none,
1555  4, 198, :_reduce_none,
1556  4, 198, :_reduce_none,
1557  4, 198, :_reduce_none,
1558  3, 198, :_reduce_none,
1559  1, 183, :_reduce_230,
1560  3, 193, :_reduce_none,
1561  3, 193, :_reduce_none,
1562  3, 193, :_reduce_none,
1563  5, 199, :_reduce_none,
1564  6, 199, :_reduce_none,
1565  6, 199, :_reduce_none,
1566  7, 199, :_reduce_none,
1567  4, 199, :_reduce_none,
1568  4, 199, :_reduce_none,
1569  4, 199, :_reduce_none,
1570  4, 199, :_reduce_none,
1571  3, 199, :_reduce_none,
1572  1, 173, :_reduce_243,
1573  3, 174, :_reduce_none,
1574  3, 174, :_reduce_none,
1575  3, 174, :_reduce_none,
1576  1, 184, :_reduce_247,
1577  1, 113, :_reduce_none,
1578  2, 113, :_reduce_none,
1579  3, 200, :_reduce_none,
1580  1, 200, :_reduce_none,
1581  3, 200, :_reduce_none,
1582  1, 151, :_reduce_none,
1583  1, 151, :_reduce_none,
1584  2, 202, :_reduce_none,
1585  2, 202, :_reduce_none,
1586  5, 202, :_reduce_none,
1587  5, 202, :_reduce_none,
1588  2, 202, :_reduce_none,
1589  3, 202, :_reduce_none,
1590  3, 202, :_reduce_none,
1591  3, 202, :_reduce_none,
1592  3, 202, :_reduce_none,
1593  3, 202, :_reduce_none,
1594  3, 202, :_reduce_none,
1595  3, 202, :_reduce_none,
1596  3, 202, :_reduce_none,
1597  3, 202, :_reduce_none,
1598  3, 202, :_reduce_none,
1599  3, 201, :_reduce_none,
1600  1, 201, :_reduce_none,
1601  1, 201, :_reduce_none,
1602  1, 204, :_reduce_none,
1603  1, 204, :_reduce_none,
1604  3, 206, :_reduce_none,
1605  3, 206, :_reduce_none,
1606  3, 206, :_reduce_none,
1607  3, 206, :_reduce_none,
1608  3, 206, :_reduce_none,
1609  3, 205, :_reduce_none,
1610  1, 205, :_reduce_none,
1611  1, 205, :_reduce_none,
1612  1, 205, :_reduce_none,
1613  1, 129, :_reduce_none,
1614  2, 129, :_reduce_none,
1615  1, 203, :_reduce_none,
1616  3, 203, :_reduce_none,
1617  2, 207, :_reduce_288,
1618  1, 207, :_reduce_289,
1619  0, 146, :_reduce_290,
1620  5, 146, :_reduce_291,
1621  1, 208, :_reduce_292,
1622  3, 208, :_reduce_293,
1623  5, 147, :_reduce_294,
1624  1, 209, :_reduce_none,
1625  3, 209, :_reduce_none,
1626  3, 209, :_reduce_none,
1627  3, 209, :_reduce_none,
1628  5, 209, :_reduce_none,
1629  5, 209, :_reduce_none,
1630  5, 209, :_reduce_none,
1631  5, 209, :_reduce_none,
1632  1, 211, :_reduce_303,
1633  1, 211, :_reduce_304,
1634  0, 117, :_reduce_none,
1635  5, 117, :_reduce_306,
1636  2, 117, :_reduce_none,
1637  1, 210, :_reduce_none,
1638  3, 210, :_reduce_none,
1639  1, 212, :_reduce_none,
1640  1, 212, :_reduce_none,
1641  1, 212, :_reduce_none,
1642  1, 135, :_reduce_none,
1643  3, 135, :_reduce_none,
1644  3, 135, :_reduce_none,
1645  1, 213, :_reduce_none,
1646  1, 213, :_reduce_none,
1647  1, 213, :_reduce_none,
1648  1, 136, :_reduce_none,
1649  3, 136, :_reduce_none,
1650  3, 136, :_reduce_none,
1651  1, 214, :_reduce_none,
1652  1, 214, :_reduce_none,
1653  1, 214, :_reduce_none,
1654  1, 137, :_reduce_none,
1655  3, 137, :_reduce_none,
1656  3, 137, :_reduce_none,
1657  1, 215, :_reduce_none,
1658  1, 215, :_reduce_none,
1659  1, 215, :_reduce_none,
1660  1, 138, :_reduce_none,
1661  3, 138, :_reduce_none,
1662  3, 138, :_reduce_none,
1663  1, 216, :_reduce_none,
1664  1, 216, :_reduce_none,
1665  1, 216, :_reduce_none,
1666  1, 139, :_reduce_none,
1667  3, 139, :_reduce_none,
1668  3, 139, :_reduce_none,
1669  1, 217, :_reduce_none,
1670  3, 217, :_reduce_none,
1671  1, 217, :_reduce_none,
1672  1, 217, :_reduce_none,
1673  1, 140, :_reduce_none,
1674  3, 140, :_reduce_none,
1675  3, 140, :_reduce_none,
1676  1, 219, :_reduce_none,
1677  1, 219, :_reduce_none,
1678  3, 219, :_reduce_none,
1679  1, 141, :_reduce_none,
1680  3, 141, :_reduce_none,
1681  3, 141, :_reduce_none,
1682  1, 220, :_reduce_353,
1683  1, 220, :_reduce_354,
1684  3, 220, :_reduce_355,
1685  3, 220, :_reduce_356,
1686  1, 142, :_reduce_357,
1687  3, 142, :_reduce_358,
1688  3, 142, :_reduce_359,
1689  1, 126, :_reduce_none,
1690  3, 126, :_reduce_none,
1691  3, 126, :_reduce_none,
1692  1, 221, :_reduce_none,
1693  3, 221, :_reduce_none,
1694  3, 222, :_reduce_365,
1695  1, 125, :_reduce_366,
1696  1, 125, :_reduce_367,
1697  3, 223, :_reduce_368,
1698  0, 224, :_reduce_none,
1699  1, 224, :_reduce_none,
1700  2, 224, :_reduce_none,
1701  1, 124, :_reduce_372,
1702  1, 150, :_reduce_373,
1703  1, 150, :_reduce_374,
1704  1, 218, :_reduce_375 ]
1705
1706racc_reduce_n = 376
1707
1708racc_shift_n = 633
1709
1710racc_token_table = {
1711  false => 0,
1712  :error => 1,
1713  :UMINUS => 2,
1714  :UPLUS => 3,
1715  "*" => 4,
1716  "/" => 5,
1717  "+" => 6,
1718  "-" => 7,
1719  :SYM_EQ => 8,
1720  :SYM_NE => 9,
1721  :SYM_LT => 10,
1722  :SYM_START_DBLOCK => 11,
1723  :SYM_START_CBLOCK => 12,
1724  :SYM_GT => 13,
1725  :SYM_END_CBLOCK => 14,
1726  :SYM_END_DBLOCK => 15,
1727  :SYM_LE => 16,
1728  :SYM_GE => 17,
1729  :EOF => 18,
1730  :V_ARCHETYPE_ID => 19,
1731  :SYM_ARCHETYPE => 20,
1732  :Left_parenthesis_code => 21,
1733  :Right_parenthesis_code => 22,
1734  :Semicolon_code => 23,
1735  :SYM_ADL_VERSION => 24,
1736  :V_VERSION_STRING => 25,
1737  :SYM_IS_CONTROLLED => 26,
1738  :SYM_SPECIALIZE => 27,
1739  :SYM_CONCEPT => 28,
1740  :V_LOCAL_TERM_CODE_REF => 29,
1741  :SYM_LANGUAGE => 30,
1742  :SYM_DESCRIPTION => 31,
1743  :SYM_DEFINITION => 32,
1744  :c_complx_object_head => 33,
1745  :SYM_MATCHES => 34,
1746  :START_REGEXP_BLOCK => 35,
1747  :REGEXP_BODY => 36,
1748  :END_REGEXP_BLOCK => 37,
1749  :ERR_C_DOMAIN_TYPE => 38,
1750  :START_V_C_DOMAIN_TYPE_BLOCK => 39,
1751  :END_V_C_DOMAIN_TYPE_BLOCK => 40,
1752  :SYM_USE_NODE => 41,
1753  :SYM_ALLOW_ARCHETYPE => 42,
1754  :Star_code => 43,
1755  :V_ATTRIBUTE_IDENTIFIER => 44,
1756  :SYM_INCLUDE => 45,
1757  :SYM_EXCLUDE => 46,
1758  ":" => 47,
1759  :SYM_INVARIANT => 48,
1760  :V_ASSERTION_TEXT => 49,
1761  :SYM_ONTOLOGY => 50,
1762  :Left_bracket_code => 51,
1763  :Right_bracket_code => 52,
1764  :V_TYPE_IDENTIFIER => 53,
1765  :V_GENERIC_TYPE_IDENTIFIER => 54,
1766  :V_STRING => 55,
1767  :Comma_code => 56,
1768  :SYM_LIST_CONTINUE => 57,
1769  :V_INTEGER => 58,
1770  :Plus_code => 59,
1771  :Minus_code => 60,
1772  :SYM_INTERVAL_DELIM => 61,
1773  :SYM_ELLIPSIS => 62,
1774  :V_REAL => 63,
1775  :SYM_TRUE => 64,
1776  :SYM_FALSE => 65,
1777  :V_CHARACTER => 66,
1778  :V_ISO8601_EXTENDED_DATE => 67,
1779  :V_ISO8601_EXTENDED_TIME => 68,
1780  :V_ISO8601_EXTENDED_DATE_TIME => 69,
1781  :V_ISO8601_DURATION => 70,
1782  :V_QUALIFIED_TERM_CODE_REF => 71,
1783  :V_URI => 72,
1784  :SYM_EXISTS => 73,
1785  :SYM_NOT => 74,
1786  "=" => 75,
1787  :SYM_AND => 76,
1788  :SYM_OR => 77,
1789  :SYM_XOR => 78,
1790  :SYM_IMPLIES => 79,
1791  :Slash_code => 80,
1792  "^" => 81,
1793  :SYM_EXISTENCE => 82,
1794  :SYM_CARDINALITY => 83,
1795  :SYM_ORDERED => 84,
1796  :SYM_UNORDERED => 85,
1797  :SYM_UNIQUE => 86,
1798  :SYM_OCCURRENCES => 87,
1799  :V_ISO8601_DATE_CONSTRAINT_PATTERN => 88,
1800  :V_ISO8601_TIME_CONSTRAINT_PATTERN => 89,
1801  :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 90,
1802  :START_TERM_CODE_CONSTRAINT => 91,
1803  :END_TERM_CODE_CONSTRAINT => 92,
1804  :TERM_CODE => 93,
1805  :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 94 }
1806
1807racc_nt_base = 95
1808
1809racc_use_result_var = true
1810
1811Racc_arg = [
1812  racc_action_table,
1813  racc_action_check,
1814  racc_action_default,
1815  racc_action_pointer,
1816  racc_goto_table,
1817  racc_goto_check,
1818  racc_goto_default,
1819  racc_goto_pointer,
1820  racc_nt_base,
1821  racc_reduce_table,
1822  racc_token_table,
1823  racc_shift_n,
1824  racc_reduce_n,
1825  racc_use_result_var ]
1826
1827Racc_token_to_s_table = [
1828  "$end",
1829  "error",
1830  "UMINUS",
1831  "UPLUS",
1832  "\"*\"",
1833  "\"/\"",
1834  "\"+\"",
1835  "\"-\"",
1836  "SYM_EQ",
1837  "SYM_NE",
1838  "SYM_LT",
1839  "SYM_START_DBLOCK",
1840  "SYM_START_CBLOCK",
1841  "SYM_GT",
1842  "SYM_END_CBLOCK",
1843  "SYM_END_DBLOCK",
1844  "SYM_LE",
1845  "SYM_GE",
1846  "EOF",
1847  "V_ARCHETYPE_ID",
1848  "SYM_ARCHETYPE",
1849  "Left_parenthesis_code",
1850  "Right_parenthesis_code",
1851  "Semicolon_code",
1852  "SYM_ADL_VERSION",
1853  "V_VERSION_STRING",
1854  "SYM_IS_CONTROLLED",
1855  "SYM_SPECIALIZE",
1856  "SYM_CONCEPT",
1857  "V_LOCAL_TERM_CODE_REF",
1858  "SYM_LANGUAGE",
1859  "SYM_DESCRIPTION",
1860  "SYM_DEFINITION",
1861  "c_complx_object_head",
1862  "SYM_MATCHES",
1863  "START_REGEXP_BLOCK",
1864  "REGEXP_BODY",
1865  "END_REGEXP_BLOCK",
1866  "ERR_C_DOMAIN_TYPE",
1867  "START_V_C_DOMAIN_TYPE_BLOCK",
1868  "END_V_C_DOMAIN_TYPE_BLOCK",
1869  "SYM_USE_NODE",
1870  "SYM_ALLOW_ARCHETYPE",
1871  "Star_code",
1872  "V_ATTRIBUTE_IDENTIFIER",
1873  "SYM_INCLUDE",
1874  "SYM_EXCLUDE",
1875  "\":\"",
1876  "SYM_INVARIANT",
1877  "V_ASSERTION_TEXT",
1878  "SYM_ONTOLOGY",
1879  "Left_bracket_code",
1880  "Right_bracket_code",
1881  "V_TYPE_IDENTIFIER",
1882  "V_GENERIC_TYPE_IDENTIFIER",
1883  "V_STRING",
1884  "Comma_code",
1885  "SYM_LIST_CONTINUE",
1886  "V_INTEGER",
1887  "Plus_code",
1888  "Minus_code",
1889  "SYM_INTERVAL_DELIM",
1890  "SYM_ELLIPSIS",
1891  "V_REAL",
1892  "SYM_TRUE",
1893  "SYM_FALSE",
1894  "V_CHARACTER",
1895  "V_ISO8601_EXTENDED_DATE",
1896  "V_ISO8601_EXTENDED_TIME",
1897  "V_ISO8601_EXTENDED_DATE_TIME",
1898  "V_ISO8601_DURATION",
1899  "V_QUALIFIED_TERM_CODE_REF",
1900  "V_URI",
1901  "SYM_EXISTS",
1902  "SYM_NOT",
1903  "\"=\"",
1904  "SYM_AND",
1905  "SYM_OR",
1906  "SYM_XOR",
1907  "SYM_IMPLIES",
1908  "Slash_code",
1909  "\"^\"",
1910  "SYM_EXISTENCE",
1911  "SYM_CARDINALITY",
1912  "SYM_ORDERED",
1913  "SYM_UNORDERED",
1914  "SYM_UNIQUE",
1915  "SYM_OCCURRENCES",
1916  "V_ISO8601_DATE_CONSTRAINT_PATTERN",
1917  "V_ISO8601_TIME_CONSTRAINT_PATTERN",
1918  "V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN",
1919  "START_TERM_CODE_CONSTRAINT",
1920  "END_TERM_CODE_CONSTRAINT",
1921  "TERM_CODE",
1922  "V_ISO8601_DURATION_CONSTRAINT_PATTERN",
1923  "$start",
1924  "input",
1925  "archetype",
1926  "arch_identification",
1927  "arch_specialisation",
1928  "arch_concept",
1929  "arch_language",
1930  "arch_description",
1931  "arch_definition",
1932  "arch_invariant",
1933  "arch_ontology",
1934  "arch_head",
1935  "arch_meta_data",
1936  "arch_meta_data_items",
1937  "arch_meta_data_item",
1938  "dadl_section",
1939  "cadl_section",
1940  "c_complex_object",
1941  "assertions",
1942  "c_complex_object_head",
1943  "c_complex_object_body",
1944  "c_complex_object_id",
1945  "c_occurrences",
1946  "type_identifier",
1947  "c_any",
1948  "c_attributes",
1949  "c_object",
1950  "archetype_internal_ref",
1951  "archetype_slot",
1952  "constraint_ref",
1953  "c_code_phrase",
1954  "c_ordinal",
1955  "c_primitive_object",
1956  "v_c_domain_type",
1957  "absolute_path",
1958  "c_archetype_slot_head",
1959  "c_includes",
1960  "c_excludes",
1961  "c_archetype_slot_id",
1962  "c_primitive",
1963  "c_integer",
1964  "c_real",
1965  "c_date",
1966  "c_time",
1967  "c_date_time",
1968  "c_duration",
1969  "c_string",
1970  "c_boolean",
1971  "c_attribute",
1972  "c_attr_head",
1973  "c_attr_values",
1974  "c_existence",
1975  "c_cardinality",
1976  "invariants",
1977  "invariant",
1978  "any_identifier",
1979  "boolean_expression",
1980  "dadl_input",
1981  "attr_vals",
1982  "complex_object_block",
1983  "attr_val",
1984  "attr_id",
1985  "object_block",
1986  "primitive_object_block",
1987  "single_attr_object_block",
1988  "multiple_attr_object_block",
1989  "untyped_multiple_attr_object_block",
1990  "multiple_attr_object_block_head",
1991  "keyed_objects",
1992  "keyed_object",
1993  "object_key",
1994  "simple_value",
1995  "untyped_single_attr_object_block",
1996  "single_attr_object_complex_head",
1997  "untyped_primitive_object_block",
1998  "primitive_object_value",
1999  "simple_list_value",
2000  "simple_interval_value",
2001  "term_code",
2002  "term_code_list_value",
2003  "string_value",
2004  "integer_value",
2005  "real_value",
2006  "boolean_value",
2007  "character_value",
2008  "date_value",
2009  "time_value",
2010  "date_time_value",
2011  "duration_value",
2012  "uri_value",
2013  "string_list_value",
2014  "integer_list_value",
2015  "real_list_value",
2016  "boolean_list_value",
2017  "character_list_value",
2018  "date_list_value",
2019  "time_list_value",
2020  "date_time_list_value",
2021  "duration_list_value",
2022  "integer_interval_value",
2023  "real_interval_value",
2024  "date_interval_value",
2025  "time_interval_value",
2026  "date_time_interval_value",
2027  "duration_interval_value",
2028  "assertion",
2029  "boolean_leaf",
2030  "boolean_node",
2031  "relative_path",
2032  "arithmetic_expression",
2033  "arithmetic_leaf",
2034  "arithmetic_node",
2035  "path_segment",
2036  "existence_spec",
2037  "cardinality_spec",
2038  "occurrence_spec",
2039  "cardinality_limit_value",
2040  "c_integer_spec",
2041  "c_real_spec",
2042  "c_date_constraint",
2043  "c_time_constraint",
2044  "c_date_time_constraint",
2045  "c_duration_constraint",
2046  "duration_pattern",
2047  "c_string_spec",
2048  "c_boolean_spec",
2049  "c_ordinal_spec",
2050  "ordinal",
2051  "term_code_constraint_section",
2052  "term_code_body" ]
2053
2054Racc_debug_parser = false
2055
2056##### State transition tables end #####
2057
2058# reduce 0 omitted
2059
2060module_eval(<<'.,.,', 'parser.y', 30)
2061  def _reduce_1(val, _values, result)
2062        result = val[0]
2063 
2064    result
2065  end
2066.,.,
2067
2068# reduce 2 omitted
2069
2070module_eval(<<'.,.,', 'parser.y', 36)
2071  def _reduce_3(val, _values, result)
2072        assert_at(__FILE__,__LINE__) do
2073      val[4].instance_of?(OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY) 
2074    end
2075   
2076    archetype_id = val[0][:archetype_id]
2077    parent_archtype_id = val[1][:parent_archtype_id] if val[1]
2078    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
2079    concept = val[2]
2080    language = val[3][:arch_language]
2081    archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
2082                                                         :archetype_id => archetype_id,
2083                                                         :parent_archtype_id => parent_archtype_id,
2084                                                         :adl_version => adl_version,
2085                                                         :concept => concept,
2086                                                         :description => val[4],
2087                                                         :definition => val[5],
2088                                                         :ontology => val[7]
2089                                                         ) do |archetype|
2090      archetype.original_language = language
2091    end
2092    @@logger.debug("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}")
2093    result = archetype
2094 
2095    result
2096  end
2097.,.,
2098
2099module_eval(<<'.,.,', 'parser.y', 63)
2100  def _reduce_4(val, _values, result)
2101        result = {:arch_head => val[0], :archetype_id => val[1] }
2102 
2103    result
2104  end
2105.,.,
2106
2107module_eval(<<'.,.,', 'parser.y', 67)
2108  def _reduce_5(val, _values, result)
2109        raise
2110 
2111    result
2112  end
2113.,.,
2114
2115module_eval(<<'.,.,', 'parser.y', 72)
2116  def _reduce_6(val, _values, result)
2117        result = {:arch_meta_data => nil }
2118 
2119    result
2120  end
2121.,.,
2122
2123module_eval(<<'.,.,', 'parser.y', 76)
2124  def _reduce_7(val, _values, result)
2125        result = val[1]
2126 
2127    result
2128  end
2129.,.,
2130
2131module_eval(<<'.,.,', 'parser.y', 81)
2132  def _reduce_8(val, _values, result)
2133        result = {:arch_meta_data => val[1] }
2134 
2135    result
2136  end
2137.,.,
2138
2139module_eval(<<'.,.,', 'parser.y', 86)
2140  def _reduce_9(val, _values, result)
2141        result = val[0]
2142 
2143    result
2144  end
2145.,.,
2146
2147module_eval(<<'.,.,', 'parser.y', 90)
2148  def _reduce_10(val, _values, result)
2149        result = val[0].merge(val[2])
2150 
2151    result
2152  end
2153.,.,
2154
2155module_eval(<<'.,.,', 'parser.y', 96)
2156  def _reduce_11(val, _values, result)
2157        result = {:adl_version => val[2], :is_controlled => false }
2158 
2159    result
2160  end
2161.,.,
2162
2163module_eval(<<'.,.,', 'parser.y', 100)
2164  def _reduce_12(val, _values, result)
2165        result = {:is_controlled => true }
2166 
2167    result
2168  end
2169.,.,
2170
2171# reduce 13 omitted
2172
2173module_eval(<<'.,.,', 'parser.y', 108)
2174  def _reduce_14(val, _values, result)
2175        result = {:parent_archtype_id => val[1]}
2176 
2177    result
2178  end
2179.,.,
2180
2181# reduce 15 omitted
2182
2183module_eval(<<'.,.,', 'parser.y', 114)
2184  def _reduce_16(val, _values, result)
2185        result = {:arch_concept => val[1] }
2186 
2187    result
2188  end
2189.,.,
2190
2191# reduce 17 omitted
2192
2193module_eval(<<'.,.,', 'parser.y', 124)
2194  def _reduce_18(val, _values, result)
2195        result = {:arch_language => nil}
2196 
2197    result
2198  end
2199.,.,
2200
2201module_eval(<<'.,.,', 'parser.y', 128)
2202  def _reduce_19(val, _values, result)
2203        result = {:arch_language => val[1]}
2204 
2205    result
2206  end
2207.,.,
2208
2209# reduce 20 omitted
2210
2211# reduce 21 omitted
2212
2213module_eval(<<'.,.,', 'parser.y', 139)
2214  def _reduce_22(val, _values, result)
2215        result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
2216 
2217    result
2218  end
2219.,.,
2220
2221# reduce 23 omitted
2222
2223module_eval(<<'.,.,', 'parser.y', 147)
2224  def _reduce_24(val, _values, result)
2225        result = val[1]
2226 
2227    result
2228  end
2229.,.,
2230
2231# reduce 25 omitted
2232
2233module_eval(<<'.,.,', 'parser.y', 155)
2234  def _reduce_26(val, _values, result)
2235        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
2236    @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
2237    result = val[0]
2238 
2239    result
2240  end
2241.,.,
2242
2243module_eval(<<'.,.,', 'parser.y', 161)
2244  def _reduce_27(val, _values, result)
2245        result = val[0]
2246 
2247    result
2248  end
2249.,.,
2250
2251module_eval(<<'.,.,', 'parser.y', 168)
2252  def _reduce_28(val, _values, result)
2253        result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
2254      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
2255      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
2256      c_complex_object.occurrences = val[0][:c_occurrences]
2257    end
2258 
2259    result
2260  end
2261.,.,
2262
2263module_eval(<<'.,.,', 'parser.y', 176)
2264  def _reduce_29(val, _values, result)
2265        result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
2266      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
2267      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
2268      c_complex_object.occurrences = val[0][:c_occurrences]
2269    end
2270 
2271    result
2272  end
2273.,.,
2274
2275module_eval(<<'.,.,', 'parser.y', 187)
2276  def _reduce_30(val, _values, result)
2277        result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
2278 
2279    result
2280  end
2281.,.,
2282
2283module_eval(<<'.,.,', 'parser.y', 192)
2284  def _reduce_31(val, _values, result)
2285        result = {:type_identifier => val[0]}
2286 
2287    result
2288  end
2289.,.,
2290
2291module_eval(<<'.,.,', 'parser.y', 196)
2292  def _reduce_32(val, _values, result)
2293        result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
2294 
2295    result
2296  end
2297.,.,
2298
2299# reduce 33 omitted
2300
2301module_eval(<<'.,.,', 'parser.y', 202)
2302  def _reduce_34(val, _values, result)
2303        result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
2304 
2305    result
2306  end
2307.,.,
2308
2309module_eval(<<'.,.,', 'parser.y', 220)
2310  def _reduce_35(val, _values, result)
2311        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}")
2312    result = val[0]
2313 
2314    result
2315  end
2316.,.,
2317
2318module_eval(<<'.,.,', 'parser.y', 225)
2319  def _reduce_36(val, _values, result)
2320        result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
2321      archetype_internal_ref.target_path = val[0][:absolute_path]
2322      archetype_internal_ref.rm_type_name = val[0][:type_identifier]
2323      archetype_internal_ref.occurrences = val[0][:c_occurrences]
2324    end
2325 
2326    result
2327  end
2328.,.,
2329
2330module_eval(<<'.,.,', 'parser.y', 233)
2331  def _reduce_37(val, _values, result)
2332        result = val[0]
2333 
2334    result
2335  end
2336.,.,
2337
2338module_eval(<<'.,.,', 'parser.y', 237)
2339  def _reduce_38(val, _values, result)
2340        result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref|
2341      constraint_ref.reference = val[0]
2342    end
2343 
2344    result
2345  end
2346.,.,
2347
2348module_eval(<<'.,.,', 'parser.y', 243)
2349  def _reduce_39(val, _values, result)
2350        result = val[0]
2351 
2352    result
2353  end
2354.,.,
2355
2356module_eval(<<'.,.,', 'parser.y', 247)
2357  def _reduce_40(val, _values, result)
2358        result = val[0]
2359 
2360    result
2361  end
2362.,.,
2363
2364module_eval(<<'.,.,', 'parser.y', 251)
2365  def _reduce_41(val, _values, result)
2366        result = val[0]
2367 
2368    result
2369  end
2370.,.,
2371
2372module_eval(<<'.,.,', 'parser.y', 255)
2373  def _reduce_42(val, _values, result)
2374        result = val[0]
2375 
2376    result
2377  end
2378.,.,
2379
2380# reduce 43 omitted
2381
2382# reduce 44 omitted
2383
2384module_eval(<<'.,.,', 'parser.y', 271)
2385  def _reduce_45(val, _values, result)
2386        result = val[1]
2387 
2388    result
2389  end
2390.,.,
2391
2392module_eval(<<'.,.,', 'parser.y', 277)
2393  def _reduce_46(val, _values, result)
2394        result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
2395 
2396    result
2397  end
2398.,.,
2399
2400# reduce 47 omitted
2401
2402module_eval(<<'.,.,', 'parser.y', 284)
2403  def _reduce_48(val, _values, result)
2404        result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot|
2405      archetype_slot.includes = val[3]
2406      archetype_slot.excludes = val[4]
2407      archetype_slot.rm_type_name = val[0][:c_archetype_slot_id]
2408      archetype_slot.occurrences = val[0][:c_occurrences]
2409    end
2410 
2411    result
2412  end
2413.,.,
2414
2415module_eval(<<'.,.,', 'parser.y', 293)
2416  def _reduce_49(val, _values, result)
2417        result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
2418 
2419    result
2420  end
2421.,.,
2422
2423module_eval(<<'.,.,', 'parser.y', 298)
2424  def _reduce_50(val, _values, result)
2425        result = val[1]
2426 
2427    result
2428  end
2429.,.,
2430
2431# reduce 51 omitted
2432
2433# reduce 52 omitted
2434
2435module_eval(<<'.,.,', 'parser.y', 306)
2436  def _reduce_53(val, _values, result)
2437        assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
2438    result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object|
2439      c_primitive_object.item = val[0]
2440    end
2441 
2442    result
2443  end
2444.,.,
2445
2446module_eval(<<'.,.,', 'parser.y', 314)
2447  def _reduce_54(val, _values, result)
2448        @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
2449    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer|
2450      c_integer.list
2451      c_integer.range
2452      c_integer.assumed_value
2453    end
2454 
2455    result
2456  end
2457.,.,
2458
2459module_eval(<<'.,.,', 'parser.y', 323)
2460  def _reduce_55(val, _values, result)
2461        @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
2462    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
2463 
2464    result
2465  end
2466.,.,
2467
2468module_eval(<<'.,.,', 'parser.y', 328)
2469  def _reduce_56(val, _values, result)
2470        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
2471    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
2472 
2473    result
2474  end
2475.,.,
2476
2477module_eval(<<'.,.,', 'parser.y', 333)
2478  def _reduce_57(val, _values, result)
2479        @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
2480    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
2481 
2482    result
2483  end
2484.,.,
2485
2486module_eval(<<'.,.,', 'parser.y', 338)
2487  def _reduce_58(val, _values, result)
2488        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
2489    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
2490 
2491    result
2492  end
2493.,.,
2494
2495module_eval(<<'.,.,', 'parser.y', 343)
2496  def _reduce_59(val, _values, result)
2497        @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
2498    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
2499 
2500    result
2501  end
2502.,.,
2503
2504module_eval(<<'.,.,', 'parser.y', 348)
2505  def _reduce_60(val, _values, result)
2506        @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
2507    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
2508 
2509    result
2510  end
2511.,.,
2512
2513module_eval(<<'.,.,', 'parser.y', 353)
2514  def _reduce_61(val, _values, result)
2515        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
2516    @@logger.debug("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
2517    result = val[0]
2518 
2519    result
2520  end
2521.,.,
2522
2523# reduce 62 omitted
2524
2525module_eval(<<'.,.,', 'parser.y', 365)
2526  def _reduce_63(val, _values, result)
2527        result = [val[0]]
2528 
2529    result
2530  end
2531.,.,
2532
2533module_eval(<<'.,.,', 'parser.y', 369)
2534  def _reduce_64(val, _values, result)
2535        result = (val[0] << val[1])
2536 
2537    result
2538  end
2539.,.,
2540
2541module_eval(<<'.,.,', 'parser.y', 375)
2542  def _reduce_65(val, _values, result)
2543        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
2544    c_attribute = val[0]
2545    c_attribute.children = val[3]
2546    result = c_attribute
2547 
2548    result
2549  end
2550.,.,
2551
2552module_eval(<<'.,.,', 'parser.y', 382)
2553  def _reduce_66(val, _values, result)
2554        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
2555    result = val[0]
2556 
2557    result
2558  end
2559.,.,
2560
2561module_eval(<<'.,.,', 'parser.y', 387)
2562  def _reduce_67(val, _values, result)
2563        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
2564    result = val[0]
2565 
2566    result
2567  end
2568.,.,
2569
2570module_eval(<<'.,.,', 'parser.y', 394)
2571  def _reduce_68(val, _values, result)
2572        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
2573    result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
2574                                                                              :rm_attribute_name => val[0],
2575                                                                              :existence => val[1]
2576                                                                              )
2577
2578 
2579    result
2580  end
2581.,.,
2582
2583module_eval(<<'.,.,', 'parser.y', 403)
2584  def _reduce_69(val, _values, result)
2585        assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
2586    @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 
2587    result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
2588                                                                                :rm_attribute_name => val[0],
2589                                                                                :existence => val[1],
2590                                                                                :cardinality => val[2]
2591                                                                                )
2592 
2593    result
2594  end
2595.,.,
2596
2597module_eval(<<'.,.,', 'parser.y', 414)
2598  def _reduce_70(val, _values, result)
2599        result = Array[val[0]]
2600 
2601    result
2602  end
2603.,.,
2604
2605module_eval(<<'.,.,', 'parser.y', 418)
2606  def _reduce_71(val, _values, result)
2607        result = (val[0] << val[1])
2608 
2609    result
2610  end
2611.,.,
2612
2613module_eval(<<'.,.,', 'parser.y', 422)
2614  def _reduce_72(val, _values, result)
2615        result = Array[val[0]]
2616 
2617    result
2618  end
2619.,.,
2620
2621# reduce 73 omitted
2622
2623module_eval(<<'.,.,', 'parser.y', 430)
2624  def _reduce_74(val, _values, result)
2625        result = val[1]
2626
2627    result
2628  end
2629.,.,
2630
2631# reduce 75 omitted
2632
2633module_eval(<<'.,.,', 'parser.y', 438)
2634  def _reduce_76(val, _values, result)
2635        result = val[1]
2636
2637    result
2638  end
2639.,.,
2640
2641# reduce 77 omitted
2642
2643# reduce 78 omitted
2644
2645# reduce 79 omitted
2646
2647# reduce 80 omitted
2648
2649# reduce 81 omitted
2650
2651# reduce 82 omitted
2652
2653# reduce 83 omitted
2654
2655# reduce 84 omitted
2656
2657module_eval(<<'.,.,', 'parser.y', 458)
2658  def _reduce_85(val, _values, result)
2659        dadl_section = val[1]
2660    result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
2661 
2662    result
2663  end
2664.,.,
2665
2666# reduce 86 omitted
2667
2668# reduce 87 omitted
2669
2670# reduce 88 omitted
2671
2672# reduce 89 omitted
2673
2674module_eval(<<'.,.,', 'parser.y', 473)
2675  def _reduce_90(val, _values, result)
2676        result = Array[val[0]]
2677 
2678    result
2679  end
2680.,.,
2681
2682module_eval(<<'.,.,', 'parser.y', 477)
2683  def _reduce_91(val, _values, result)
2684        result = (val[0] << val[1])
2685 
2686    result
2687  end
2688.,.,
2689
2690module_eval(<<'.,.,', 'parser.y', 481)
2691  def _reduce_92(val, _values, result)
2692        result = (val[0] << val[2])
2693 
2694    result
2695  end
2696.,.,
2697
2698module_eval(<<'.,.,', 'parser.y', 486)
2699  def _reduce_93(val, _values, result)
2700        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]} at #{@filename}:#{@lineno}")
2701    result = {:attr_id => val[0], :object_block => val[2]}
2702 
2703    result
2704  end
2705.,.,
2706
2707module_eval(<<'.,.,', 'parser.y', 492)
2708  def _reduce_94(val, _values, result)
2709        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
2710    result = val[0]
2711 
2712    result
2713  end
2714.,.,
2715
2716# reduce 95 omitted
2717
2718module_eval(<<'.,.,', 'parser.y', 499)
2719  def _reduce_96(val, _values, result)
2720        result = val[0]
2721 
2722    result
2723  end
2724.,.,
2725
2726module_eval(<<'.,.,', 'parser.y', 503)
2727  def _reduce_97(val, _values, result)
2728        result = val[0]
2729 
2730    result
2731  end
2732.,.,
2733
2734module_eval(<<'.,.,', 'parser.y', 508)
2735  def _reduce_98(val, _values, result)
2736        result = val[0]
2737 
2738    result
2739  end
2740.,.,
2741
2742module_eval(<<'.,.,', 'parser.y', 512)
2743  def _reduce_99(val, _values, result)
2744        result = val[0]
2745 
2746    result
2747  end
2748.,.,
2749
2750module_eval(<<'.,.,', 'parser.y', 517)
2751  def _reduce_100(val, _values, result)
2752        result = {:untyped_multiple_attr_object_block => val[0]}
2753 
2754    result
2755  end
2756.,.,
2757
2758module_eval(<<'.,.,', 'parser.y', 521)
2759  def _reduce_101(val, _values, result)
2760        result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
2761 
2762    result
2763  end
2764.,.,
2765
2766module_eval(<<'.,.,', 'parser.y', 526)
2767  def _reduce_102(val, _values, result)
2768        result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
2769 
2770    result
2771  end
2772.,.,
2773
2774module_eval(<<'.,.,', 'parser.y', 531)
2775  def _reduce_103(val, _values, result)
2776        @@logger.debug("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
2777    result = val[0]
2778 
2779    result
2780  end
2781.,.,
2782
2783module_eval(<<'.,.,', 'parser.y', 537)
2784  def _reduce_104(val, _values, result)
2785        result = Array[val[0]]
2786 
2787    result
2788  end
2789.,.,
2790
2791module_eval(<<'.,.,', 'parser.y', 541)
2792  def _reduce_105(val, _values, result)
2793        result = (val[0] << val[1])
2794 
2795    result
2796  end
2797.,.,
2798
2799module_eval(<<'.,.,', 'parser.y', 546)
2800  def _reduce_106(val, _values, result)
2801        @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
2802    result = {:object_key => val[0], :object_block => val[1]}
2803 
2804    result
2805  end
2806.,.,
2807
2808module_eval(<<'.,.,', 'parser.y', 552)
2809  def _reduce_107(val, _values, result)
2810        @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
2811    result = val[1]
2812 
2813    result
2814  end
2815.,.,
2816
2817module_eval(<<'.,.,', 'parser.y', 558)
2818  def _reduce_108(val, _values, result)
2819        result = {:untyped_single_attr_object_block => val[0]}
2820 
2821    result
2822  end
2823.,.,
2824
2825module_eval(<<'.,.,', 'parser.y', 562)
2826  def _reduce_109(val, _values, result)
2827        result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
2828 
2829    result
2830  end
2831.,.,
2832
2833module_eval(<<'.,.,', 'parser.y', 567)
2834  def _reduce_110(val, _values, result)
2835        @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
2836    result = {:single_attr_object_complex_head => val[0]}
2837 
2838    result
2839  end
2840.,.,
2841
2842module_eval(<<'.,.,', 'parser.y', 572)
2843  def _reduce_111(val, _values, result)
2844        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
2845    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
2846 
2847    result
2848  end
2849.,.,
2850
2851# reduce 112 omitted
2852
2853module_eval(<<'.,.,', 'parser.y', 578)
2854  def _reduce_113(val, _values, result)
2855        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
2856    result = {:untyped_primitive_object_block => val[0]}
2857 
2858    result
2859  end
2860.,.,
2861
2862module_eval(<<'.,.,', 'parser.y', 583)
2863  def _reduce_114(val, _values, result)
2864        @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
2865    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
2866 
2867    result
2868  end
2869.,.,
2870
2871module_eval(<<'.,.,', 'parser.y', 588)
2872  def _reduce_115(val, _values, result)
2873        @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
2874    result = val[1]
2875 
2876    result
2877  end
2878.,.,
2879
2880module_eval(<<'.,.,', 'parser.y', 593)
2881  def _reduce_116(val, _values, result)
2882        result = val[0]
2883 
2884    result
2885  end
2886.,.,
2887
2888module_eval(<<'.,.,', 'parser.y', 597)
2889  def _reduce_117(val, _values, result)
2890        result = val[0]
2891 
2892    result
2893  end
2894.,.,
2895
2896module_eval(<<'.,.,', 'parser.y', 601)
2897  def _reduce_118(val, _values, result)
2898        result = val[0]
2899 
2900    result
2901  end
2902.,.,
2903
2904module_eval(<<'.,.,', 'parser.y', 605)
2905  def _reduce_119(val, _values, result)
2906        result = val[0]
2907 
2908    result
2909  end
2910.,.,
2911
2912module_eval(<<'.,.,', 'parser.y', 609)
2913  def _reduce_120(val, _values, result)
2914        result = val[0]
2915 
2916    result
2917  end
2918.,.,
2919
2920module_eval(<<'.,.,', 'parser.y', 613)
2921  def _reduce_121(val, _values, result)
2922        @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
2923    result = val[0]
2924 
2925    result
2926  end
2927.,.,
2928
2929module_eval(<<'.,.,', 'parser.y', 618)
2930  def _reduce_122(val, _values, result)
2931        @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
2932    result = val[0]
2933 
2934    result
2935  end
2936.,.,
2937
2938module_eval(<<'.,.,', 'parser.y', 623)
2939  def _reduce_123(val, _values, result)
2940        @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
2941    result = val[0]
2942 
2943    result
2944  end
2945.,.,
2946
2947module_eval(<<'.,.,', 'parser.y', 628)
2948  def _reduce_124(val, _values, result)
2949        @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
2950    result = val[0]
2951 
2952    result
2953  end
2954.,.,
2955
2956module_eval(<<'.,.,', 'parser.y', 633)
2957  def _reduce_125(val, _values, result)
2958        @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
2959    result = val[0]
2960 
2961    result
2962  end
2963.,.,
2964
2965module_eval(<<'.,.,', 'parser.y', 638)
2966  def _reduce_126(val, _values, result)
2967        @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
2968    result = val[0]
2969 
2970    result
2971  end
2972.,.,
2973
2974module_eval(<<'.,.,', 'parser.y', 643)
2975  def _reduce_127(val, _values, result)
2976        @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
2977    result = val[0]
2978 
2979    result
2980  end
2981.,.,
2982
2983module_eval(<<'.,.,', 'parser.y', 648)
2984  def _reduce_128(val, _values, result)
2985        @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
2986    result = val[0]
2987 
2988    result
2989  end
2990.,.,
2991
2992module_eval(<<'.,.,', 'parser.y', 653)
2993  def _reduce_129(val, _values, result)
2994        @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
2995    result = val[0]
2996 
2997    result
2998  end
2999.,.,
3000
3001module_eval(<<'.,.,', 'parser.y', 658)
3002  def _reduce_130(val, _values, result)
3003        @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
3004    result = val[0]
3005 
3006    result
3007  end
3008.,.,
3009
3010# reduce 131 omitted
3011
3012# reduce 132 omitted
3013
3014# reduce 133 omitted
3015
3016# reduce 134 omitted
3017
3018# reduce 135 omitted
3019
3020# reduce 136 omitted
3021
3022# reduce 137 omitted
3023
3024# reduce 138 omitted
3025
3026# reduce 139 omitted
3027
3028# reduce 140 omitted
3029
3030# reduce 141 omitted
3031
3032# reduce 142 omitted
3033
3034# reduce 143 omitted
3035
3036# reduce 144 omitted
3037
3038# reduce 145 omitted
3039
3040module_eval(<<'.,.,', 'parser.y', 681)
3041  def _reduce_146(val, _values, result)
3042        @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
3043    result = val[0]
3044 
3045    result
3046  end
3047.,.,
3048
3049module_eval(<<'.,.,', 'parser.y', 686)
3050  def _reduce_147(val, _values, result)
3051        @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
3052    result = val[0]
3053 
3054    result
3055  end
3056.,.,
3057
3058module_eval(<<'.,.,', 'parser.y', 692)
3059  def _reduce_148(val, _values, result)
3060        @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
3061    result = val[0]
3062 
3063    result
3064  end
3065.,.,
3066
3067# reduce 149 omitted
3068
3069# reduce 150 omitted
3070
3071# reduce 151 omitted
3072
3073module_eval(<<'.,.,', 'parser.y', 702)
3074  def _reduce_152(val, _values, result)
3075        begin
3076      integer = Integer(val[0])
3077    rescue
3078      raise
3079    end
3080    result = integer
3081 
3082    result
3083  end
3084.,.,
3085
3086module_eval(<<'.,.,', 'parser.y', 711)
3087  def _reduce_153(val, _values, result)
3088        begin
3089      integer = Integer(val[0])
3090    rescue
3091      raise
3092    end
3093    result = integer
3094 
3095    result
3096  end
3097.,.,
3098
3099module_eval(<<'.,.,', 'parser.y', 720)
3100  def _reduce_154(val, _values, result)
3101        begin
3102      integer = Integer(val[0])
3103    rescue
3104      raise
3105    end
3106    result = - integer
3107 
3108    result
3109  end
3110.,.,
3111
3112# reduce 155 omitted
3113
3114# reduce 156 omitted
3115
3116# reduce 157 omitted
3117
3118# reduce 158 omitted
3119
3120# reduce 159 omitted
3121
3122# reduce 160 omitted
3123
3124# reduce 161 omitted
3125
3126# reduce 162 omitted
3127
3128# reduce 163 omitted
3129
3130# reduce 164 omitted
3131
3132# reduce 165 omitted
3133
3134# reduce 166 omitted
3135
3136module_eval(<<'.,.,', 'parser.y', 746)
3137  def _reduce_167(val, _values, result)
3138        begin
3139      real = Float(val[0])
3140    rescue
3141      raise
3142    end
3143    result = real
3144 
3145    result
3146  end
3147.,.,
3148
3149module_eval(<<'.,.,', 'parser.y', 755)
3150  def _reduce_168(val, _values, result)
3151        begin
3152      real = Float(val[1])
3153    rescue
3154      raise
3155    end
3156    result = real
3157 
3158    result
3159  end
3160.,.,
3161
3162module_eval(<<'.,.,', 'parser.y', 764)
3163  def _reduce_169(val, _values, result)
3164        begin
3165      real = Float(val[1])
3166    rescue
3167      raise
3168    end
3169    result = - real
3170 
3171    result
3172  end
3173.,.,
3174
3175# reduce 170 omitted
3176
3177# reduce 171 omitted
3178
3179# reduce 172 omitted
3180
3181# reduce 173 omitted
3182
3183# reduce 174 omitted
3184
3185# reduce 175 omitted
3186
3187# reduce 176 omitted
3188
3189# reduce 177 omitted
3190
3191# reduce 178 omitted
3192
3193# reduce 179 omitted
3194
3195# reduce 180 omitted
3196
3197# reduce 181 omitted
3198
3199module_eval(<<'.,.,', 'parser.y', 789)
3200  def _reduce_182(val, _values, result)
3201        result = true
3202 
3203    result
3204  end
3205.,.,
3206
3207module_eval(<<'.,.,', 'parser.y', 793)
3208  def _reduce_183(val, _values, result)
3209        result = false
3210 
3211    result
3212  end
3213.,.,
3214
3215# reduce 184 omitted
3216
3217# reduce 185 omitted
3218
3219# reduce 186 omitted
3220
3221# reduce 187 omitted
3222
3223# reduce 188 omitted
3224
3225# reduce 189 omitted
3226
3227# reduce 190 omitted
3228
3229# reduce 191 omitted
3230
3231# reduce 192 omitted
3232
3233# reduce 193 omitted
3234
3235# reduce 194 omitted
3236
3237# reduce 195 omitted
3238
3239# reduce 196 omitted
3240
3241# reduce 197 omitted
3242
3243# reduce 198 omitted
3244
3245# reduce 199 omitted
3246
3247# reduce 200 omitted
3248
3249# reduce 201 omitted
3250
3251# reduce 202 omitted
3252
3253# reduce 203 omitted
3254
3255# reduce 204 omitted
3256
3257# reduce 205 omitted
3258
3259# reduce 206 omitted
3260
3261# reduce 207 omitted
3262
3263# reduce 208 omitted
3264
3265# reduce 209 omitted
3266
3267# reduce 210 omitted
3268
3269# reduce 211 omitted
3270
3271# reduce 212 omitted
3272
3273# reduce 213 omitted
3274
3275# reduce 214 omitted
3276
3277# reduce 215 omitted
3278
3279# reduce 216 omitted
3280
3281# reduce 217 omitted
3282
3283# reduce 218 omitted
3284
3285# reduce 219 omitted
3286
3287# reduce 220 omitted
3288
3289# reduce 221 omitted
3290
3291# reduce 222 omitted
3292
3293# reduce 223 omitted
3294
3295# reduce 224 omitted
3296
3297# reduce 225 omitted
3298
3299# reduce 226 omitted
3300
3301# reduce 227 omitted
3302
3303# reduce 228 omitted
3304
3305# reduce 229 omitted
3306
3307module_eval(<<'.,.,', 'parser.y', 856)
3308  def _reduce_230(val, _values, result)
3309        @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
3310    result = val[0]
3311 
3312    result
3313  end
3314.,.,
3315
3316# reduce 231 omitted
3317
3318# reduce 232 omitted
3319
3320# reduce 233 omitted
3321
3322# reduce 234 omitted
3323
3324# reduce 235 omitted
3325
3326# reduce 236 omitted
3327
3328# reduce 237 omitted
3329
3330# reduce 238 omitted
3331
3332# reduce 239 omitted
3333
3334# reduce 240 omitted
3335
3336# reduce 241 omitted
3337
3338# reduce 242 omitted
3339
3340module_eval(<<'.,.,', 'parser.y', 876)
3341  def _reduce_243(val, _values, result)
3342        @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
3343    result = val[0]
3344 
3345    result
3346  end
3347.,.,
3348
3349# reduce 244 omitted
3350
3351# reduce 245 omitted
3352
3353# reduce 246 omitted
3354
3355module_eval(<<'.,.,', 'parser.y', 886)
3356  def _reduce_247(val, _values, result)
3357        @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
3358    result = val[0]
3359 
3360    result
3361  end
3362.,.,
3363
3364# reduce 248 omitted
3365
3366# reduce 249 omitted
3367
3368# reduce 250 omitted
3369
3370# reduce 251 omitted
3371
3372# reduce 252 omitted
3373
3374# reduce 253 omitted
3375
3376# reduce 254 omitted
3377
3378# reduce 255 omitted
3379
3380# reduce 256 omitted
3381
3382# reduce 257 omitted
3383
3384# reduce 258 omitted
3385
3386# reduce 259 omitted
3387
3388# reduce 260 omitted
3389
3390# reduce 261 omitted
3391
3392# reduce 262 omitted
3393
3394# reduce 263 omitted
3395
3396# reduce 264 omitted
3397
3398# reduce 265 omitted
3399
3400# reduce 266 omitted
3401
3402# reduce 267 omitted
3403
3404# reduce 268 omitted
3405
3406# reduce 269 omitted
3407
3408# reduce 270 omitted
3409
3410# reduce 271 omitted
3411
3412# reduce 272 omitted
3413
3414# reduce 273 omitted
3415
3416# reduce 274 omitted
3417
3418# reduce 275 omitted
3419
3420# reduce 276 omitted
3421
3422# reduce 277 omitted
3423
3424# reduce 278 omitted
3425
3426# reduce 279 omitted
3427
3428# reduce 280 omitted
3429
3430# reduce 281 omitted
3431
3432# reduce 282 omitted
3433
3434# reduce 283 omitted
3435
3436# reduce 284 omitted
3437
3438# reduce 285 omitted
3439
3440# reduce 286 omitted
3441
3442# reduce 287 omitted
3443
3444module_eval(<<'.,.,', 'parser.y', 956)
3445  def _reduce_288(val, _values, result)
3446        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
3447 
3448    result
3449  end
3450.,.,
3451
3452module_eval(<<'.,.,', 'parser.y', 960)
3453  def _reduce_289(val, _values, result)
3454        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
3455 
3456    result
3457  end
3458.,.,
3459
3460module_eval(<<'.,.,', 'parser.y', 971)
3461  def _reduce_290(val, _values, result)
3462        result = Range.new(1,1)
3463 
3464    result
3465  end
3466.,.,
3467
3468module_eval(<<'.,.,', 'parser.y', 975)
3469  def _reduce_291(val, _values, result)
3470        result = val[3]
3471 
3472    result
3473  end
3474.,.,
3475
3476module_eval(<<'.,.,', 'parser.y', 980)
3477  def _reduce_292(val, _values, result)
3478        begin
3479      integer = Integer(val[0])
3480    rescue
3481      raise
3482    end
3483    result = integer
3484 
3485    result
3486  end
3487.,.,
3488
3489module_eval(<<'.,.,', 'parser.y', 989)
3490  def _reduce_293(val, _values, result)
3491        begin
3492      from_integer = Integer(val[0])
3493      to_integer = Integer(val[2])
3494    rescue
3495      raise
3496    end
3497    result = Range.new(from_integer,to_integer)
3498 
3499    result
3500  end
3501.,.,
3502
3503module_eval(<<'.,.,', 'parser.y', 1000)
3504  def _reduce_294(val, _values, result)
3505        result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
3506 
3507    result
3508  end
3509.,.,
3510
3511# reduce 295 omitted
3512
3513# reduce 296 omitted
3514
3515# reduce 297 omitted
3516
3517# reduce 298 omitted
3518
3519# reduce 299 omitted
3520
3521# reduce 300 omitted
3522
3523# reduce 301 omitted
3524
3525# reduce 302 omitted
3526
3527module_eval(<<'.,.,', 'parser.y', 1014)
3528  def _reduce_303(val, _values, result)
3529        result = val[0]
3530 
3531    result
3532  end
3533.,.,
3534
3535module_eval(<<'.,.,', 'parser.y', 1018)
3536  def _reduce_304(val, _values, result)
3537        result = val[0]
3538 
3539    result
3540  end
3541.,.,
3542
3543# reduce 305 omitted
3544
3545module_eval(<<'.,.,', 'parser.y', 1025)
3546  def _reduce_306(val, _values, result)
3547        result = val[3]
3548 
3549    result
3550  end
3551.,.,
3552
3553# reduce 307 omitted
3554
3555# reduce 308 omitted
3556
3557# reduce 309 omitted
3558
3559# reduce 310 omitted
3560
3561# reduce 311 omitted
3562
3563# reduce 312 omitted
3564
3565# reduce 313 omitted
3566
3567# reduce 314 omitted
3568
3569# reduce 315 omitted
3570
3571# reduce 316 omitted
3572
3573# reduce 317 omitted
3574
3575# reduce 318 omitted
3576
3577# reduce 319 omitted
3578
3579# reduce 320 omitted
3580
3581# reduce 321 omitted
3582
3583# reduce 322 omitted
3584
3585# reduce 323 omitted
3586
3587# reduce 324 omitted
3588
3589# reduce 325 omitted
3590
3591# reduce 326 omitted
3592
3593# reduce 327 omitted
3594
3595# reduce 328 omitted
3596
3597# reduce 329 omitted
3598
3599# reduce 330 omitted
3600
3601# reduce 331 omitted
3602
3603# reduce 332 omitted
3604
3605# reduce 333 omitted
3606
3607# reduce 334 omitted
3608
3609# reduce 335 omitted
3610
3611# reduce 336 omitted
3612
3613# reduce 337 omitted
3614
3615# reduce 338 omitted
3616
3617# reduce 339 omitted
3618
3619# reduce 340 omitted
3620
3621# reduce 341 omitted
3622
3623# reduce 342 omitted
3624
3625# reduce 343 omitted
3626
3627# reduce 344 omitted
3628
3629# reduce 345 omitted
3630
3631# reduce 346 omitted
3632
3633# reduce 347 omitted
3634
3635# reduce 348 omitted
3636
3637# reduce 349 omitted
3638
3639# reduce 350 omitted
3640
3641# reduce 351 omitted
3642
3643# reduce 352 omitted
3644
3645module_eval(<<'.,.,', 'parser.y', 1095)
3646  def _reduce_353(val, _values, result)
3647        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
3648 
3649    result
3650  end
3651.,.,
3652
3653module_eval(<<'.,.,', 'parser.y', 1099)
3654  def _reduce_354(val, _values, result)
3655        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
3656 
3657    result
3658  end
3659.,.,
3660
3661module_eval(<<'.,.,', 'parser.y', 1103)
3662  def _reduce_355(val, _values, result)
3663        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
3664 
3665    result
3666  end
3667.,.,
3668
3669module_eval(<<'.,.,', 'parser.y', 1107)
3670  def _reduce_356(val, _values, result)
3671        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
3672 
3673    result
3674  end
3675.,.,
3676
3677module_eval(<<'.,.,', 'parser.y', 1112)
3678  def _reduce_357(val, _values, result)
3679        result = val[0]
3680 
3681    result
3682  end
3683.,.,
3684
3685module_eval(<<'.,.,', 'parser.y', 1116)
3686  def _reduce_358(val, _values, result)
3687        raise 'Not implemented yet'
3688 
3689    result
3690  end
3691.,.,
3692
3693module_eval(<<'.,.,', 'parser.y', 1120)
3694  def _reduce_359(val, _values, result)
3695        raise 'Not implemented yet'
3696 
3697    result
3698  end
3699.,.,
3700
3701# reduce 360 omitted
3702
3703# reduce 361 omitted
3704
3705# reduce 362 omitted
3706
3707# reduce 363 omitted
3708
3709# reduce 364 omitted
3710
3711module_eval(<<'.,.,', 'parser.y', 1132)
3712  def _reduce_365(val, _values, result)
3713        @in_interval = false
3714    @@logger.debug("#{__FILE__}:#{__LINE__}, #{val[0]}|#{val[2]} at #{@filename}") 
3715 
3716    result
3717  end
3718.,.,
3719
3720module_eval(<<'.,.,', 'parser.y', 1139)
3721  def _reduce_366(val, _values, result)
3722          result = val[0]
3723 
3724    result
3725  end
3726.,.,
3727
3728module_eval(<<'.,.,', 'parser.y', 1143)
3729  def _reduce_367(val, _values, result)
3730          result = val[0]
3731 
3732    result
3733  end
3734.,.,
3735
3736module_eval(<<'.,.,', 'parser.y', 1149)
3737  def _reduce_368(val, _values, result)
3738        @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
3739    @@logger.debug("#{__FILE__}:#{__LINE__}, term_code_body = #{val[1]}")
3740    @@logger.debug("#{__FILE__}:#{__LINE__}, END_TERM_CODE_CONSTRAINT = #{val[2]}")
3741    result = val[1]
3742 
3743    result
3744  end
3745.,.,
3746
3747# reduce 369 omitted
3748
3749# reduce 370 omitted
3750
3751# reduce 371 omitted
3752
3753module_eval(<<'.,.,', 'parser.y', 1165)
3754  def _reduce_372(val, _values, result)
3755          result = val[0]
3756 
3757    result
3758  end
3759.,.,
3760
3761module_eval(<<'.,.,', 'parser.y', 1170)
3762  def _reduce_373(val, _values, result)
3763          result = val[0]
3764 
3765    result
3766  end
3767.,.,
3768
3769module_eval(<<'.,.,', 'parser.y', 1174)
3770  def _reduce_374(val, _values, result)
3771        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
3772      result = val[0]
3773 
3774    result
3775  end
3776.,.,
3777
3778module_eval(<<'.,.,', 'parser.y', 1185)
3779  def _reduce_375(val, _values, result)
3780        result = val[0]
3781 
3782    result
3783  end
3784.,.,
3785
3786def _reduce_none(val, _values, result)
3787  val[0]
3788end
3789
3790    end   # class Parser
3791    end   # module ADL
3792  end   # module OpenEHR
Note: See TracBrowser for help on using the repository browser.