Serialization and deserialization implementations for Microsoft.ProgramSynthesis.AST.
This repository is related to the repository Microsoft.prose.
The method string ProgramNode.PrintAST() and ProgramNode ProgramNode.Parse(string, Grammar)
in SDK provided by Microsoft cannot treat the C# non-basic type correctly.
This repository provide two method XElement ASTSerialization.Serialization.PrintXML() and
ProgramNode ASTSerialization.Serialization.Parse(XElement) which solved the problem.
A C# non-basic type wants to be serialized and deserialized by ASTSerialization.Serialization
must implement the interface ASTSerialization.IObjSerializable and provide a constructor
with XElement as the only one parameter.
Temporarily, it supports all basic types except System.Enum and System.Struct.
ProgramNode supports NonterminalNode,LiteralNode and VariableNode.
The example show the usage in test method of ProseTutorial.Tests/substringTest.cs(method call) and class Regex2 of
ProseTutorial/synthesis/WitnessFunctions.cs(interface and constructor implementation)