private IBfsType ConvertType(PegNode node)
{
node = node.child_;
IBfsType type = null;
switch (GetNodeId(node))
{
case EBinaryFileSchemaParser.primitivetype:
type = ConvertPrimitiveType(node);
break;
case EBinaryFileSchemaParser.namedtype:
BfsUnresolvedNamedType namedtype = new BfsUnresolvedNamedType();
namedtype.SourceRange = GetSourceRange(node);
namedtype.Name = GetNodeText(node);
type = namedtype;
break;
case EBinaryFileSchemaParser.functiontype:
BfsFunctionType functiontype = new BfsFunctionType();
functiontype.SourceRange = GetSourceRange(node);
functiontype.ArgumentSourceRange = GetSourceRange(node.child_.next_);
functiontype.FunctionName = GetNodeText(node.child_);
functiontype.FunctionArgument = GetNodeText(node.child_.next_);
functiontype.FunctionArgument = functiontype.FunctionArgument.Substring(1, functiontype.FunctionArgument.Length - 2);
type = functiontype;
break;
}
//Array extension?
if (node.next_ != null )
type.ArrayExtension = ConvertArrayExtension(node.next_);
return type;
}