Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
ANTLR Tool Source Code
ANTLR is a powerful parser generator for multiple programming languages
including Java.
ANTLR contains 2 major modules:
ANTLR Tool Source Code files are provided in the distribution packge (antlr4-4.10.1.zip). You can download them at ANTLR Website.
You can also browse the source code below:
✍: FYIcenter
⏎ org/antlr/v4/tool/Alternative.java
/* * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. * Use of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ package org.antlr.v4.tool; import org.antlr.v4.tool.ast.ActionAST; import org.antlr.v4.tool.ast.AltAST; import org.antlr.v4.tool.ast.GrammarAST; import org.antlr.v4.tool.ast.TerminalAST; import org.stringtemplate.v4.misc.MultiMap; import java.util.ArrayList; import java.util.List; /** An outermost alternative for a rule. We don't track inner alternatives. */ public class Alternative implements AttributeResolver { public Rule rule; public AltAST ast; /** What alternative number is this outermost alt? 1..n */ public int altNum; // token IDs, string literals in this alt public MultiMap<String, TerminalAST> tokenRefs = new MultiMap<String, TerminalAST>(); // does not include labels public MultiMap<String, GrammarAST> tokenRefsInActions = new MultiMap<String, GrammarAST>(); // all rule refs in this alt public MultiMap<String, GrammarAST> ruleRefs = new MultiMap<String, GrammarAST>(); // does not include labels public MultiMap<String, GrammarAST> ruleRefsInActions = new MultiMap<String, GrammarAST>(); /** A list of all LabelElementPair attached to tokens like id=ID, ids+=ID */ public MultiMap<String, LabelElementPair> labelDefs = new MultiMap<String, LabelElementPair>(); // track all token, rule, label refs in rewrite (right of ->) //public List<GrammarAST> rewriteElements = new ArrayList<GrammarAST>(); /** Track all executable actions other than named actions like @init * and catch/finally (not in an alt). Also tracks predicates, rewrite actions. * We need to examine these actions before code generation so * that we can detect refs to $rule.attr etc... * * This tracks per alt */ public List<ActionAST> actions = new ArrayList<ActionAST>(); public Alternative(Rule r, int altNum) { this.rule = r; this.altNum = altNum; } @Override public boolean resolvesToToken(String x, ActionAST node) { if ( tokenRefs.get(x)!=null ) return true; LabelElementPair anyLabelDef = getAnyLabelDef(x); if ( anyLabelDef!=null && anyLabelDef.type==LabelType.TOKEN_LABEL ) return true; return false; } @Override public boolean resolvesToAttributeDict(String x, ActionAST node) { if ( resolvesToToken(x, node) ) return true; if ( ruleRefs.get(x)!=null ) return true; // rule ref in this alt? LabelElementPair anyLabelDef = getAnyLabelDef(x); if ( anyLabelDef!=null && anyLabelDef.type==LabelType.RULE_LABEL ) return true; return false; } /** $x Attribute: rule arguments, return values, predefined rule prop. */ @Override public Attribute resolveToAttribute(String x, ActionAST node) { return rule.resolveToAttribute(x, node); // reuse that code } /** $x.y, x can be surrounding rule, token/rule/label ref. y is visible * attr in that dictionary. Can't see args on rule refs. */ @Override public Attribute resolveToAttribute(String x, String y, ActionAST node) { if ( tokenRefs.get(x)!=null ) { // token ref in this alt? return rule.getPredefinedScope(LabelType.TOKEN_LABEL).get(y); } if ( ruleRefs.get(x)!=null ) { // rule ref in this alt? // look up rule, ask it to resolve y (must be retval or predefined) return rule.g.getRule(x).resolveRetvalOrProperty(y); } LabelElementPair anyLabelDef = getAnyLabelDef(x); if ( anyLabelDef!=null && anyLabelDef.type==LabelType.RULE_LABEL ) { return rule.g.getRule(anyLabelDef.element.getText()).resolveRetvalOrProperty(y); } else if ( anyLabelDef!=null ) { AttributeDict scope = rule.getPredefinedScope(anyLabelDef.type); if (scope == null) { return null; } return scope.get(y); } return null; } @Override public boolean resolvesToLabel(String x, ActionAST node) { LabelElementPair anyLabelDef = getAnyLabelDef(x); return anyLabelDef!=null && (anyLabelDef.type==LabelType.TOKEN_LABEL || anyLabelDef.type==LabelType.RULE_LABEL); } @Override public boolean resolvesToListLabel(String x, ActionAST node) { LabelElementPair anyLabelDef = getAnyLabelDef(x); return anyLabelDef!=null && (anyLabelDef.type==LabelType.RULE_LIST_LABEL || anyLabelDef.type==LabelType.TOKEN_LIST_LABEL); } public LabelElementPair getAnyLabelDef(String x) { List<LabelElementPair> labels = labelDefs.get(x); if ( labels!=null ) return labels.get(0); return null; } /** x can be ruleref or rule label. */ public Rule resolveToRule(String x) { if ( ruleRefs.get(x)!=null ) return rule.g.getRule(x); LabelElementPair anyLabelDef = getAnyLabelDef(x); if ( anyLabelDef!=null && anyLabelDef.type==LabelType.RULE_LABEL ) { return rule.g.getRule(anyLabelDef.element.getText()); } return null; } }
⏎ org/antlr/v4/tool/Alternative.java
Or download all of them as a single archive file:
File name: antlr-tool-4.10.1-sources.jar File size: 347718 bytes Release date: 2022-04-15 Download
2022-04-24, 44282👍, 0💬
Popular Posts:
What Is jsse.jar (JDK 6) Java Secure Socket Extension? jsse.jar, Java Secure Socket Extension, is Ja...
What Is jaxb-api-2.1.6.jar? Java Architecture for XML Binding (JAXB) is a Java API that allows Java ...
Java Cryptography Extension 1.6 JAR File Size and Download Location: File name: jce.jar, jce-1.6.jar...
ANTLR is a powerful parser generator for multiple programming languages including Java. ANTLR contai...
JDK 11 java.sql.jmod is the JMOD file for JDK 11 SQL (Structured Query Language) module. JDK 11 SQL ...