2014-06-04 19:55:04 +03:00
|
|
|
module Parser
|
|
|
|
module CallSite
|
|
|
|
include Parslet
|
|
|
|
|
2015-10-09 17:27:22 +03:00
|
|
|
rule(:r_value) { operator_value | call_site | field_access | basic_type }
|
2015-10-09 12:47:03 +03:00
|
|
|
|
2015-10-09 17:27:22 +03:00
|
|
|
rule(:assign) { str('=') >> space?}
|
|
|
|
rule(:assignment){ (field_access|name).as(:l_value) >> assign.as(:assign) >> r_value.as(:r_value) }
|
|
|
|
|
|
|
|
rule(:field_def) { type >> name >> (assign >> r_value.as(:value) ).maybe}
|
2015-10-09 12:47:03 +03:00
|
|
|
|
2014-06-04 19:55:04 +03:00
|
|
|
rule(:argument_list) {
|
|
|
|
left_parenthesis >>
|
2015-09-18 22:04:08 +03:00
|
|
|
( (basic_type.as(:argument) >>
|
2015-10-09 12:47:03 +03:00
|
|
|
(comma >> r_value.as(:argument)).repeat(0)).repeat(0,1)).as(:argument_list) >>
|
2015-09-18 22:04:08 +03:00
|
|
|
right_parenthesis
|
2014-06-04 19:55:04 +03:00
|
|
|
}
|
|
|
|
|
2015-09-18 22:04:08 +03:00
|
|
|
rule(:call_site) { (basic_type.as(:receiver) >> str(".")).maybe >> #possibly qualified
|
2014-06-04 19:55:04 +03:00
|
|
|
name.as(:call_site) >> argument_list >> comment.maybe}
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|