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

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

changed log level setting at parser.y

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