depager 0.3.0.b20160729 → 0.3.0.b20250423

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +44 -0
  3. data/.simplecov +5 -0
  4. data/Gemfile +12 -0
  5. data/LICENSE.gpl +339 -0
  6. data/Manifest.txt +73 -0
  7. data/README.en +4 -3
  8. data/README.ja +4 -47
  9. data/Rakefile +31 -0
  10. data/bin/depager +3 -38
  11. data/examples/action_pl0d/pl0d.action.dr +4 -4
  12. data/examples/action_pl0d/test.pl0ds +2 -3
  13. data/examples/c89/c89.dr +4 -4
  14. data/examples/c89/test.c89 +1 -1
  15. data/examples/extension/astdf.rb +4 -5
  16. data/examples/extension/atree.dr +3 -3
  17. data/examples/extension/calc.atree.dr +4 -4
  18. data/examples/extension/calc.simple_action.dr +3 -3
  19. data/examples/extension/paction.dr +3 -3
  20. data/examples/extension/pactiontest.dr +3 -3
  21. data/examples/extension/simple_action.rb +26 -24
  22. data/examples/pl0d/pl0ds.dr +5 -5
  23. data/examples/pl0d/test.pl0ds +2 -2
  24. data/examples/rie_calc/calc.rie.dr +4 -4
  25. data/examples/rie_dcuse/dcuse.rie.dr +4 -4
  26. data/examples/rie_pl0/pl0.rie.dr +3 -3
  27. data/examples/slex_test/divreg.slex.dr +5 -5
  28. data/examples/slex_test/ljoin.slex.dr +5 -5
  29. data/examples/{sample_calc → tiny_calc}/calc.action.dr +4 -4
  30. data/examples/{sample_calc → tiny_calc}/calc.ast.action.dr +20 -9
  31. data/examples/{sample_calc → tiny_calc}/calc.ast.dr +19 -7
  32. data/examples/{sample_calc → tiny_calc}/calc.cst.dr +12 -7
  33. data/examples/{sample_calc → tiny_calc}/calc.dr +1 -1
  34. data/examples/{sample_calc → tiny_calc}/calc.lex.dr +2 -2
  35. data/examples/{sample_calc → tiny_calc}/calc_prec.action.dr +4 -4
  36. data/lib/depager/cli.rb +44 -0
  37. data/lib/depager/grammar.rb +72 -75
  38. data/lib/depager/lr.rb +169 -154
  39. data/lib/depager/parser.rb +90 -103
  40. data/lib/depager/plugins/_rie_debug.rb +63 -0
  41. data/lib/depager/plugins/action.rb +47 -0
  42. data/lib/depager/{ruby/plugins → plugins}/ast.dr +20 -17
  43. data/lib/depager/{ruby/plugins → plugins}/ast.rb +266 -304
  44. data/lib/depager/{ruby/plugins → plugins}/cst.dr +18 -16
  45. data/lib/depager/{ruby/plugins → plugins}/cst.rb +152 -148
  46. data/lib/depager/{ruby/plugins → plugins}/lex.dr +7 -7
  47. data/lib/depager/{ruby/plugins → plugins}/lex.rb +72 -69
  48. data/lib/depager/{ruby/plugins → plugins}/rie.dr +12 -10
  49. data/lib/depager/{ruby/plugins → plugins}/rie.rb +224 -263
  50. data/lib/depager/{ruby/plugins → plugins}/slex.dr +13 -14
  51. data/lib/depager/{ruby/plugins → plugins}/slex.rb +183 -194
  52. data/lib/depager/plugins/srp.rb +46 -0
  53. data/lib/depager/ruby/templates/extension_lalr_master.erb +6 -12
  54. data/lib/depager/ruby/templates/extension_lalr_slave.erb +31 -17
  55. data/lib/depager/ruby/templates/single_lalr_parser.erb +35 -26
  56. data/lib/depager/utils.rb +56 -46
  57. data/lib/depager/version.rb +1 -2
  58. data/lib/depager.rb +166 -176
  59. metadata +38 -33
  60. data/lib/depager/ruby/plugins/_rie_debug.rb +0 -35
  61. data/lib/depager/ruby/plugins/action.rb +0 -53
  62. data/lib/depager/ruby/plugins/srp.rb +0 -56
  63. /data/examples/{sample_calc → tiny_calc}/test.calc +0 -0
@@ -1,9 +1,8 @@
1
1
  %defext Depager::CSTBuilderExtension
2
- %extend Depager::Lexer ('plugins/lex.rb')
3
- %extend Depager::Action ('plugins/action.rb')
2
+ %extend Depager::Lexer ('depager/plugins/lex.rb')
3
+ %extend Depager::Action ('depager/plugins/action.rb')
4
4
  %decorate @Action
5
- #%decorate Depager::LALR::ShiftReducePrinter ('plugins/srp.rb')
6
- %expanded_code_delimiter DEPAGER_EXPANDED_CODE
5
+ #%decorate Depager::LALR::ShiftReducePrinter ('depager/plugins/srp.rb')
7
6
  %inner{
8
7
  attr_accessor :action_code, :nodes_code, :visitor_code
9
8
  def init_extension
@@ -41,7 +40,7 @@
41
40
  end
42
41
  attrc = nodes.map{|i| ":#{i}" }.join(', ')
43
42
  inic = nodes.map{|i| "@#{i} = #{i}"}.join('; ')
44
- @nodes_code << %{
43
+ @nodes_code << <<-CODE
45
44
  class Node_#{node_name} < Node_#{g_parser.lhs_name}
46
45
  attr_accessor #{attrc}
47
46
  def initialize #{nodes.join(', ')}
@@ -52,8 +51,11 @@
52
51
  #{accept}
53
52
  v.visit_Node_#{node_name}(self)
54
53
  end
54
+ def children
55
+ [#{nodes.join(', ')}]
56
+ end
55
57
  end
56
- } #code
58
+ CODE
57
59
 
58
60
  @visitor_code <<
59
61
  expand_inline_code(modify_action_code(code), lineno, :wrap => "def visit_Node_#{node_name} node")
@@ -70,11 +72,11 @@
70
72
  def term_extension
71
73
  g_parser.outer_code << "module #{target_namespace}\n"
72
74
  g_parser.outer_code << @nodes_code
73
- g_parser.outer_code << %{
75
+ g_parser.outer_code << <<-CODE
74
76
  class Visitor
75
- %s
77
+ #{@visitor_code}
76
78
  end
77
- } % @visitor_code #code
79
+ CODE
78
80
  g_parser.outer_code << "end\n"
79
81
  g_parser.outer_code << generate_action_decorator_code(@on_reduce, @action_code)
80
82
  end
@@ -95,13 +97,13 @@
95
97
  start:
96
98
  opt_node opt_visitor
97
99
  {
98
- master.nodes_code << %{
100
+ master.nodes_code << <<-CODE
99
101
  class Node
100
102
  def accept
101
103
  end
102
- %s
104
+ #{_opt_node}
103
105
  end
104
- } % _opt_node #code
106
+ CODE
105
107
  master.visitor_code << _opt_visitor
106
108
  }
107
109
  ;
@@ -119,13 +121,13 @@
119
121
  %banner '[ ... ]'
120
122
  %inner{
121
123
  def do_default
122
- master.nodes_code << %{
124
+ master.nodes_code << <<-CODE
123
125
  class Node_#{g_parser.lhs_name} < Node
124
126
  def initialize
125
127
  super()
126
128
  end
127
129
  end
128
- } #code
130
+ CODE
129
131
  end
130
132
  %}
131
133
  %%
@@ -149,7 +151,7 @@
149
151
  code << "#{id} = #{lit}; " if lit
150
152
  end
151
153
  attrc = args.map{|i| ":#{i}"}.join(', ')
152
- master.nodes_code << %{
154
+ master.nodes_code << <<-CODE
153
155
  class Node_#{g_parser.lhs_name} < Node
154
156
  attr_accessor #{attrc}
155
157
  def initialize
@@ -157,7 +159,7 @@
157
159
  #{code}
158
160
  end
159
161
  end
160
- } #code
162
+ CODE
161
163
  }
162
164
  ;
163
165
  pair: