fix the spurious root expression and add conmound types back (thanks to kasper for fixing that)

This commit is contained in:
Torsten Ruger 2014-05-27 15:36:51 +03:00
parent a6ea45b203
commit 0b07e77782
2 changed files with 6 additions and 6 deletions

View File

@ -3,16 +3,16 @@ module Parser
module CompoundTypes module CompoundTypes
include Parslet include Parslet
rule(:array) do rule(:array_constant) do
left_bracket >> left_bracket >>
( ((operator_expression|value_expression).as(:array_element) >> space? >> ( ((operator_expression|value_expression).as(:array_element) >> space? >>
(comma >> space? >> (operator_expression|value_expression).as(:array_element)).repeat(0)).repeat(0,1)).as(:array) >> (comma >> space? >> (operator_expression|value_expression).as(:array_element)).repeat(0)).repeat(0,1)).as(:array_constant) >>
space? >> right_bracket space? >> right_bracket
end end
rule(:hash_pair) { basic_type.as(:hash_key) >> association >> (operator_expression|value_expression).as(:hash_value) } rule(:hash_pair) { basic_type.as(:hash_key) >> association >> (operator_expression|value_expression).as(:hash_value) }
rule(:hash) { left_brace >> ((hash_pair.as(:hash_pair) >> rule(:hash_constant) { left_brace >> ((hash_pair.as(:hash_pair) >>
(comma >> space? >> hash_pair.as(:hash_pair)).repeat(0)).repeat(0,1)).as(:hash)>> (comma >> space? >> hash_pair.as(:hash_pair)).repeat(0)).repeat(0,1)).as(:hash_constant)>>
space? >> right_brace } space? >> right_brace }
end end

View File

@ -20,7 +20,7 @@ module Parser
class Crystal < Parslet::Parser class Crystal < Parslet::Parser
include BasicTypes include BasicTypes
# include CompoundTypes include CompoundTypes
include Tokens include Tokens
include Keywords include Keywords
include Control include Control
@ -29,6 +29,6 @@ module Parser
include FunctionDefinition include FunctionDefinition
include Operators include Operators
rule(:root){ (function_definition | expression | operator_expression | call_site | space).repeat } rule(:root){ (function_definition | expression | call_site | space).repeat }
end end
end end