1 /* 2 * [The "BSD licence"] 3 * Copyright (c) 2005-2008 Terence Parr 4 * All rights reserved. 5 * 6 * Conversion to C#: 7 * Copyright (c) 2008 Sam Harwell, Pixel Mine, Inc. 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. The name of the author may not be used to endorse or promote products 19 * derived from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 namespace Antlr.Runtime { 34 using ArgumentNullException = System.ArgumentNullException; 35 using Exception = System.Exception; 36 using SerializationInfo = System.Runtime.Serialization.SerializationInfo; 37 using StreamingContext = System.Runtime.Serialization.StreamingContext; 38 39 [System.Serializable] 40 public class NoViableAltException : RecognitionException { 41 private readonly string _grammarDecisionDescription; 42 private readonly int _decisionNumber; 43 private readonly int _stateNumber; 44 NoViableAltException()45 public NoViableAltException() { 46 } 47 NoViableAltException(string grammarDecisionDescription)48 public NoViableAltException(string grammarDecisionDescription) { 49 this._grammarDecisionDescription = grammarDecisionDescription; 50 } 51 NoViableAltException(string message, string grammarDecisionDescription)52 public NoViableAltException(string message, string grammarDecisionDescription) 53 : base(message) { 54 this._grammarDecisionDescription = grammarDecisionDescription; 55 } 56 NoViableAltException(string message, string grammarDecisionDescription, Exception innerException)57 public NoViableAltException(string message, string grammarDecisionDescription, Exception innerException) 58 : base(message, innerException) { 59 this._grammarDecisionDescription = grammarDecisionDescription; 60 } 61 NoViableAltException(string grammarDecisionDescription, int decisionNumber, int stateNumber, IIntStream input)62 public NoViableAltException(string grammarDecisionDescription, int decisionNumber, int stateNumber, IIntStream input) 63 : base(input) { 64 this._grammarDecisionDescription = grammarDecisionDescription; 65 this._decisionNumber = decisionNumber; 66 this._stateNumber = stateNumber; 67 } 68 NoViableAltException(string message, string grammarDecisionDescription, int decisionNumber, int stateNumber, IIntStream input)69 public NoViableAltException(string message, string grammarDecisionDescription, int decisionNumber, int stateNumber, IIntStream input) 70 : base(message, input) { 71 this._grammarDecisionDescription = grammarDecisionDescription; 72 this._decisionNumber = decisionNumber; 73 this._stateNumber = stateNumber; 74 } 75 NoViableAltException(string message, string grammarDecisionDescription, int decisionNumber, int stateNumber, IIntStream input, Exception innerException)76 public NoViableAltException(string message, string grammarDecisionDescription, int decisionNumber, int stateNumber, IIntStream input, Exception innerException) 77 : base(message, input, innerException) { 78 this._grammarDecisionDescription = grammarDecisionDescription; 79 this._decisionNumber = decisionNumber; 80 this._stateNumber = stateNumber; 81 } 82 NoViableAltException(SerializationInfo info, StreamingContext context)83 protected NoViableAltException(SerializationInfo info, StreamingContext context) 84 : base(info, context) { 85 if (info == null) 86 throw new ArgumentNullException("info"); 87 88 this._grammarDecisionDescription = info.GetString("GrammarDecisionDescription"); 89 this._decisionNumber = info.GetInt32("DecisionNumber"); 90 this._stateNumber = info.GetInt32("StateNumber"); 91 } 92 93 public int DecisionNumber { 94 get { 95 return _decisionNumber; 96 } 97 } 98 99 public string GrammarDecisionDescription { 100 get { 101 return _grammarDecisionDescription; 102 } 103 } 104 105 public int StateNumber { 106 get { 107 return _stateNumber; 108 } 109 } 110 GetObjectData(SerializationInfo info, StreamingContext context)111 public override void GetObjectData(SerializationInfo info, StreamingContext context) { 112 if (info == null) 113 throw new ArgumentNullException("info"); 114 115 base.GetObjectData(info, context); 116 info.AddValue("GrammarDecisionDescription", _grammarDecisionDescription); 117 info.AddValue("DecisionNumber", _decisionNumber); 118 info.AddValue("StateNumber", _stateNumber); 119 } 120 ToString()121 public override string ToString() { 122 if (Input is ICharStream) { 123 return "NoViableAltException('" + (char)UnexpectedType + "'@[" + GrammarDecisionDescription + "])"; 124 } else { 125 return "NoViableAltException(" + UnexpectedType + "@[" + GrammarDecisionDescription + "])"; 126 } 127 } 128 } 129 } 130