jievro-parser 0.4.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 (80) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +3 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +30 -0
  6. data/README.md +1 -0
  7. data/Rakefile +7 -0
  8. data/lib/parser/binary_operator.rb +64 -0
  9. data/lib/parser/grammar/code_block.treetop +46 -0
  10. data/lib/parser/grammar/declaration/constant_declaration.treetop +38 -0
  11. data/lib/parser/grammar/declaration/declaration.treetop +16 -0
  12. data/lib/parser/grammar/declaration/function_declaration.treetop +302 -0
  13. data/lib/parser/grammar/declaration/variable_declaration.treetop +38 -0
  14. data/lib/parser/grammar/expression/binary_expression.treetop +75 -0
  15. data/lib/parser/grammar/expression/closure_expression.treetop +188 -0
  16. data/lib/parser/grammar/expression/expression.treetop +83 -0
  17. data/lib/parser/grammar/expression/function_call_expression.treetop +32 -0
  18. data/lib/parser/grammar/expression/literal_expression.treetop +8 -0
  19. data/lib/parser/grammar/expression/parenthesized_expression.treetop +146 -0
  20. data/lib/parser/grammar/expression/postfix_expression.treetop +8 -0
  21. data/lib/parser/grammar/expression/prefix_expression.treetop +29 -0
  22. data/lib/parser/grammar/expression/primary_expression.treetop +8 -0
  23. data/lib/parser/grammar/expression/range_expression.treetop +53 -0
  24. data/lib/parser/grammar/expression/self_expression.treetop +25 -0
  25. data/lib/parser/grammar/expression/super_expression.treetop +25 -0
  26. data/lib/parser/grammar/expression/wildcard_expression.treetop +8 -0
  27. data/lib/parser/grammar/generics/generic_argument_clause.treetop +89 -0
  28. data/lib/parser/grammar/generics/generics.treetop +9 -0
  29. data/lib/parser/grammar/grammar.treetop +76 -0
  30. data/lib/parser/grammar/identifier.treetop +56 -0
  31. data/lib/parser/grammar/implicit_parameter_name.treetop +26 -0
  32. data/lib/parser/grammar/literal/literal.treetop +45 -0
  33. data/lib/parser/grammar/literal/literal_array.treetop +98 -0
  34. data/lib/parser/grammar/literal/literal_boolean.treetop +50 -0
  35. data/lib/parser/grammar/literal/literal_decimal_floating_point.treetop +49 -0
  36. data/lib/parser/grammar/literal/literal_dictionary.treetop +157 -0
  37. data/lib/parser/grammar/literal/literal_hexadecimal_floating_point.treetop +47 -0
  38. data/lib/parser/grammar/literal/literal_integer_binary.treetop +47 -0
  39. data/lib/parser/grammar/literal/literal_integer_decimal.treetop +47 -0
  40. data/lib/parser/grammar/literal/literal_integer_hexadecimal.treetop +47 -0
  41. data/lib/parser/grammar/literal/literal_integer_octal.treetop +47 -0
  42. data/lib/parser/grammar/literal/literal_nil.treetop +25 -0
  43. data/lib/parser/grammar/literal/literal_numeric.treetop +69 -0
  44. data/lib/parser/grammar/literal/literal_string.treetop +207 -0
  45. data/lib/parser/grammar/operator.treetop +35 -0
  46. data/lib/parser/grammar/pattern/pattern.treetop +16 -0
  47. data/lib/parser/grammar/pattern/pattern_identifier.treetop +8 -0
  48. data/lib/parser/grammar/pattern/pattern_initializer.treetop +189 -0
  49. data/lib/parser/grammar/pattern/pattern_wildcard.treetop +8 -0
  50. data/lib/parser/grammar/statement/branch/branch.treetop +16 -0
  51. data/lib/parser/grammar/statement/branch/if.treetop +63 -0
  52. data/lib/parser/grammar/statement/loop/do_while.treetop +32 -0
  53. data/lib/parser/grammar/statement/loop/for.treetop +127 -0
  54. data/lib/parser/grammar/statement/loop/for_in.treetop +35 -0
  55. data/lib/parser/grammar/statement/loop/loop.treetop +22 -0
  56. data/lib/parser/grammar/statement/loop/while.treetop +34 -0
  57. data/lib/parser/grammar/statement/statement.treetop +97 -0
  58. data/lib/parser/grammar/type/type.treetop +18 -0
  59. data/lib/parser/grammar/type/type_annotation.treetop +29 -0
  60. data/lib/parser/grammar/type/type_array.treetop +43 -0
  61. data/lib/parser/grammar/type/type_dictionary.treetop +59 -0
  62. data/lib/parser/grammar/type/type_identifier.treetop +39 -0
  63. data/lib/parser/grammar/whitespace.treetop +40 -0
  64. data/lib/parser/grammar/wildcard.treetop +25 -0
  65. data/lib/parser/parse_result.rb +17 -0
  66. data/lib/parser/parser.rb +34 -0
  67. data/lib/parser/tools/converter/binary_string_to_int_converter.rb +20 -0
  68. data/lib/parser/tools/converter/converter.rb +12 -0
  69. data/lib/parser/tools/converter/decimal_float_string_to_float_converter.rb +22 -0
  70. data/lib/parser/tools/converter/decimal_string_to_int_converter.rb +20 -0
  71. data/lib/parser/tools/converter/hexadecimal_float_string_to_float_converter.rb +42 -0
  72. data/lib/parser/tools/converter/hexadecimal_string_to_int_converter.rb +20 -0
  73. data/lib/parser/tools/converter/octal_string_to_int_converter.rb +20 -0
  74. data/lib/parser/tools/quote_stripper.rb +18 -0
  75. data/lib/parser/tools/shunting_yard.rb +80 -0
  76. data/lib/parser/tools/tokens.rb +112 -0
  77. data/lib/parser/version.rb +5 -0
  78. data/lib/parser.rb +2 -0
  79. data/parser.gemspec +25 -0
  80. metadata +163 -0
@@ -0,0 +1,34 @@
1
+ require 'treetop'
2
+ require 'polyglot'
3
+ require 'parser/grammar/grammar'
4
+ require 'parser/parse_result'
5
+
6
+ module Jievro
7
+ class Parser
8
+
9
+ @@parser = Jievro::SwiftParser.new
10
+
11
+ def self.parse(source)
12
+
13
+ tokens = []
14
+ ast = {
15
+ block_type: 'program',
16
+ body: []
17
+ }
18
+
19
+ unless source.empty?
20
+
21
+ parsed = @@parser.parse(source)
22
+
23
+ if parsed.nil?
24
+ raise Exception, @@parser.failure_reason
25
+ end
26
+
27
+ tokens = parsed.tokens
28
+ ast = parsed.ast
29
+ end
30
+
31
+ Jievro::ParseResult.new(tokens, ast)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ class BinaryStringToIntConverter
5
+ def convert(binary_string)
6
+
7
+ raise Exception, 'Cannot convert non `String\' values' \
8
+ unless binary_string.kind_of?(String)
9
+
10
+ raise Exception, 'String to convert do not match the regular format' \
11
+ unless binary_string =~ /^0b[01_]+$/i
12
+
13
+ clean_string = binary_string.gsub! /0b|_*/, ''
14
+
15
+ clean_string.to_i(base=2)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ require 'parser/tools/converter/binary_string_to_int_converter'
5
+ require 'parser/tools/converter/decimal_float_string_to_float_converter'
6
+ require 'parser/tools/converter/decimal_string_to_int_converter'
7
+ require 'parser/tools/converter/hexadecimal_float_string_to_float_converter'
8
+ require 'parser/tools/converter/hexadecimal_string_to_int_converter'
9
+ require 'parser/tools/converter/octal_string_to_int_converter'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ class DecimalFloatStringToFloatConverter
5
+ def convert(decimal_float_string)
6
+
7
+ raise Exception, 'Cannot convert non `String\' values' \
8
+ unless decimal_float_string.kind_of?(String)
9
+
10
+ # the regex that match a decimal floating number is not exact
11
+ # but for this purpose should be fine
12
+ raise Exception, 'String do not match the regular format' \
13
+ unless decimal_float_string =~ /^[0-9_]+.?[0-9_]*e?[+-]?[0-9_]*$/i
14
+
15
+ clean_string = decimal_float_string.gsub! /_*/, ''
16
+
17
+ clean_string.to_f
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ class DecimalStringToIntConverter
5
+ def convert(decimal_string)
6
+
7
+ raise Exception, 'Cannot convert non `String\' values' \
8
+ unless decimal_string.kind_of?(String)
9
+
10
+ raise Exception, 'String to convert do not match the regular format' \
11
+ unless decimal_string =~ /^[0-9_]+$/i
12
+
13
+ clean_string = decimal_string.gsub! /_*/, ''
14
+
15
+ clean_string.to_i
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ class HexadecimalFloatStringToFloatConverter
5
+ def convert(hexadecimal_float_string)
6
+
7
+ raise Exception, 'Cannot convert non `String\' values' \
8
+ unless hexadecimal_float_string.kind_of?(String)
9
+
10
+ clean_string = hexadecimal_float_string.gsub! /_*/, ''
11
+
12
+ match = clean_string.match(/^0x([0-9a-f]+).?([0-9a-f]*)p([+-]?)([0-9]+)$/i)
13
+
14
+ raise Exception, 'String to convert do not match the regular format' \
15
+ unless match
16
+
17
+ captures = match.captures
18
+
19
+ integer = captures[0].to_i(base=16).to_f
20
+ mantissa_hexadecimal = captures[1]
21
+ negative_exponent = captures[2] == '-'
22
+ exponent = captures[3].to_i
23
+
24
+ mantissa = 0.0
25
+
26
+ if negative_exponent
27
+ exponent = -exponent
28
+ end
29
+
30
+ mantissa_current_bit_value = 16
31
+
32
+ mantissa_hexadecimal.each_byte do |mantissa_hexadecimal_char|
33
+ mantissa += mantissa_hexadecimal_char.chr.to_i(base=16).to_f / mantissa_current_bit_value
34
+ mantissa_current_bit_value <<= 4
35
+ end
36
+
37
+ (integer + mantissa) * (2 ** exponent)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,20 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ class HexadecimalStringToIntConverter
5
+ def convert(hexadecimal_string)
6
+
7
+ raise Exception, 'Cannot convert non `String\' values' \
8
+ unless hexadecimal_string.kind_of?(String)
9
+
10
+ raise Exception, 'String to convert do not match the regular format' \
11
+ unless hexadecimal_string =~ /^0x[0-9a-f_]+$/i
12
+
13
+ clean_string = hexadecimal_string.gsub!(/0x|_*/, '')
14
+
15
+ clean_string.to_i(base=16)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module Kauri
2
+ module Tools
3
+ module Converter
4
+ class OctalStringToIntConverter
5
+ def convert(octal_string)
6
+
7
+ raise Exception, 'Cannot convert non `String\' values' \
8
+ unless octal_string.kind_of?(String)
9
+
10
+ raise Exception, 'String to convert do not match the regular format' \
11
+ unless octal_string =~ /^0o[0-7_]+$/i
12
+
13
+ clean_string = octal_string.gsub!(/_*/, '')
14
+
15
+ clean_string.to_i(base=8)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ module Kauri
2
+ module Tools
3
+ class QuoteStripper
4
+ def strip(string)
5
+
6
+ string.gsub!(/\\n/, "\n")
7
+ string.gsub!(/\\r/, "\r")
8
+ string.gsub!(/\\t/, "\t")
9
+ string.gsub!(/\\'/, "'")
10
+ string.gsub!(/\\0/, "\0")
11
+ string.gsub!(/\\"/, '"')
12
+ string.gsub!(/\\\\/, "\\")
13
+
14
+ string
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,80 @@
1
+ require 'parser/binary_operator'
2
+
3
+ module Kauri
4
+ module Tools
5
+ class ShuntingYard
6
+
7
+ def generate_ast(infix_tokens)
8
+
9
+ node_stack = []
10
+ rpn_tokens = generate_rpn(infix_tokens)
11
+
12
+ rpn_tokens.each { |token|
13
+
14
+ if BinaryOperator.is_operator(token)
15
+ right = node_stack.pop
16
+ left = node_stack.pop
17
+
18
+ node_stack.push({
19
+ block_type: 'binary-expression',
20
+ operator: token,
21
+ left: left,
22
+ right: right
23
+ })
24
+
25
+ else
26
+ node_stack.push(token)
27
+ end
28
+ }
29
+
30
+ node_stack
31
+ end
32
+
33
+ def generate_rpn(infix_tokens)
34
+
35
+ output_queue = []
36
+ operator_stack = []
37
+
38
+ infix_tokens.each { |token|
39
+
40
+ if BinaryOperator.is_operator(token)
41
+
42
+ current_operator = BinaryOperator.get(token)
43
+
44
+ until operator_stack.empty? do
45
+
46
+ stack_operator = operator_stack.last
47
+
48
+ move_operator_to_queue = false
49
+
50
+ if :left == current_operator.associativity and current_operator.precedence <= stack_operator.precedence
51
+ move_operator_to_queue = true
52
+ elsif :right == current_operator.associativity and current_operator.precedence < stack_operator.precedence
53
+ move_operator_to_queue = true
54
+ end
55
+
56
+ unless move_operator_to_queue
57
+ break
58
+ end
59
+
60
+ operator_stack.pop
61
+ output_queue.push stack_operator.sign
62
+ end
63
+
64
+ operator_stack.push(current_operator)
65
+ else
66
+
67
+ output_queue.push(token)
68
+
69
+ end
70
+ }
71
+
72
+ until operator_stack.empty?
73
+ output_queue.push(operator_stack.pop.sign)
74
+ end
75
+
76
+ output_queue
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,112 @@
1
+ def T_WHITESPACES(value)
2
+ {
3
+ type: 'T_WHITESPACES',
4
+ value: value
5
+ }
6
+ end
7
+
8
+ T_COMMA = {
9
+ type: 'T_COMMA',
10
+ value: ','
11
+ }
12
+
13
+ T_COLON = {
14
+ type: 'T_COLON',
15
+ value: ':'
16
+ }
17
+
18
+ T_SEMICOLON = {
19
+ type: 'T_SEMICOLON',
20
+ value: ';'
21
+ }
22
+
23
+ T_OPEN_ROUND_BRACKET = {
24
+ type: 'T_OPEN_ROUND_BRACKET',
25
+ value: '('
26
+ }
27
+
28
+ T_CLOSE_ROUND_BRACKET = {
29
+ type: 'T_CLOSE_ROUND_BRACKET',
30
+ value: ')'
31
+ }
32
+
33
+ T_OPEN_CURLY_BRACKET = {
34
+ type: 'T_OPEN_CURLY_BRACKET',
35
+ value: '{'
36
+ }
37
+
38
+ T_CLOSE_CURLY_BRACKET = {
39
+ type: 'T_CLOSE_CURLY_BRACKET',
40
+ value: '}'
41
+ }
42
+
43
+ T_FALSE = {
44
+ type: 'T_FALSE',
45
+ value: 'false'
46
+ }
47
+
48
+ T_TRUE = {
49
+ type: 'T_TRUE',
50
+ value: 'true'
51
+ }
52
+
53
+ T_WILDCARD = {
54
+ type: 'T_WILDCARD',
55
+ value: '_'
56
+ }
57
+
58
+ def T_LITERAL_INTEGER_DECIMAL(value)
59
+ {
60
+ type: 'T_LITERAL_INTEGER_DECIMAL',
61
+ value: value
62
+ }
63
+ end
64
+
65
+ def T_IDENTIFIER(value)
66
+ {
67
+ type: 'T_IDENTIFIER',
68
+ value: value
69
+ }
70
+ end
71
+
72
+ def T_OPERATOR(value)
73
+ {
74
+ type: 'T_OPERATOR',
75
+ value: value
76
+ }
77
+ end
78
+
79
+ T_VAR = {
80
+ type: 'T_VAR',
81
+ value: 'var'
82
+ }
83
+
84
+ T_FOR = {
85
+ type: 'T_FOR',
86
+ value: 'for'
87
+ }
88
+
89
+ T_IN = {
90
+ type: 'T_IN',
91
+ value: 'in'
92
+ }
93
+
94
+ T_DO = {
95
+ type: 'T_DO',
96
+ value: 'do'
97
+ }
98
+
99
+ T_WHILE = {
100
+ type: 'T_WHILE',
101
+ value: 'while'
102
+ }
103
+
104
+ T_IF = {
105
+ type: 'T_IF',
106
+ value: 'if'
107
+ }
108
+
109
+ T_ELSE = {
110
+ type: 'T_ELSE',
111
+ value: 'else'
112
+ }
@@ -0,0 +1,5 @@
1
+ module Jievro
2
+ module Parser
3
+ VERSION = '0.4.0'
4
+ end
5
+ end
data/lib/parser.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'parser/parser'
2
+ require 'parser/version'
data/parser.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'parser/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'jievro-parser'
8
+ spec.version = Jievro::Parser::VERSION
9
+ spec.authors = ['Stefano Azzalini']
10
+ spec.email = 'hi@jievro.io'
11
+ spec.homepage = 'http://jievro.io'
12
+ spec.summary = %q{Source code parser used internally by jievro}
13
+ spec.license = 'MIT'
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
+ spec.require_paths = ['lib']
18
+
19
+ spec.required_ruby_version = '~> 2.0'
20
+
21
+ spec.add_runtime_dependency 'treetop', '~> 1.6'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.9'
24
+ spec.add_development_dependency 'rake', '~> 10.0'
25
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jievro-parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ platform: ruby
6
+ authors:
7
+ - Stefano Azzalini
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: treetop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ description:
56
+ email: hi@jievro.io
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - .gitignore
62
+ - .travis.yml
63
+ - Gemfile
64
+ - Gemfile.lock
65
+ - README.md
66
+ - Rakefile
67
+ - lib/parser.rb
68
+ - lib/parser/binary_operator.rb
69
+ - lib/parser/grammar/code_block.treetop
70
+ - lib/parser/grammar/declaration/constant_declaration.treetop
71
+ - lib/parser/grammar/declaration/declaration.treetop
72
+ - lib/parser/grammar/declaration/function_declaration.treetop
73
+ - lib/parser/grammar/declaration/variable_declaration.treetop
74
+ - lib/parser/grammar/expression/binary_expression.treetop
75
+ - lib/parser/grammar/expression/closure_expression.treetop
76
+ - lib/parser/grammar/expression/expression.treetop
77
+ - lib/parser/grammar/expression/function_call_expression.treetop
78
+ - lib/parser/grammar/expression/literal_expression.treetop
79
+ - lib/parser/grammar/expression/parenthesized_expression.treetop
80
+ - lib/parser/grammar/expression/postfix_expression.treetop
81
+ - lib/parser/grammar/expression/prefix_expression.treetop
82
+ - lib/parser/grammar/expression/primary_expression.treetop
83
+ - lib/parser/grammar/expression/range_expression.treetop
84
+ - lib/parser/grammar/expression/self_expression.treetop
85
+ - lib/parser/grammar/expression/super_expression.treetop
86
+ - lib/parser/grammar/expression/wildcard_expression.treetop
87
+ - lib/parser/grammar/generics/generic_argument_clause.treetop
88
+ - lib/parser/grammar/generics/generics.treetop
89
+ - lib/parser/grammar/grammar.treetop
90
+ - lib/parser/grammar/identifier.treetop
91
+ - lib/parser/grammar/implicit_parameter_name.treetop
92
+ - lib/parser/grammar/literal/literal.treetop
93
+ - lib/parser/grammar/literal/literal_array.treetop
94
+ - lib/parser/grammar/literal/literal_boolean.treetop
95
+ - lib/parser/grammar/literal/literal_decimal_floating_point.treetop
96
+ - lib/parser/grammar/literal/literal_dictionary.treetop
97
+ - lib/parser/grammar/literal/literal_hexadecimal_floating_point.treetop
98
+ - lib/parser/grammar/literal/literal_integer_binary.treetop
99
+ - lib/parser/grammar/literal/literal_integer_decimal.treetop
100
+ - lib/parser/grammar/literal/literal_integer_hexadecimal.treetop
101
+ - lib/parser/grammar/literal/literal_integer_octal.treetop
102
+ - lib/parser/grammar/literal/literal_nil.treetop
103
+ - lib/parser/grammar/literal/literal_numeric.treetop
104
+ - lib/parser/grammar/literal/literal_string.treetop
105
+ - lib/parser/grammar/operator.treetop
106
+ - lib/parser/grammar/pattern/pattern.treetop
107
+ - lib/parser/grammar/pattern/pattern_identifier.treetop
108
+ - lib/parser/grammar/pattern/pattern_initializer.treetop
109
+ - lib/parser/grammar/pattern/pattern_wildcard.treetop
110
+ - lib/parser/grammar/statement/branch/branch.treetop
111
+ - lib/parser/grammar/statement/branch/if.treetop
112
+ - lib/parser/grammar/statement/loop/do_while.treetop
113
+ - lib/parser/grammar/statement/loop/for.treetop
114
+ - lib/parser/grammar/statement/loop/for_in.treetop
115
+ - lib/parser/grammar/statement/loop/loop.treetop
116
+ - lib/parser/grammar/statement/loop/while.treetop
117
+ - lib/parser/grammar/statement/statement.treetop
118
+ - lib/parser/grammar/type/type.treetop
119
+ - lib/parser/grammar/type/type_annotation.treetop
120
+ - lib/parser/grammar/type/type_array.treetop
121
+ - lib/parser/grammar/type/type_dictionary.treetop
122
+ - lib/parser/grammar/type/type_identifier.treetop
123
+ - lib/parser/grammar/whitespace.treetop
124
+ - lib/parser/grammar/wildcard.treetop
125
+ - lib/parser/parse_result.rb
126
+ - lib/parser/parser.rb
127
+ - lib/parser/tools/converter/binary_string_to_int_converter.rb
128
+ - lib/parser/tools/converter/converter.rb
129
+ - lib/parser/tools/converter/decimal_float_string_to_float_converter.rb
130
+ - lib/parser/tools/converter/decimal_string_to_int_converter.rb
131
+ - lib/parser/tools/converter/hexadecimal_float_string_to_float_converter.rb
132
+ - lib/parser/tools/converter/hexadecimal_string_to_int_converter.rb
133
+ - lib/parser/tools/converter/octal_string_to_int_converter.rb
134
+ - lib/parser/tools/quote_stripper.rb
135
+ - lib/parser/tools/shunting_yard.rb
136
+ - lib/parser/tools/tokens.rb
137
+ - lib/parser/version.rb
138
+ - parser.gemspec
139
+ homepage: http://jievro.io
140
+ licenses:
141
+ - MIT
142
+ metadata: {}
143
+ post_install_message:
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ~>
150
+ - !ruby/object:Gem::Version
151
+ version: '2.0'
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ requirements: []
158
+ rubyforge_project:
159
+ rubygems_version: 2.0.14
160
+ signing_key:
161
+ specification_version: 4
162
+ summary: Source code parser used internally by jievro
163
+ test_files: []