shen/release/test_programs/parser.shen in shen-ruby-0.12.1 vs shen/release/test_programs/parser.shen in shen-ruby-0.13.0

- old
+ new

@@ -1,52 +1,52 @@ -(define parse - Sentence -> (let Parse (sent [Sentence []]) - (if (parsed? Parse) - (output_parse Parse) - ungrammatical))) - -(define parsed? - [[] _] -> true - _ -> false) - -(define output_parse - [_ Parse_Rules] -> (reverse Parse_Rules)) - -(define sent - [Input Output] <- (vp (np [Input [[sent --> np vp] | Output]])) - _ -> (fail)) - -(define np - [Input Output] <- (n (det [Input [[np --> det n] | Output]])) - [Input Output] <- (name [Input [[np --> name] | Output]]) - _ -> (fail)) - -(define name - [["John" | Input] Output] -> [Input [[name --> "John"] | Output]] - [["Bill" | Input] Output] -> [Input [[name --> "Bill"] | Output]] - _ -> (fail)) - - (define det - [["the" | Input] Output] -> [Input [[det --> "the"] | Output]] - [["a" | Input] Output] -> [Input [[det --> "a"] | Output]] - [["that" | Input] Output] -> [Input [[det --> "that"] | Output]] - [["this" | Input] Output] -> [Input [[det --> "this"] | Output]] - _ -> (fail)) - -(define n - [["boy" | Input] Output] -> [Input [[n --> "boy"] | Output]] - [["girl" | Input] Output] -> [Input [[n --> "girl"] | Output]] - _ -> (fail)) - -(define vp - [Input Output] <- (np (vtrans [Input [[vp --> vtrans np] | Output]])) - [Input Output] <- (vp [Input [[vp --> vintrans] | Output]]) - _ -> (fail)) - -(define vtrans - [["kicks" | Input] Output] -> [Input [[vtrans --> "kicks"] | Output]] - [["likes" | Input] Output] -> [Input [[vtrans --> "likes"] | Output]] - _ -> (fail)) - -(define vintrans - [["jumps" | Input] Output] -> [Input [[vintrans --> "jumps"] | Output]] +(define parse + Sentence -> (let Parse (sent [Sentence []]) + (if (parsed? Parse) + (output_parse Parse) + ungrammatical))) + +(define parsed? + [[] _] -> true + _ -> false) + +(define output_parse + [_ Parse_Rules] -> (reverse Parse_Rules)) + +(define sent + [Input Output] <- (vp (np [Input [[sent --> np vp] | Output]])) + _ -> (fail)) + +(define np + [Input Output] <- (n (det [Input [[np --> det n] | Output]])) + [Input Output] <- (name [Input [[np --> name] | Output]]) + _ -> (fail)) + +(define name + [["John" | Input] Output] -> [Input [[name --> "John"] | Output]] + [["Bill" | Input] Output] -> [Input [[name --> "Bill"] | Output]] + _ -> (fail)) + + (define det + [["the" | Input] Output] -> [Input [[det --> "the"] | Output]] + [["a" | Input] Output] -> [Input [[det --> "a"] | Output]] + [["that" | Input] Output] -> [Input [[det --> "that"] | Output]] + [["this" | Input] Output] -> [Input [[det --> "this"] | Output]] + _ -> (fail)) + +(define n + [["boy" | Input] Output] -> [Input [[n --> "boy"] | Output]] + [["girl" | Input] Output] -> [Input [[n --> "girl"] | Output]] + _ -> (fail)) + +(define vp + [Input Output] <- (np (vtrans [Input [[vp --> vtrans np] | Output]])) + [Input Output] <- (vp [Input [[vp --> vintrans] | Output]]) + _ -> (fail)) + +(define vtrans + [["kicks" | Input] Output] -> [Input [[vtrans --> "kicks"] | Output]] + [["likes" | Input] Output] -> [Input [[vtrans --> "likes"] | Output]] + _ -> (fail)) + +(define vintrans + [["jumps" | Input] Output] -> [Input [[vintrans --> "jumps"] | Output]] _ -> (fail)) \ No newline at end of file