PageRenderTime 57ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/protobuf/compiler/proto_parser.rb

http://ruby-protobuf.googlecode.com/
Ruby | 1420 lines | 1079 code | 208 blank | 133 comment | 50 complexity | 3f860cde26aa362c6b4ec5beb048f09e MD5 | raw file
  1. #
  2. # DO NOT MODIFY!!!!
  3. # This file is automatically generated by racc 1.4.5
  4. # from racc grammer file "lib/protobuf/compiler/proto.y".
  5. #
  6. #
  7. # lib/protobuf/compiler/proto_parser.rb: generated by racc (runtime embedded)
  8. #
  9. ###### racc/parser.rb begin
  10. unless $".index 'racc/parser.rb'
  11. $".push 'racc/parser.rb'
  12. self.class.module_eval <<'..end racc/parser.rb modeval..idd168e4f443', 'racc/parser.rb', 1
  13. #
  14. # $Id: parser.rb,v 1.7 2005/11/20 17:31:32 aamine Exp $
  15. #
  16. # Copyright (c) 1999-2005 Minero Aoki
  17. #
  18. # This program is free software.
  19. # You can distribute/modify this program under the same terms of ruby.
  20. #
  21. # As a special exception, when this code is copied by Racc
  22. # into a Racc output file, you may use that output file
  23. # without restriction.
  24. #
  25. unless defined?(NotImplementedError)
  26. NotImplementedError = NotImplementError
  27. end
  28. module Racc
  29. class ParseError < StandardError; end
  30. end
  31. unless defined?(::ParseError)
  32. ParseError = Racc::ParseError
  33. end
  34. module Racc
  35. unless defined?(Racc_No_Extentions)
  36. Racc_No_Extentions = false
  37. end
  38. class Parser
  39. Racc_Runtime_Version = '1.4.5'
  40. Racc_Runtime_Revision = '$Revision: 1.7 $'.split[1]
  41. Racc_Runtime_Core_Version_R = '1.4.5'
  42. Racc_Runtime_Core_Revision_R = '$Revision: 1.7 $'.split[1]
  43. begin
  44. require 'racc/cparse'
  45. # Racc_Runtime_Core_Version_C = (defined in extention)
  46. Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
  47. unless new.respond_to?(:_racc_do_parse_c, true)
  48. raise LoadError, 'old cparse.so'
  49. end
  50. if Racc_No_Extentions
  51. raise LoadError, 'selecting ruby version of racc runtime core'
  52. end
  53. Racc_Main_Parsing_Routine = :_racc_do_parse_c
  54. Racc_YY_Parse_Method = :_racc_yyparse_c
  55. Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_C
  56. Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_C
  57. Racc_Runtime_Type = 'c'
  58. rescue LoadError
  59. Racc_Main_Parsing_Routine = :_racc_do_parse_rb
  60. Racc_YY_Parse_Method = :_racc_yyparse_rb
  61. Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_R
  62. Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_R
  63. Racc_Runtime_Type = 'ruby'
  64. end
  65. def Parser.racc_runtime_type
  66. Racc_Runtime_Type
  67. end
  68. private
  69. def _racc_setup
  70. @yydebug = false unless self.class::Racc_debug_parser
  71. @yydebug = false unless defined?(@yydebug)
  72. if @yydebug
  73. @racc_debug_out = $stderr unless defined?(@racc_debug_out)
  74. @racc_debug_out ||= $stderr
  75. end
  76. arg = self.class::Racc_arg
  77. arg[13] = true if arg.size < 14
  78. arg
  79. end
  80. def _racc_init_sysvars
  81. @racc_state = [0]
  82. @racc_tstack = []
  83. @racc_vstack = []
  84. @racc_t = nil
  85. @racc_val = nil
  86. @racc_read_next = true
  87. @racc_user_yyerror = false
  88. @racc_error_status = 0
  89. end
  90. ###
  91. ### do_parse
  92. ###
  93. def do_parse
  94. __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
  95. end
  96. def next_token
  97. raise NotImplementedError, "#{self.class}\#next_token is not defined"
  98. end
  99. def _racc_do_parse_rb(arg, in_debug)
  100. action_table, action_check, action_default, action_pointer,
  101. goto_table, goto_check, goto_default, goto_pointer,
  102. nt_base, reduce_table, token_table, shift_n,
  103. reduce_n, use_result, * = arg
  104. _racc_init_sysvars
  105. tok = act = i = nil
  106. nerr = 0
  107. catch(:racc_end_parse) {
  108. while true
  109. if i = action_pointer[@racc_state[-1]]
  110. if @racc_read_next
  111. if @racc_t != 0 # not EOF
  112. tok, @racc_val = next_token()
  113. unless tok # EOF
  114. @racc_t = 0
  115. else
  116. @racc_t = (token_table[tok] or 1) # error token
  117. end
  118. racc_read_token(@racc_t, tok, @racc_val) if @yydebug
  119. @racc_read_next = false
  120. end
  121. end
  122. i += @racc_t
  123. unless i >= 0 and
  124. act = action_table[i] and
  125. action_check[i] == @racc_state[-1]
  126. act = action_default[@racc_state[-1]]
  127. end
  128. else
  129. act = action_default[@racc_state[-1]]
  130. end
  131. while act = _racc_evalact(act, arg)
  132. ;
  133. end
  134. end
  135. }
  136. end
  137. ###
  138. ### yyparse
  139. ###
  140. def yyparse(recv, mid)
  141. __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
  142. end
  143. def _racc_yyparse_rb(recv, mid, arg, c_debug)
  144. action_table, action_check, action_default, action_pointer,
  145. goto_table, goto_check, goto_default, goto_pointer,
  146. nt_base, reduce_table, token_table, shift_n,
  147. reduce_n, use_result, * = arg
  148. _racc_init_sysvars
  149. tok = nil
  150. act = nil
  151. i = nil
  152. nerr = 0
  153. catch(:racc_end_parse) {
  154. until i = action_pointer[@racc_state[-1]]
  155. while act = _racc_evalact(action_default[@racc_state[-1]], arg)
  156. ;
  157. end
  158. end
  159. recv.__send__(mid) do |tok, val|
  160. unless tok
  161. @racc_t = 0
  162. else
  163. @racc_t = (token_table[tok] or 1) # error token
  164. end
  165. @racc_val = val
  166. @racc_read_next = false
  167. i += @racc_t
  168. unless i >= 0 and
  169. act = action_table[i] and
  170. action_check[i] == @racc_state[-1]
  171. act = action_default[@racc_state[-1]]
  172. end
  173. while act = _racc_evalact(act, arg)
  174. ;
  175. end
  176. while not (i = action_pointer[@racc_state[-1]]) or
  177. not @racc_read_next or
  178. @racc_t == 0 # $
  179. unless i and i += @racc_t and
  180. i >= 0 and
  181. act = action_table[i] and
  182. action_check[i] == @racc_state[-1]
  183. act = action_default[@racc_state[-1]]
  184. end
  185. while act = _racc_evalact(act, arg)
  186. ;
  187. end
  188. end
  189. end
  190. }
  191. end
  192. ###
  193. ### common
  194. ###
  195. def _racc_evalact(act, arg)
  196. action_table, action_check, action_default, action_pointer,
  197. goto_table, goto_check, goto_default, goto_pointer,
  198. nt_base, reduce_table, token_table, shift_n,
  199. reduce_n, use_result, * = arg
  200. nerr = 0 # tmp
  201. if act > 0 and act < shift_n
  202. #
  203. # shift
  204. #
  205. if @racc_error_status > 0
  206. @racc_error_status -= 1 unless @racc_t == 1 # error token
  207. end
  208. @racc_vstack.push @racc_val
  209. @racc_state.push act
  210. @racc_read_next = true
  211. if @yydebug
  212. @racc_tstack.push @racc_t
  213. racc_shift @racc_t, @racc_tstack, @racc_vstack
  214. end
  215. elsif act < 0 and act > -reduce_n
  216. #
  217. # reduce
  218. #
  219. code = catch(:racc_jump) {
  220. @racc_state.push _racc_do_reduce(arg, act)
  221. false
  222. }
  223. if code
  224. case code
  225. when 1 # yyerror
  226. @racc_user_yyerror = true # user_yyerror
  227. return -reduce_n
  228. when 2 # yyaccept
  229. return shift_n
  230. else
  231. raise '[Racc Bug] unknown jump code'
  232. end
  233. end
  234. elsif act == shift_n
  235. #
  236. # accept
  237. #
  238. racc_accept if @yydebug
  239. throw :racc_end_parse, @racc_vstack[0]
  240. elsif act == -reduce_n
  241. #
  242. # error
  243. #
  244. case @racc_error_status
  245. when 0
  246. unless arg[21] # user_yyerror
  247. nerr += 1
  248. on_error @racc_t, @racc_val, @racc_vstack
  249. end
  250. when 3
  251. if @racc_t == 0 # is $
  252. throw :racc_end_parse, nil
  253. end
  254. @racc_read_next = true
  255. end
  256. @racc_user_yyerror = false
  257. @racc_error_status = 3
  258. while true
  259. if i = action_pointer[@racc_state[-1]]
  260. i += 1 # error token
  261. if i >= 0 and
  262. (act = action_table[i]) and
  263. action_check[i] == @racc_state[-1]
  264. break
  265. end
  266. end
  267. throw :racc_end_parse, nil if @racc_state.size <= 1
  268. @racc_state.pop
  269. @racc_vstack.pop
  270. if @yydebug
  271. @racc_tstack.pop
  272. racc_e_pop @racc_state, @racc_tstack, @racc_vstack
  273. end
  274. end
  275. return act
  276. else
  277. raise "[Racc Bug] unknown action #{act.inspect}"
  278. end
  279. racc_next_state(@racc_state[-1], @racc_state) if @yydebug
  280. nil
  281. end
  282. def _racc_do_reduce(arg, act)
  283. action_table, action_check, action_default, action_pointer,
  284. goto_table, goto_check, goto_default, goto_pointer,
  285. nt_base, reduce_table, token_table, shift_n,
  286. reduce_n, use_result, * = arg
  287. state = @racc_state
  288. vstack = @racc_vstack
  289. tstack = @racc_tstack
  290. i = act * -3
  291. len = reduce_table[i]
  292. reduce_to = reduce_table[i+1]
  293. method_id = reduce_table[i+2]
  294. void_array = []
  295. tmp_t = tstack[-len, len] if @yydebug
  296. tmp_v = vstack[-len, len]
  297. tstack[-len, len] = void_array if @yydebug
  298. vstack[-len, len] = void_array
  299. state[-len, len] = void_array
  300. # tstack must be updated AFTER method call
  301. if use_result
  302. vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
  303. else
  304. vstack.push __send__(method_id, tmp_v, vstack)
  305. end
  306. tstack.push reduce_to
  307. racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
  308. k1 = reduce_to - nt_base
  309. if i = goto_pointer[k1]
  310. i += state[-1]
  311. if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
  312. return curstate
  313. end
  314. end
  315. goto_default[k1]
  316. end
  317. def on_error(t, val, vstack)
  318. raise ParseError, sprintf("\nparse error on value %s (%s)",
  319. val.inspect, token_to_str(t) || '?')
  320. end
  321. def yyerror
  322. throw :racc_jump, 1
  323. end
  324. def yyaccept
  325. throw :racc_jump, 2
  326. end
  327. def yyerrok
  328. @racc_error_status = 0
  329. end
  330. #
  331. # for debugging output
  332. #
  333. def racc_read_token(t, tok, val)
  334. @racc_debug_out.print 'read '
  335. @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
  336. @racc_debug_out.puts val.inspect
  337. @racc_debug_out.puts
  338. end
  339. def racc_shift(tok, tstack, vstack)
  340. @racc_debug_out.puts "shift #{racc_token2str tok}"
  341. racc_print_stacks tstack, vstack
  342. @racc_debug_out.puts
  343. end
  344. def racc_reduce(toks, sim, tstack, vstack)
  345. out = @racc_debug_out
  346. out.print 'reduce '
  347. if toks.empty?
  348. out.print ' <none>'
  349. else
  350. toks.each {|t| out.print ' ', racc_token2str(t) }
  351. end
  352. out.puts " --> #{racc_token2str(sim)}"
  353. racc_print_stacks tstack, vstack
  354. @racc_debug_out.puts
  355. end
  356. def racc_accept
  357. @racc_debug_out.puts 'accept'
  358. @racc_debug_out.puts
  359. end
  360. def racc_e_pop(state, tstack, vstack)
  361. @racc_debug_out.puts 'error recovering mode: pop token'
  362. racc_print_states state
  363. racc_print_stacks tstack, vstack
  364. @racc_debug_out.puts
  365. end
  366. def racc_next_state(curstate, state)
  367. @racc_debug_out.puts "goto #{curstate}"
  368. racc_print_states state
  369. @racc_debug_out.puts
  370. end
  371. def racc_print_stacks(t, v)
  372. out = @racc_debug_out
  373. out.print ' ['
  374. t.each_index do |i|
  375. out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
  376. end
  377. out.puts ' ]'
  378. end
  379. def racc_print_states(s)
  380. out = @racc_debug_out
  381. out.print ' ['
  382. s.each {|st| out.print ' ', st }
  383. out.puts ' ]'
  384. end
  385. def racc_token2str(tok)
  386. self.class::Racc_token_to_s_table[tok] or
  387. raise "[Racc Bug] can't convert token #{tok} to string"
  388. end
  389. def token_to_str(t)
  390. self.class::Racc_token_to_s_table[t]
  391. end
  392. end
  393. end
  394. ..end racc/parser.rb modeval..idd168e4f443
  395. end
  396. ###### racc/parser.rb end
  397. module Protobuf
  398. class ProtoParser < Racc::Parser
  399. module_eval <<'..end lib/protobuf/compiler/proto.y modeval..ida0eea88ba4', 'lib/protobuf/compiler/proto.y', 158
  400. require 'strscan'
  401. def parse(f)
  402. @scanner = StringScanner.new(f.read)
  403. yyparse(self, :scan)
  404. end
  405. def scan_debug
  406. scan do |token, value|
  407. p [token, value]
  408. yield [token, value]
  409. end
  410. end
  411. def scan
  412. until @scanner.eos?
  413. case
  414. when match(/\s+/, /\/\/.*/)
  415. # skip
  416. when match(/\/\*/)
  417. # C-like comment
  418. raise 'EOF inside block comment' until @scanner.scan_until(/\*\//)
  419. when match(/(?:required|optional|repeated|import|package|option|message|extend|enum|service|rpc|returns|group|default|extensions|to|max|double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/)
  420. yield [@token, @token.to_sym]
  421. when match(/[+-]?\d*\.\d+([Ee][\+-]?\d+)?/)
  422. yield [:FLOAT_LITERAL, @token.to_f]
  423. when match(/[+-]?[1-9]\d*(?!\.)/, /0(?![.xX0-9])/)
  424. yield [:DEC_INTEGER, @token.to_i]
  425. when match(/0[xX]([A-Fa-f0-9])+/)
  426. yield [:HEX_INTEGER, @token.to_i(0)]
  427. when match(/0[0-7]+/)
  428. yield [:OCT_INTEGER, @token.to_i(0)]
  429. when match(/(true|false)\b/)
  430. yield [:BOOLEAN_LITERAL, @token == 'true']
  431. when match(/"(?:[^"\\]+|\\.)*"/, /'(?:[^'\\]+|\\.)*'/)
  432. yield [:STRING_LITERAL, eval(@token)]
  433. when match(/[a-zA-Z_]\w*/)
  434. yield [:IDENT, @token.to_sym]
  435. when match(/./)
  436. yield [@token, @token]
  437. else
  438. raise "parse error around #{@scanner.string[@scanner.pos, 32].inspect}"
  439. end
  440. end
  441. yield [false, nil]
  442. end
  443. def match(*regular_expressions)
  444. regular_expressions.each do |re|
  445. if @scanner.scan(re)
  446. @token = @scanner[0]
  447. return true
  448. end
  449. end
  450. false
  451. end
  452. ..end lib/protobuf/compiler/proto.y modeval..ida0eea88ba4
  453. ##### racc 1.4.5 generates ###
  454. racc_reduce_table = [
  455. 0, 0, :racc_error,
  456. 1, 52, :_reduce_1,
  457. 2, 52, :_reduce_2,
  458. 1, 53, :_reduce_none,
  459. 1, 53, :_reduce_none,
  460. 1, 53, :_reduce_none,
  461. 1, 53, :_reduce_none,
  462. 1, 53, :_reduce_none,
  463. 1, 53, :_reduce_none,
  464. 1, 53, :_reduce_none,
  465. 1, 53, :_reduce_10,
  466. 3, 57, :_reduce_11,
  467. 4, 58, :_reduce_12,
  468. 0, 61, :_reduce_13,
  469. 3, 61, :_reduce_14,
  470. 3, 59, :_reduce_15,
  471. 4, 62, :_reduce_16,
  472. 3, 54, :_reduce_17,
  473. 5, 55, :_reduce_18,
  474. 0, 66, :_reduce_19,
  475. 2, 66, :_reduce_20,
  476. 1, 67, :_reduce_none,
  477. 1, 67, :_reduce_none,
  478. 1, 67, :_reduce_23,
  479. 5, 56, :_reduce_24,
  480. 0, 70, :_reduce_25,
  481. 2, 70, :_reduce_26,
  482. 1, 71, :_reduce_none,
  483. 1, 71, :_reduce_none,
  484. 1, 71, :_reduce_29,
  485. 4, 72, :_reduce_30,
  486. 5, 60, :_reduce_31,
  487. 0, 74, :_reduce_32,
  488. 2, 74, :_reduce_33,
  489. 1, 75, :_reduce_none,
  490. 1, 75, :_reduce_none,
  491. 1, 75, :_reduce_36,
  492. 10, 76, :_reduce_37,
  493. 0, 77, :_reduce_none,
  494. 1, 77, :_reduce_none,
  495. 3, 64, :_reduce_40,
  496. 0, 78, :_reduce_41,
  497. 2, 78, :_reduce_42,
  498. 1, 79, :_reduce_none,
  499. 1, 79, :_reduce_none,
  500. 1, 79, :_reduce_none,
  501. 1, 79, :_reduce_none,
  502. 1, 79, :_reduce_none,
  503. 1, 79, :_reduce_none,
  504. 1, 79, :_reduce_none,
  505. 1, 79, :_reduce_50,
  506. 6, 69, :_reduce_51,
  507. 6, 68, :_reduce_52,
  508. 9, 68, :_reduce_53,
  509. 1, 83, :_reduce_none,
  510. 1, 83, :_reduce_none,
  511. 1, 83, :_reduce_none,
  512. 1, 83, :_reduce_none,
  513. 1, 83, :_reduce_none,
  514. 1, 83, :_reduce_none,
  515. 1, 83, :_reduce_none,
  516. 1, 83, :_reduce_none,
  517. 1, 83, :_reduce_none,
  518. 1, 83, :_reduce_none,
  519. 1, 83, :_reduce_none,
  520. 1, 83, :_reduce_none,
  521. 1, 83, :_reduce_none,
  522. 1, 83, :_reduce_none,
  523. 1, 83, :_reduce_none,
  524. 1, 83, :_reduce_none,
  525. 1, 83, :_reduce_none,
  526. 1, 83, :_reduce_none,
  527. 1, 83, :_reduce_none,
  528. 1, 83, :_reduce_none,
  529. 1, 83, :_reduce_none,
  530. 1, 83, :_reduce_none,
  531. 1, 83, :_reduce_none,
  532. 1, 83, :_reduce_none,
  533. 1, 83, :_reduce_none,
  534. 1, 83, :_reduce_none,
  535. 1, 83, :_reduce_none,
  536. 1, 83, :_reduce_none,
  537. 1, 83, :_reduce_none,
  538. 1, 83, :_reduce_none,
  539. 1, 83, :_reduce_none,
  540. 1, 83, :_reduce_none,
  541. 1, 83, :_reduce_none,
  542. 1, 84, :_reduce_87,
  543. 3, 84, :_reduce_88,
  544. 1, 85, :_reduce_none,
  545. 3, 85, :_reduce_90,
  546. 4, 80, :_reduce_91,
  547. 0, 87, :_reduce_92,
  548. 2, 87, :_reduce_93,
  549. 1, 86, :_reduce_94,
  550. 3, 86, :_reduce_95,
  551. 3, 86, :_reduce_96,
  552. 1, 81, :_reduce_none,
  553. 1, 81, :_reduce_none,
  554. 1, 81, :_reduce_none,
  555. 1, 82, :_reduce_none,
  556. 1, 82, :_reduce_none,
  557. 1, 82, :_reduce_none,
  558. 1, 82, :_reduce_none,
  559. 1, 82, :_reduce_none,
  560. 1, 82, :_reduce_none,
  561. 1, 82, :_reduce_none,
  562. 1, 82, :_reduce_none,
  563. 1, 82, :_reduce_none,
  564. 1, 82, :_reduce_none,
  565. 1, 82, :_reduce_none,
  566. 1, 82, :_reduce_none,
  567. 1, 82, :_reduce_none,
  568. 1, 82, :_reduce_none,
  569. 1, 82, :_reduce_none,
  570. 1, 82, :_reduce_none,
  571. 2, 65, :_reduce_116,
  572. 3, 65, :_reduce_117,
  573. 1, 63, :_reduce_none,
  574. 1, 63, :_reduce_none,
  575. 1, 63, :_reduce_none,
  576. 1, 63, :_reduce_none,
  577. 1, 63, :_reduce_none,
  578. 1, 73, :_reduce_none,
  579. 1, 73, :_reduce_none,
  580. 1, 73, :_reduce_none ]
  581. racc_reduce_n = 126
  582. racc_shift_n = 184
  583. racc_action_table = [
  584. 75, 176, 78, 18, 19, 75, 25, 78, 27, 47,
  585. 4, 7, 32, 11, 42, 39, 13, 106, 16, 1,
  586. 18, 19, 6, 9, 177, 38, 170, 103, 105, 109,
  587. 93, 94, 95, 96, 97, 98, 100, 101, 102, 104,
  588. 108, 92, 72, 73, 74, 76, 77, 72, 73, 74,
  589. 76, 77, 123, 110, 131, 134, 66, 141, 111, 147,
  590. 116, 35, 13, 122, 127, 130, 34, 67, 140, 144,
  591. 69, 148, 118, 120, 124, 126, 129, 133, 137, 139,
  592. 143, 146, 115, 117, 119, 121, 125, 128, 132, 136,
  593. 138, 142, 145, 114, 83, 166, 18, 19, 25, 54,
  594. 13, 33, 16, 1, 159, 86, 6, 74, 76, 77,
  595. 56, 74, 76, 77, 167, 51, 53, 57, 170, 90,
  596. 51, 53, 57, 74, 76, 77, 4, 7, 42, 11,
  597. 48, 150, 13, 151, 16, 1, 60, 152, 6, 9,
  598. 64, 154, 13, 74, 76, 77, 155, 61, 74, 76,
  599. 77, 74, 76, 77, 18, 19, 156, 42, 40, 31,
  600. 162, 29, 25, 165, 24, 40, 169, 23, 174, 175,
  601. 22, 42, 21, 180, 50, 182, 183 ]
  602. racc_action_check = [
  603. 48, 172, 48, 59, 59, 175, 177, 175, 14, 36,
  604. 14, 14, 20, 14, 36, 27, 14, 59, 14, 14,
  605. 150, 150, 14, 14, 172, 26, 177, 59, 59, 59,
  606. 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
  607. 59, 59, 48, 48, 48, 48, 48, 175, 175, 175,
  608. 175, 175, 99, 64, 99, 99, 46, 99, 69, 99,
  609. 99, 23, 46, 99, 99, 99, 22, 46, 99, 99,
  610. 46, 106, 99, 99, 99, 99, 99, 99, 99, 99,
  611. 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
  612. 99, 99, 99, 99, 49, 163, 1, 1, 167, 44,
  613. 49, 21, 49, 49, 151, 49, 49, 154, 154, 154,
  614. 44, 152, 152, 152, 163, 49, 49, 49, 167, 49,
  615. 44, 44, 44, 151, 151, 151, 0, 0, 37, 0,
  616. 37, 111, 0, 112, 0, 0, 45, 113, 0, 0,
  617. 45, 135, 45, 90, 90, 90, 148, 45, 110, 110,
  618. 110, 155, 155, 155, 174, 174, 149, 43, 29, 19,
  619. 153, 16, 13, 157, 11, 164, 165, 9, 169, 170,
  620. 7, 30, 6, 176, 42, 178, 182 ]
  621. racc_action_pointer = [
  622. 124, 90, nil, nil, nil, nil, 166, 166, nil, 161,
  623. nil, 158, nil, 156, 8, nil, 155, nil, nil, 153,
  624. 0, 89, 64, 49, nil, nil, 23, 15, nil, 146,
  625. 164, nil, nil, nil, nil, nil, 7, 121, nil, nil,
  626. nil, nil, 168, 150, 97, 134, 54, nil, -4, 92,
  627. nil, nil, nil, nil, nil, nil, nil, nil, nil, -3,
  628. nil, nil, nil, nil, 44, nil, nil, nil, nil, 52,
  629. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  630. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  631. 95, nil, nil, nil, nil, nil, nil, nil, nil, 49,
  632. nil, nil, nil, nil, nil, nil, 65, nil, nil, nil,
  633. 100, 114, 105, 92, nil, nil, nil, nil, nil, nil,
  634. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  635. nil, nil, nil, nil, nil, 132, nil, nil, nil, nil,
  636. nil, nil, nil, nil, nil, nil, nil, nil, 137, 154,
  637. 14, 75, 63, 158, 59, 103, nil, 145, nil, nil,
  638. nil, nil, nil, 93, 153, 147, nil, 92, nil, 151,
  639. 160, nil, -21, nil, 148, 1, 171, 0, 157, nil,
  640. nil, nil, 174, nil ]
  641. racc_action_default = [
  642. -126, -126, -4, -5, -10, -6, -126, -126, -7, -126,
  643. -8, -126, -9, -126, -126, -1, -126, -3, -13, -126,
  644. -126, -126, -126, -126, -13, -13, -126, -126, -2, -126,
  645. -116, -13, -19, -25, -11, -32, -126, -126, -15, 184,
  646. -41, -17, -126, -117, -126, -126, -126, -12, -126, -126,
  647. -14, -97, -20, -98, -23, -21, -18, -99, -22, -126,
  648. -29, -24, -27, -26, -126, -28, -36, -31, -34, -126,
  649. -33, -35, -120, -122, -123, -121, -124, -125, -118, -119,
  650. -16, -46, -44, -50, -43, -42, -40, -48, -47, -49,
  651. -126, -45, -114, -103, -104, -105, -106, -107, -108, -126,
  652. -109, -110, -111, -100, -112, -101, -126, -115, -113, -102,
  653. -126, -126, -94, -92, -86, -75, -62, -76, -55, -77,
  654. -56, -78, -63, -58, -57, -79, -68, -64, -80, -69,
  655. -65, -59, -81, -70, -54, -126, -82, -71, -83, -72,
  656. -66, -60, -84, -73, -67, -85, -74, -61, -126, -126,
  657. -38, -126, -126, -126, -126, -126, -30, -126, -39, -96,
  658. -95, -93, -91, -126, -126, -126, -52, -126, -51, -126,
  659. -126, -89, -126, -87, -38, -126, -126, -126, -126, -90,
  660. -53, -88, -126, -37 ]
  661. racc_goto_table = [
  662. 41, 80, 112, 113, 20, 157, 15, 173, 30, 63,
  663. 44, 58, 26, 55, 36, 37, 87, 181, 84, 45,
  664. 28, 43, 149, 62, 68, 52, 65, 89, 82, 178,
  665. 46, 70, 71, 81, 49, 85, 88, 99, 135, 172,
  666. 91, 14, 153, nil, nil, nil, nil, nil, nil, nil,
  667. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  668. nil, nil, 107, 160, 112, 161, 163, 164, nil, nil,
  669. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  670. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  671. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  672. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  673. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  674. nil, nil, nil, nil, nil, nil, nil, nil, 179, nil,
  675. nil, nil, nil, nil, nil, 168 ]
  676. racc_goto_check = [
  677. 13, 12, 22, 35, 14, 26, 2, 34, 10, 20,
  678. 15, 18, 11, 17, 10, 10, 18, 34, 17, 19,
  679. 2, 10, 22, 8, 8, 16, 21, 8, 5, 26,
  680. 23, 24, 25, 4, 27, 28, 29, 31, 32, 33,
  681. 3, 1, 36, nil, nil, nil, nil, nil, nil, nil,
  682. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  683. nil, nil, 14, 22, 22, 35, 22, 22, nil, nil,
  684. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  685. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  686. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  687. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  688. nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
  689. nil, nil, nil, nil, nil, nil, nil, nil, 12, nil,
  690. nil, nil, nil, nil, nil, 13 ]
  691. racc_goto_pointer = [
  692. nil, 41, 6, -9, -16, -21, nil, nil, -22, nil,
  693. -10, -1, -47, -29, 3, -22, -19, -31, -33, -14,
  694. -36, -19, -88, -5, -15, -14, -145, -6, -14, -13,
  695. nil, -22, -61, -128, -160, -87, -71 ]
  696. racc_goto_default = [
  697. nil, nil, nil, 17, 2, 3, 5, 8, 10, 12,
  698. nil, 171, nil, nil, 158, nil, nil, nil, nil, nil,
  699. nil, nil, 79, nil, nil, nil, nil, nil, nil, nil,
  700. 59, nil, nil, nil, nil, nil, nil ]
  701. racc_token_table = {
  702. false => 0,
  703. Object.new => 1,
  704. ";" => 2,
  705. "import" => 3,
  706. :STRING_LITERAL => 4,
  707. "package" => 5,
  708. :IDENT => 6,
  709. "." => 7,
  710. "option" => 8,
  711. "=" => 9,
  712. "message" => 10,
  713. "extend" => 11,
  714. "{" => 12,
  715. "}" => 13,
  716. "enum" => 14,
  717. "service" => 15,
  718. "rpc" => 16,
  719. "(" => 17,
  720. ")" => 18,
  721. "returns" => 19,
  722. "group" => 20,
  723. "[" => 21,
  724. "]" => 22,
  725. "required" => 23,
  726. "optional" => 24,
  727. "repeated" => 25,
  728. "default" => 26,
  729. "extensions" => 27,
  730. "to" => 28,
  731. "max" => 29,
  732. "double" => 30,
  733. "float" => 31,
  734. "int32" => 32,
  735. "int64" => 33,
  736. "uint32" => 34,
  737. "uint64" => 35,
  738. "sint32" => 36,
  739. "sint64" => 37,
  740. "fixed32" => 38,
  741. "fixed64" => 39,
  742. "sfixed32" => 40,
  743. "sfixed64" => 41,
  744. "bool" => 42,
  745. "string" => 43,
  746. "bytes" => 44,
  747. "," => 45,
  748. :FLOAT_LITERAL => 46,
  749. :BOOLEAN_LITERAL => 47,
  750. :DEC_INTEGER => 48,
  751. :HEX_INTEGER => 49,
  752. :OCT_INTEGER => 50 }
  753. racc_use_result_var = true
  754. racc_nt_base = 51
  755. Racc_arg = [
  756. racc_action_table,
  757. racc_action_check,
  758. racc_action_default,
  759. racc_action_pointer,
  760. racc_goto_table,
  761. racc_goto_check,
  762. racc_goto_default,
  763. racc_goto_pointer,
  764. racc_nt_base,
  765. racc_reduce_table,
  766. racc_token_table,
  767. racc_shift_n,
  768. racc_reduce_n,
  769. racc_use_result_var ]
  770. Racc_token_to_s_table = [
  771. '$end',
  772. 'error',
  773. '";"',
  774. '"import"',
  775. 'STRING_LITERAL',
  776. '"package"',
  777. 'IDENT',
  778. '"."',
  779. '"option"',
  780. '"="',
  781. '"message"',
  782. '"extend"',
  783. '"{"',
  784. '"}"',
  785. '"enum"',
  786. '"service"',
  787. '"rpc"',
  788. '"("',
  789. '")"',
  790. '"returns"',
  791. '"group"',
  792. '"["',
  793. '"]"',
  794. '"required"',
  795. '"optional"',
  796. '"repeated"',
  797. '"default"',
  798. '"extensions"',
  799. '"to"',
  800. '"max"',
  801. '"double"',
  802. '"float"',
  803. '"int32"',
  804. '"int64"',
  805. '"uint32"',
  806. '"uint64"',
  807. '"sint32"',
  808. '"sint64"',
  809. '"fixed32"',
  810. '"fixed64"',
  811. '"sfixed32"',
  812. '"sfixed64"',
  813. '"bool"',
  814. '"string"',
  815. '"bytes"',
  816. '","',
  817. 'FLOAT_LITERAL',
  818. 'BOOLEAN_LITERAL',
  819. 'DEC_INTEGER',
  820. 'HEX_INTEGER',
  821. 'OCT_INTEGER',
  822. '$start',
  823. 'proto',
  824. 'proto_item',
  825. 'message',
  826. 'extend',
  827. 'enum',
  828. 'import',
  829. 'package',
  830. 'option',
  831. 'service',
  832. 'dot_ident_list',
  833. 'option_body',
  834. 'constant',
  835. 'message_body',
  836. 'user_type',
  837. 'extend_body_list',
  838. 'extend_body',
  839. 'field',
  840. 'group',
  841. 'enum_body_list',
  842. 'enum_body',
  843. 'enum_field',
  844. 'integer_literal',
  845. 'service_body_list',
  846. 'service_body',
  847. 'rpc',
  848. 'rpc_arg',
  849. 'message_body_body_list',
  850. 'message_body_body',
  851. 'extensions',
  852. 'label',
  853. 'type',
  854. 'field_name',
  855. 'field_option_list',
  856. 'field_option',
  857. 'extension',
  858. 'comma_extension_list']
  859. Racc_debug_parser = false
  860. ##### racc system variables end #####
  861. # reduce 0 omitted
  862. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 3
  863. def _reduce_1( val, _values, result )
  864. result = Protobuf::Node::ProtoNode.new(val)
  865. result
  866. end
  867. .,.,
  868. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 5
  869. def _reduce_2( val, _values, result )
  870. result.children << val[1] if val[1]
  871. result
  872. end
  873. .,.,
  874. # reduce 3 omitted
  875. # reduce 4 omitted
  876. # reduce 5 omitted
  877. # reduce 6 omitted
  878. # reduce 7 omitted
  879. # reduce 8 omitted
  880. # reduce 9 omitted
  881. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 14
  882. def _reduce_10( val, _values, result )
  883. result = nil
  884. result
  885. end
  886. .,.,
  887. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 17
  888. def _reduce_11( val, _values, result )
  889. result = Protobuf::Node::ImportNode.new(val[1])
  890. result
  891. end
  892. .,.,
  893. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 20
  894. def _reduce_12( val, _values, result )
  895. result = Protobuf::Node::PackageNode.new(val[2].unshift(val[1]))
  896. result
  897. end
  898. .,.,
  899. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 23
  900. def _reduce_13( val, _values, result )
  901. result = []
  902. result
  903. end
  904. .,.,
  905. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 25
  906. def _reduce_14( val, _values, result )
  907. result << val[2]
  908. result
  909. end
  910. .,.,
  911. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 28
  912. def _reduce_15( val, _values, result )
  913. result = Protobuf::Node::OptionNode.new(*val[1])
  914. result
  915. end
  916. .,.,
  917. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 31
  918. def _reduce_16( val, _values, result )
  919. result = [val[1].unshift(val[0]), val[3]]
  920. result
  921. end
  922. .,.,
  923. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 34
  924. def _reduce_17( val, _values, result )
  925. result = Protobuf::Node::MessageNode.new(val[1], val[2])
  926. result
  927. end
  928. .,.,
  929. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 37
  930. def _reduce_18( val, _values, result )
  931. result = Protobuf::Node::ExtendNode.new(val[1], val[3])
  932. result
  933. end
  934. .,.,
  935. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 40
  936. def _reduce_19( val, _values, result )
  937. result = []
  938. result
  939. end
  940. .,.,
  941. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 42
  942. def _reduce_20( val, _values, result )
  943. result << val[1] if val[1]
  944. result
  945. end
  946. .,.,
  947. # reduce 21 omitted
  948. # reduce 22 omitted
  949. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 46
  950. def _reduce_23( val, _values, result )
  951. result = nil
  952. result
  953. end
  954. .,.,
  955. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 49
  956. def _reduce_24( val, _values, result )
  957. result = Protobuf::Node::EnumNode.new(val[1], val[3])
  958. result
  959. end
  960. .,.,
  961. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 52
  962. def _reduce_25( val, _values, result )
  963. result = []
  964. result
  965. end
  966. .,.,
  967. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 54
  968. def _reduce_26( val, _values, result )
  969. result << val[1] if val[1]
  970. result
  971. end
  972. .,.,
  973. # reduce 27 omitted
  974. # reduce 28 omitted
  975. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 58
  976. def _reduce_29( val, _values, result )
  977. result = nil
  978. result
  979. end
  980. .,.,
  981. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 61
  982. def _reduce_30( val, _values, result )
  983. result = Protobuf::Node::EnumFieldNode.new(val[0], val[2])
  984. result
  985. end
  986. .,.,
  987. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 64
  988. def _reduce_31( val, _values, result )
  989. result = Protobuf::Node::ServiceNode.new(val[1], val[3])
  990. result
  991. end
  992. .,.,
  993. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 67
  994. def _reduce_32( val, _values, result )
  995. result = []
  996. result
  997. end
  998. .,.,
  999. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 69
  1000. def _reduce_33( val, _values, result )
  1001. result << val[1] if val[1]
  1002. result
  1003. end
  1004. .,.,
  1005. # reduce 34 omitted
  1006. # reduce 35 omitted
  1007. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 73
  1008. def _reduce_36( val, _values, result )
  1009. result = nil
  1010. result
  1011. end
  1012. .,.,
  1013. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 76
  1014. def _reduce_37( val, _values, result )
  1015. result = Protobuf::Node::RpcNode.new(val[1], val[3], val[7])
  1016. result
  1017. end
  1018. .,.,
  1019. # reduce 38 omitted
  1020. # reduce 39 omitted
  1021. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 82
  1022. def _reduce_40( val, _values, result )
  1023. result = val[1]
  1024. result
  1025. end
  1026. .,.,
  1027. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 85
  1028. def _reduce_41( val, _values, result )
  1029. result = []
  1030. result
  1031. end
  1032. .,.,
  1033. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 87
  1034. def _reduce_42( val, _values, result )
  1035. result << val[1] if val[1]
  1036. result
  1037. end
  1038. .,.,
  1039. # reduce 43 omitted
  1040. # reduce 44 omitted
  1041. # reduce 45 omitted
  1042. # reduce 46 omitted
  1043. # reduce 47 omitted
  1044. # reduce 48 omitted
  1045. # reduce 49 omitted
  1046. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 96
  1047. def _reduce_50( val, _values, result )
  1048. result = nil
  1049. result
  1050. end
  1051. .,.,
  1052. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 99
  1053. def _reduce_51( val, _values, result )
  1054. result = Protobuf::Node::GroupNode.new(val[0], val[2], val[4], val[5])
  1055. result
  1056. end
  1057. .,.,
  1058. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 102
  1059. def _reduce_52( val, _values, result )
  1060. result = Protobuf::Node::FieldNode.new(val[0], val[1], val[2], val[4])
  1061. result
  1062. end
  1063. .,.,
  1064. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 104
  1065. def _reduce_53( val, _values, result )
  1066. result = Protobuf::Node::FieldNode.new(val[0], val[1], val[2], val[4], val[6])
  1067. result
  1068. end
  1069. .,.,
  1070. # reduce 54 omitted
  1071. # reduce 55 omitted
  1072. # reduce 56 omitted
  1073. # reduce 57 omitted
  1074. # reduce 58 omitted
  1075. # reduce 59 omitted
  1076. # reduce 60 omitted
  1077. # reduce 61 omitted
  1078. # reduce 62 omitted
  1079. # reduce 63 omitted
  1080. # reduce 64 omitted
  1081. # reduce 65 omitted
  1082. # reduce 66 omitted
  1083. # reduce 67 omitted
  1084. # reduce 68 omitted
  1085. # reduce 69 omitted
  1086. # reduce 70 omitted
  1087. # reduce 71 omitted
  1088. # reduce 72 omitted
  1089. # reduce 73 omitted
  1090. # reduce 74 omitted
  1091. # reduce 75 omitted
  1092. # reduce 76 omitted
  1093. # reduce 77 omitted
  1094. # reduce 78 omitted
  1095. # reduce 79 omitted
  1096. # reduce 80 omitted
  1097. # reduce 81 omitted
  1098. # reduce 82 omitted
  1099. # reduce 83 omitted
  1100. # reduce 84 omitted
  1101. # reduce 85 omitted
  1102. # reduce 86 omitted
  1103. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 109
  1104. def _reduce_87( val, _values, result )
  1105. result = val
  1106. result
  1107. end
  1108. .,.,
  1109. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 111
  1110. def _reduce_88( val, _values, result )
  1111. result << val[2]
  1112. result
  1113. end
  1114. .,.,
  1115. # reduce 89 omitted
  1116. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 115
  1117. def _reduce_90( val, _values, result )
  1118. result = [:default, val[2]]
  1119. result
  1120. end
  1121. .,.,
  1122. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 118
  1123. def _reduce_91( val, _values, result )
  1124. result = Protobuf::Node::ExtensionsNode.new(val[2].unshift(val[1]))
  1125. result
  1126. end
  1127. .,.,
  1128. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 121
  1129. def _reduce_92( val, _values, result )
  1130. result = []
  1131. result
  1132. end
  1133. .,.,
  1134. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 123
  1135. def _reduce_93( val, _values, result )
  1136. result << val[1]
  1137. result
  1138. end
  1139. .,.,
  1140. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 126
  1141. def _reduce_94( val, _values, result )
  1142. result = Protobuf::Node::ExtensionRangeNode.new(val[0])
  1143. result
  1144. end
  1145. .,.,
  1146. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 128
  1147. def _reduce_95( val, _values, result )
  1148. result = Protobuf::Node::ExtensionRangeNode.new(val[0], val[2])
  1149. result
  1150. end
  1151. .,.,
  1152. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 130
  1153. def _reduce_96( val, _values, result )
  1154. result = Protobuf::Node::ExtensionRangeNode.new(val[0], :max)
  1155. result
  1156. end
  1157. .,.,
  1158. # reduce 97 omitted
  1159. # reduce 98 omitted
  1160. # reduce 99 omitted
  1161. # reduce 100 omitted
  1162. # reduce 101 omitted
  1163. # reduce 102 omitted
  1164. # reduce 103 omitted
  1165. # reduce 104 omitted
  1166. # reduce 105 omitted
  1167. # reduce 106 omitted
  1168. # reduce 107 omitted
  1169. # reduce 108 omitted
  1170. # reduce 109 omitted
  1171. # reduce 110 omitted
  1172. # reduce 111 omitted
  1173. # reduce 112 omitted
  1174. # reduce 113 omitted
  1175. # reduce 114 omitted
  1176. # reduce 115 omitted
  1177. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 141
  1178. def _reduce_116( val, _values, result )
  1179. result = val[1].unshift(val[0])
  1180. result
  1181. end
  1182. .,.,
  1183. module_eval <<'.,.,', 'lib/protobuf/compiler/proto.y', 143
  1184. def _reduce_117( val, _values, result )
  1185. result = val[1].unshift(val[0])
  1186. result
  1187. end
  1188. .,.,
  1189. # reduce 118 omitted
  1190. # reduce 119 omitted
  1191. # reduce 120 omitted
  1192. # reduce 121 omitted
  1193. # reduce 122 omitted
  1194. # reduce 123 omitted
  1195. # reduce 124 omitted
  1196. # reduce 125 omitted
  1197. def _reduce_none( val, _values, result )
  1198. result
  1199. end
  1200. end # class ProtoParser
  1201. end # module Protobuf