/* * Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC * All rights reserved. * * The source code of this document is proprietary work, and is not licensed for * distribution. For information about licensing, contact Sam Harwell at: * sam@tunnelvisionlabs.com */ package org.antlr.works.editor.grammar.experimental; import org.antlr.netbeans.editor.text.DocumentSnapshot; import org.antlr.v4.runtime.Dependents; import org.antlr.v4.runtime.RuleDependencies; import org.antlr.v4.runtime.RuleDependency; import org.antlr.v4.runtime.Token; import org.antlr.works.editor.grammar.codemodel.FileModel; import org.antlr.works.editor.grammar.experimental.generated.AbstractGrammarParser.LexerRuleContext; import org.antlr.works.editor.grammar.experimental.generated.AbstractGrammarParser.ParserRuleSpecContext; import org.antlr.works.editor.grammar.experimental.generated.AbstractGrammarParser.RuleSpecContext; /** * * @author Sam Harwell */ public final class CurrentRuleContextData { private final DocumentSnapshot snapshot; private final int grammarType; private final FileModel fileModel; private final RuleSpecContext context; public CurrentRuleContextData(DocumentSnapshot snapshot, int grammarType, FileModel fileModel, RuleSpecContext context) { this.snapshot = snapshot; this.grammarType = grammarType; this.fileModel = fileModel; this.context = context; } public DocumentSnapshot getSnapshot() { return snapshot; } public int getGrammarType() { return grammarType; } public FileModel getFileModel() { return fileModel; } public RuleSpecContext getContext() { return context; } @RuleDependencies({ @RuleDependency(recognizer=GrammarParser.class, rule=GrammarParser.RULE_ruleSpec, version=3, dependents=Dependents.PARENTS), @RuleDependency(recognizer=GrammarParser.class, rule=GrammarParser.RULE_parserRuleSpec, version=0, dependents=Dependents.SELF), @RuleDependency(recognizer=GrammarParser.class, rule=GrammarParser.RULE_lexerRule, version=0, dependents=Dependents.SELF), }) public String getRuleName() { if (context == null) { return null; } Token nameToken = null; if (context.getChild(0) instanceof ParserRuleSpecContext) { nameToken = ((ParserRuleSpecContext)context.getChild(0)).name; } else if (context.getChild(0) instanceof LexerRuleContext) { nameToken = ((LexerRuleContext)context.getChild(0)).name; } if (nameToken == null) { return null; } return nameToken.getText(); } }