Top Description Constructors Methods
org.antlr.v4.parse

public Class ScopeParser

extends Object
Class Inheritance
Imports
org.antlr.runtime.BaseRecognizer, .CommonToken, org.antlr.v4.runtime.misc.Pair, org.antlr.v4.tool.Attribute, .AttributeDict, .ErrorType, .Grammar, org.antlr.v4.tool.ast.ActionAST, java.util.ArrayList, .List

Parse args, return values, locals

rule[arg1, arg2, ..., argN] returns [ret1, ..., retN]

text is target language dependent. Java/C#/C/C++ would use "int i" but ruby/python would use "i". Languages with postfix types like Go, Swift use "x : T" notation or "T x".

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public static Pair<Integer, Integer>
public static Pair<Integer, Integer>
public static int
_splitArgumentList(String actionText, int start, int targetChar, int separatorChar, List<Pair<String, Integer>> args)

public static AttributeDict
parse(ActionAST action, String s, char separator, Grammar g)

public static Attribute
parseAttributeDef(ActionAST action, Pair<String, Integer> decl, Grammar g)

For decls like "String foo" or "char *foo32[]" compute the ID and type declarations.

public static AttributeDict
parseTypedArgList(ActionAST action, String s, Grammar g)

Given an arg or retval scope definition list like

Map<String, String>, int[] j3, char *foo32[3]

or

int i=3, j=a[34]+20

convert to an attribute scope.

public static List<Pair<String, Integer>>
splitDecls(String s, int separatorChar)

Given an argument list like

x, (*a).foo(21,33), 3.2+1, '\n', "a,oo\nick", {bl, "fdkj"eck}, ["cat\n,", x, 43]

convert to a list of attributes.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

ScopeParserback to summary
public ScopeParser()

Method Detail

_parsePostfixDeclback to summary
public static Pair<Integer, Integer> _parsePostfixDecl(Attribute attr, String decl, ActionAST a, Grammar g)
_parsePrefixDeclback to summary
public static Pair<Integer, Integer> _parsePrefixDecl(Attribute attr, String decl, ActionAST a, Grammar g)
_splitArgumentListback to summary
public static int _splitArgumentList(String actionText, int start, int targetChar, int separatorChar, List<Pair<String, Integer>> args)
parseback to summary
public static AttributeDict parse(ActionAST action, String s, char separator, Grammar g)
parseAttributeDefback to summary
public static Attribute parseAttributeDef(ActionAST action, Pair<String, Integer> decl, Grammar g)

For decls like "String foo" or "char *foo32[]" compute the ID and type declarations. Also handle "int x=3" and 'T t = new T("foo")' but if the separator is ',' you cannot use ',' in the initvalue unless you escape use "\," escape.

parseTypedArgListback to summary
public static AttributeDict parseTypedArgList(ActionAST action, String s, Grammar g)

Given an arg or retval scope definition list like

Map<String, String>, int[] j3, char *foo32[3]

or

int i=3, j=a[34]+20

convert to an attribute scope.

splitDeclsback to summary
public static List<Pair<String, Integer>> splitDecls(String s, int separatorChar)

Given an argument list like

x, (*a).foo(21,33), 3.2+1, '\n', "a,oo\nick", {bl, "fdkj"eck}, ["cat\n,", x, 43]

convert to a list of attributes. Allow nested square brackets etc... Set separatorChar to ';' or ',' or whatever you want.