1 /* 2 * [The "BSD license"] 3 * Copyright (c) 2014 Terence Parr 4 * Copyright (c) 2014 Sam Harwell 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. The name of the author may not be used to endorse or promote products 17 * derived from this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 module antlr.v4.runtime.atn.DecisionEventInfo; 32 33 import antlr.v4.runtime.atn.ATNConfigSet; 34 import antlr.v4.runtime.TokenStream; 35 36 // Class DecisionEventInfo 37 /** 38 * This is the base class for gathering detailed information about prediction 39 * events which occur during parsing. 40 * 41 * Note that we could record the parser call stack at the time this event 42 * occurred but in the presence of left recursive rules, the stack is kind of 43 * meaningless. It's better to look at the individual configurations for their 44 * individual stacks. Of course that is a {@link PredictionContext} object 45 * not a parse tree node and so it does not have information about the extent 46 * (start...stop) of the various subtrees. Examining the stack tops of all 47 * configurations provide the return states for the rule invocations. 48 * From there you can get the enclosing rule. 49 */ 50 class DecisionEventInfo 51 { 52 53 /** 54 * The invoked decision number which this event is related to. 55 * 56 * @see ATN#decisionToState 57 */ 58 public int decision; 59 60 /** 61 * The configuration set containing additional information relevant to the 62 * prediction state when the current event occurred, or {@code null} if no 63 * additional information is relevant or available. 64 */ 65 public ATNConfigSet configs; 66 67 /** 68 * The input token stream which is being parsed. 69 */ 70 public TokenStream input; 71 72 public int startIndex; 73 74 public int stopIndex; 75 76 /** 77 * {@code true} if the current event occurred during LL prediction; 78 * otherwise, {@code false} if the input occurred during SLL prediction. 79 */ 80 public bool fullCtx; 81 82 public this(int decision, ATNConfigSet configs, TokenStream input, int startIndex, int stopIndex, 83 bool fullCtx) 84 { 85 this.decision = decision; 86 this.fullCtx = fullCtx; 87 this.stopIndex = stopIndex; 88 this.input = input; 89 this.startIndex = startIndex; 90 this.configs = configs; 91 } 92 93 }