Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / Internal / SrgsCompiler / OneOf.cs / 1 / OneOf.cs
//------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------- #region Using directives using System; using System.Speech.Internal.SrgsParser; #endregion namespace System.Speech.Internal.SrgsCompiler { internal class OneOf : ParseElementCollection, IOneOf { //******************************************************************* // // Constructors // //******************************************************************* #region Constructors ////// Process the 'one-of' element. /// /// /// public OneOf (Rule rule, Backend backend) : base (backend, rule) { // Create a start and end start. _startState = _backend.CreateNewState (rule); _endState = _backend.CreateNewState (rule); //Add before the start state an epsilon arc _startArc = _backend.EpsilonTransition (1.0f); _startArc.End = _startState; //Add after the end state an epsilon arc _endArc = _backend.EpsilonTransition (1.0f); _endArc.Start = _endState; } #endregion //******************************************************************** // // Internal Method // //******************************************************************* #region Internal Method ////// Process the '/one-of' element. /// Connects all the arsc into an exit enf point. /// /// Verify OneOf contains at least one child 'item'. /// /// void IElement.PostParse (IElement parentElement) { if (_startArc.End.OutArcs.IsEmpty) { XmlParser.ThrowSrgsException (SRID.EmptyOneOf); } // Remove the extraneous arc and state if possible at the start and end _startArc = TrimStart (_startArc, _backend); _endArc = TrimEnd (_endArc, _backend); // Connect the one-of to the parrent base.PostParse ((ParseElementCollection) parentElement); } #endregion //******************************************************************** // // Protected Method // //******************************************************************** #region Protected Method ////// Adds a new arc to the one-of /// /// /// internal override void AddArc (Arc start, Arc end) { start = TrimStart (start, _backend); end = TrimEnd (end, _backend); State endStartState = end.Start; State startEndState = start.End; // Connect the previous arc with the 'start' set the intertion point if (start.IsEpsilonTransition & start.IsPropertylessTransition && startEndState != null && startEndState.InArcs.IsEmpty) { System.Diagnostics.Debug.Assert (start.End == startEndState); start.End = null; _backend.MoveOutputTransitionsAndDeleteState (startEndState, _startState); } else { start.Start = _startState; } // Connect with the epsilon transition at the end if (end.IsEpsilonTransition & end.IsPropertylessTransition && endStartState != null && endStartState.OutArcs.IsEmpty) { System.Diagnostics.Debug.Assert (end.Start == endStartState); end.Start = null; _backend.MoveInputTransitionsAndDeleteState (endStartState, _endState); } else { end.End = _endState; } } #endregion //******************************************************************* // // Protected Method // //******************************************************************** #region Protected Method private State _startState; private State _endState; #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------- #region Using directives using System; using System.Speech.Internal.SrgsParser; #endregion namespace System.Speech.Internal.SrgsCompiler { internal class OneOf : ParseElementCollection, IOneOf { //******************************************************************* // // Constructors // //******************************************************************* #region Constructors ////// Process the 'one-of' element. /// /// /// public OneOf (Rule rule, Backend backend) : base (backend, rule) { // Create a start and end start. _startState = _backend.CreateNewState (rule); _endState = _backend.CreateNewState (rule); //Add before the start state an epsilon arc _startArc = _backend.EpsilonTransition (1.0f); _startArc.End = _startState; //Add after the end state an epsilon arc _endArc = _backend.EpsilonTransition (1.0f); _endArc.Start = _endState; } #endregion //******************************************************************** // // Internal Method // //******************************************************************* #region Internal Method ////// Process the '/one-of' element. /// Connects all the arsc into an exit enf point. /// /// Verify OneOf contains at least one child 'item'. /// /// void IElement.PostParse (IElement parentElement) { if (_startArc.End.OutArcs.IsEmpty) { XmlParser.ThrowSrgsException (SRID.EmptyOneOf); } // Remove the extraneous arc and state if possible at the start and end _startArc = TrimStart (_startArc, _backend); _endArc = TrimEnd (_endArc, _backend); // Connect the one-of to the parrent base.PostParse ((ParseElementCollection) parentElement); } #endregion //******************************************************************** // // Protected Method // //******************************************************************** #region Protected Method ////// Adds a new arc to the one-of /// /// /// internal override void AddArc (Arc start, Arc end) { start = TrimStart (start, _backend); end = TrimEnd (end, _backend); State endStartState = end.Start; State startEndState = start.End; // Connect the previous arc with the 'start' set the intertion point if (start.IsEpsilonTransition & start.IsPropertylessTransition && startEndState != null && startEndState.InArcs.IsEmpty) { System.Diagnostics.Debug.Assert (start.End == startEndState); start.End = null; _backend.MoveOutputTransitionsAndDeleteState (startEndState, _startState); } else { start.Start = _startState; } // Connect with the epsilon transition at the end if (end.IsEpsilonTransition & end.IsPropertylessTransition && endStartState != null && endStartState.OutArcs.IsEmpty) { System.Diagnostics.Debug.Assert (end.Start == endStartState); end.Start = null; _backend.MoveInputTransitionsAndDeleteState (endStartState, _endState); } else { end.End = _endState; } } #endregion //******************************************************************* // // Protected Method // //******************************************************************** #region Protected Method private State _startState; private State _endState; #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ButtonRenderer.cs
- Operator.cs
- PerspectiveCamera.cs
- ReadOnlyState.cs
- TableCell.cs
- XmlObjectSerializerWriteContext.cs
- WindowsListBox.cs
- DoubleMinMaxAggregationOperator.cs
- Configuration.cs
- DataBindingHandlerAttribute.cs
- TagPrefixCollection.cs
- TimeStampChecker.cs
- Base64Encoder.cs
- CounterCreationDataCollection.cs
- _PooledStream.cs
- MeasureItemEvent.cs
- KeyToListMap.cs
- OneOfTypeConst.cs
- LineBreakRecord.cs
- SecurityHelper.cs
- X509Certificate.cs
- MemberDescriptor.cs
- ArrayList.cs
- BindingNavigator.cs
- UrlPropertyAttribute.cs
- HostingEnvironmentSection.cs
- HttpListenerContext.cs
- OleDbErrorCollection.cs
- ContractHandle.cs
- SqlCommandSet.cs
- HtmlInputPassword.cs
- BooleanAnimationBase.cs
- GlobalProxySelection.cs
- XmlTextWriter.cs
- JsonEncodingStreamWrapper.cs
- PrintDialog.cs
- CodeAssignStatement.cs
- TransformerInfoCollection.cs
- DocumentXmlWriter.cs
- Compiler.cs
- RegisteredHiddenField.cs
- ClientUtils.cs
- loginstatus.cs
- QueryContinueDragEventArgs.cs
- ResourcesGenerator.cs
- BinaryObjectWriter.cs
- ControlsConfig.cs
- DataGridViewHitTestInfo.cs
- EntityDataSourceContainerNameItem.cs
- SchemaElementLookUpTableEnumerator.cs
- CacheManager.cs
- SqlCharStream.cs
- UIElementParaClient.cs
- XsdBuildProvider.cs
- MergablePropertyAttribute.cs
- PersonalizationStateInfoCollection.cs
- CompatibleComparer.cs
- GeometryModel3D.cs
- WindowsComboBox.cs
- HttpModule.cs
- UrlAuthFailedErrorFormatter.cs
- SqlDesignerDataSourceView.cs
- InputQueue.cs
- GeneratedContractType.cs
- DoubleLink.cs
- DynamicDiscoSearcher.cs
- ActionMessageFilterTable.cs
- PreviewPageInfo.cs
- glyphs.cs
- ProfileGroupSettingsCollection.cs
- ColorConverter.cs
- ManipulationPivot.cs
- SqlCommandBuilder.cs
- TransformerConfigurationWizardBase.cs
- SQLDecimal.cs
- OptimizerPatterns.cs
- StorageAssociationSetMapping.cs
- DataAdapter.cs
- ConstraintCollection.cs
- DBSchemaRow.cs
- Schema.cs
- SimplePropertyEntry.cs
- PerfService.cs
- BufferBuilder.cs
- XPathSelfQuery.cs
- Int64KeyFrameCollection.cs
- RegistryExceptionHelper.cs
- AstTree.cs
- HttpDictionary.cs
- SettingsBindableAttribute.cs
- BamlLocalizer.cs
- UdpRetransmissionSettings.cs
- GeometryDrawing.cs
- CommandTreeTypeHelper.cs
- EpmSourceTree.cs
- DataService.cs
- CodeTryCatchFinallyStatement.cs
- XPathChildIterator.cs
- SoapObjectReader.cs
- FlowLayoutSettings.cs