Expression ThrowUnexpectedInput(Expression errorMessage) { return(ThrowExpression.InvalidDataException( StringExpression.Format( "{0} (line {1} position {2})", errorMessage, Expression.Convert(Reader.LineNumber, typeof(object)), Expression.Convert(Reader.LinePosition, typeof(object))))); }
Expression ThrowUnexpectedState(Expression state) { return(ThrowExpression.InvalidDataException( StringExpression.Format( "Unexpected JsonToken '{0}' at state {1} (line {2} position {3})", Expression.Convert(Reader.TokenType, typeof(object)), Expression.Convert(state, typeof(object)), Expression.Convert(Reader.LineNumber, typeof(object)), Expression.Convert(Reader.LinePosition, typeof(object))))); }
protected override IStateMachine <XmlNodeType> CreateStateMachine( IEnumerable <TransformSchemaPair> transforms, ParameterExpression requiredFields) { return(new StateMachine <XmlNodeType> { InitialState = State.AtStructElement, FinalState = State.Finished, IgnoredTokens = new[] { XmlNodeType.Whitespace, XmlNodeType.Comment, XmlNodeType.Text }, Default = state => ThrowExpression.InvalidDataException("Unexpected node type"), TokenTransitions = new[] { new TokenTransition <XmlNodeType> { Token = XmlNodeType.Element, StateTransitions = new[] { new StateTransition(State.AtStructElement, ProcessStructElement), new StateTransition(State.InsideStructElement, state => ProcessFieldElement(state, requiredFields, transforms)), new StateTransition(State.AtFieldEndElement, State.InsideStructElement, state => Reader.Read()) }, Default = state => ParsingError(state), }, new TokenTransition <XmlNodeType> { Token = XmlNodeType.EndElement, StateTransitions = new[] { new StateTransition(State.AtFieldEndElement, State.InsideStructElement, state => Reader.Read()), new StateTransition(State.InsideStructElement, State.Finished, state => Reader.Read()) }, Default = state => ParsingError(state), } } }); }