peruby 0.1.0

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 (74) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +35 -0
  3. data/CHANGELOG.md +15 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +51 -0
  6. data/Rakefile +92 -0
  7. data/bin/peruby +9 -0
  8. data/doc/COMPAT.md +54 -0
  9. data/doc/CONTRIBUTING.md +21 -0
  10. data/doc/DESIGN.md +25 -0
  11. data/doc/INCOMPATIBILITIES.md +30 -0
  12. data/doc/PERF.md +51 -0
  13. data/doc/ROADMAP.md +18 -0
  14. data/examples/hello.pl +1 -0
  15. data/examples/json.pl +2 -0
  16. data/examples/object.pl +5 -0
  17. data/examples/word_count.pl +6 -0
  18. data/lib/peruby/cli.rb +224 -0
  19. data/lib/peruby/compile_unit.rb +103 -0
  20. data/lib/peruby/compiler.rb +224 -0
  21. data/lib/peruby/errors.rb +40 -0
  22. data/lib/peruby/lexer/heredoc.rb +8 -0
  23. data/lib/peruby/lexer/keywords.rb +63 -0
  24. data/lib/peruby/lexer/number.rb +32 -0
  25. data/lib/peruby/lexer/quote_like.rb +72 -0
  26. data/lib/peruby/lexer/source_scanner.rb +104 -0
  27. data/lib/peruby/lexer/state.rb +46 -0
  28. data/lib/peruby/lexer/structure_scanner.rb +149 -0
  29. data/lib/peruby/lexer/term_scanner.rb +301 -0
  30. data/lib/peruby/lexer/token.rb +16 -0
  31. data/lib/peruby/lexer.rb +123 -0
  32. data/lib/peruby/node.rb +88 -0
  33. data/lib/peruby/op/assign.rb +128 -0
  34. data/lib/peruby/op/builtin.rb +903 -0
  35. data/lib/peruby/op/call.rb +378 -0
  36. data/lib/peruby/op/control.rb +256 -0
  37. data/lib/peruby/op/element.rb +136 -0
  38. data/lib/peruby/op/expression.rb +342 -0
  39. data/lib/peruby/op/io.rb +113 -0
  40. data/lib/peruby/op/list.rb +102 -0
  41. data/lib/peruby/op/literal.rb +84 -0
  42. data/lib/peruby/op/loop.rb +158 -0
  43. data/lib/peruby/op/regexp.rb +288 -0
  44. data/lib/peruby/op/variable.rb +534 -0
  45. data/lib/peruby/op.rb +47 -0
  46. data/lib/peruby/parser/grammar.rb +5797 -0
  47. data/lib/peruby/parser/grammar.y +576 -0
  48. data/lib/peruby/parser.rb +14 -0
  49. data/lib/peruby/runtime/code.rb +21 -0
  50. data/lib/peruby/runtime/conv.rb +140 -0
  51. data/lib/peruby/runtime/directory_handle.rb +18 -0
  52. data/lib/peruby/runtime/env.rb +129 -0
  53. data/lib/peruby/runtime/glob.rb +24 -0
  54. data/lib/peruby/runtime/interpolation.rb +223 -0
  55. data/lib/peruby/runtime/io_handle.rb +37 -0
  56. data/lib/peruby/runtime/local_stack.rb +90 -0
  57. data/lib/peruby/runtime/match_state.rb +62 -0
  58. data/lib/peruby/runtime/module_loader.rb +133 -0
  59. data/lib/peruby/runtime/mro.rb +94 -0
  60. data/lib/peruby/runtime/perl_array.rb +81 -0
  61. data/lib/peruby/runtime/perl_hash.rb +57 -0
  62. data/lib/peruby/runtime/ref.rb +43 -0
  63. data/lib/peruby/runtime/regexp_compiler.rb +75 -0
  64. data/lib/peruby/runtime/scalar.rb +27 -0
  65. data/lib/peruby/runtime/sprintf.rb +54 -0
  66. data/lib/peruby/runtime/stash.rb +50 -0
  67. data/lib/peruby/runtime/test_builder.rb +47 -0
  68. data/lib/peruby/runtime.rb +325 -0
  69. data/lib/peruby/validator.rb +236 -0
  70. data/lib/peruby/version.rb +5 -0
  71. data/lib/peruby.rb +31 -0
  72. data/t/00-basic.t +5 -0
  73. data/t/lib/MiniTest.pm +22 -0
  74. metadata +130 -0
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: peruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: racc
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.7'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '1.7'
26
+ description: Peruby runs a practical subset of Perl 5 without native extensions.
27
+ email:
28
+ - t.yudai92@gmail.com
29
+ executables:
30
+ - peruby
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rubocop.yml"
35
+ - CHANGELOG.md
36
+ - LICENSE.txt
37
+ - README.md
38
+ - Rakefile
39
+ - bin/peruby
40
+ - doc/COMPAT.md
41
+ - doc/CONTRIBUTING.md
42
+ - doc/DESIGN.md
43
+ - doc/INCOMPATIBILITIES.md
44
+ - doc/PERF.md
45
+ - doc/ROADMAP.md
46
+ - examples/hello.pl
47
+ - examples/json.pl
48
+ - examples/object.pl
49
+ - examples/word_count.pl
50
+ - lib/peruby.rb
51
+ - lib/peruby/cli.rb
52
+ - lib/peruby/compile_unit.rb
53
+ - lib/peruby/compiler.rb
54
+ - lib/peruby/errors.rb
55
+ - lib/peruby/lexer.rb
56
+ - lib/peruby/lexer/heredoc.rb
57
+ - lib/peruby/lexer/keywords.rb
58
+ - lib/peruby/lexer/number.rb
59
+ - lib/peruby/lexer/quote_like.rb
60
+ - lib/peruby/lexer/source_scanner.rb
61
+ - lib/peruby/lexer/state.rb
62
+ - lib/peruby/lexer/structure_scanner.rb
63
+ - lib/peruby/lexer/term_scanner.rb
64
+ - lib/peruby/lexer/token.rb
65
+ - lib/peruby/node.rb
66
+ - lib/peruby/op.rb
67
+ - lib/peruby/op/assign.rb
68
+ - lib/peruby/op/builtin.rb
69
+ - lib/peruby/op/call.rb
70
+ - lib/peruby/op/control.rb
71
+ - lib/peruby/op/element.rb
72
+ - lib/peruby/op/expression.rb
73
+ - lib/peruby/op/io.rb
74
+ - lib/peruby/op/list.rb
75
+ - lib/peruby/op/literal.rb
76
+ - lib/peruby/op/loop.rb
77
+ - lib/peruby/op/regexp.rb
78
+ - lib/peruby/op/variable.rb
79
+ - lib/peruby/parser.rb
80
+ - lib/peruby/parser/grammar.rb
81
+ - lib/peruby/parser/grammar.y
82
+ - lib/peruby/runtime.rb
83
+ - lib/peruby/runtime/code.rb
84
+ - lib/peruby/runtime/conv.rb
85
+ - lib/peruby/runtime/directory_handle.rb
86
+ - lib/peruby/runtime/env.rb
87
+ - lib/peruby/runtime/glob.rb
88
+ - lib/peruby/runtime/interpolation.rb
89
+ - lib/peruby/runtime/io_handle.rb
90
+ - lib/peruby/runtime/local_stack.rb
91
+ - lib/peruby/runtime/match_state.rb
92
+ - lib/peruby/runtime/module_loader.rb
93
+ - lib/peruby/runtime/mro.rb
94
+ - lib/peruby/runtime/perl_array.rb
95
+ - lib/peruby/runtime/perl_hash.rb
96
+ - lib/peruby/runtime/ref.rb
97
+ - lib/peruby/runtime/regexp_compiler.rb
98
+ - lib/peruby/runtime/scalar.rb
99
+ - lib/peruby/runtime/sprintf.rb
100
+ - lib/peruby/runtime/stash.rb
101
+ - lib/peruby/runtime/test_builder.rb
102
+ - lib/peruby/validator.rb
103
+ - lib/peruby/version.rb
104
+ - t/00-basic.t
105
+ - t/lib/MiniTest.pm
106
+ homepage: https://github.com/ydah/peruby
107
+ licenses:
108
+ - MIT
109
+ metadata:
110
+ homepage_uri: https://github.com/ydah/peruby
111
+ source_code_uri: https://github.com/ydah/peruby
112
+ rubygems_mfa_required: 'true'
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 3.2.0
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubygems_version: 4.0.19
128
+ specification_version: 4
129
+ summary: A Perl 5 interpreter written in pure Ruby
130
+ test_files: []