ignalxy 4 лет назад
Родитель
Сommit
d9f617ecde
30 измененных файлов с 437 добавлено и 331 удалено
  1. 6 1
      .idea/compiler.xml
  2. 6 0
      .idea/vcs.xml
  3. 21 0
      aidl-to-json/pom.xml
  4. 0 0
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/AidlToJson.java
  5. 118 0
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.interp
  6. 0 0
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.tokens
  7. 1 1
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlBaseVisitor.java
  8. 0 0
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.interp
  9. 5 2
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.java
  10. 0 0
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.tokens
  11. 1 1
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlListener.java
  12. 1 1
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLoader.java
  13. 219 204
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlParser.java
  14. 1 1
      aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlVisitor.java
  15. 0 0
      aidl-to-json/src/main/resources/example/aidl/AudioPolicyConfig.aidl
  16. 0 0
      aidl-to-json/src/main/resources/example/aidl/IAccessibilityInteractionConnection.aidl
  17. 0 0
      aidl-to-json/src/main/resources/example/aidl/IAccessibilityServiceConnection.aidl
  18. 0 0
      aidl-to-json/src/main/resources/example/aidl/IBluetoothGatt.aidl
  19. 0 0
      aidl-to-json/src/main/resources/example/aidl/IBluetoothHeadsetClient.aidl
  20. 0 0
      aidl-to-json/src/main/resources/example/aidl/IConnectionServiceAdapter.aidl
  21. 0 0
      aidl-to-json/src/main/resources/example/aidl/IFingerprintDaemonCallback.aidl
  22. 0 0
      aidl-to-json/src/main/resources/example/aidl/INetworkManagementService.aidl
  23. 0 0
      aidl-to-json/src/main/resources/example/aidl/IOnAppsChangedListener.aidl
  24. 0 0
      aidl-to-json/src/main/resources/example/aidl/IUserManager.aidl
  25. 1 1
      aidl-to-json/src/main/resources/grammar/Aidl.g4
  26. 0 118
      aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.interp
  27. 19 0
      java-control-flow/pom.xml
  28. 18 0
      pom.xml
  29. 19 0
      utils/pom.xml
  30. 1 1
      utils/src/main/java/xyz/ignatz/utils/MapToJson.java

+ 6 - 1
.idea/compiler.xml

@@ -6,8 +6,13 @@
         <sourceOutputDir name="target/generated-sources/annotations" />
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
-        <module name="aidl2json" />
+        <module name="aidl-to-json" />
+        <module name="java-control-flow" />
+        <module name="utils" />
       </profile>
     </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="aidl2json" target="8" />
+    </bytecodeTargetLevel>
   </component>
 </project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 21 - 0
aidl-to-json/pom.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>antlr</artifactId>
+        <groupId>xyz.ignatz</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>aidl-to-json</artifactId>
+    <dependencies>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 0 - 0
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/AidlToJson.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/AidlToJson.java


Разница между файлами не показана из-за своего большого размера
+ 118 - 0
aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.interp


+ 0 - 0
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.tokens → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.tokens


+ 1 - 1
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlBaseVisitor.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlBaseVisitor.java

@@ -1,4 +1,4 @@
-// Generated from E:/subjects/Compilers Principle/exp/2/antlr\Aidl.g4 by ANTLR 4.9.1
+// Generated from E:/subjects/Compilers Principle/exp/antlr/aidl-to-json/src/main/resources/grammar\Aidl.g4 by ANTLR 4.9.1
 package xyz.ignatz.antlr.aidl.analyzer;
 import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
 

+ 0 - 0
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.interp → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.interp


+ 5 - 2
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.java

@@ -1,10 +1,13 @@
-// Generated from E:/subjects/Compilers Principle/exp/2/antlr\Aidl.g4 by ANTLR 4.9.1
+// Generated from E:/subjects/Compilers Principle/exp/antlr/aidl-to-json/src/main/resources/grammar\Aidl.g4 by ANTLR 4.9.1
 package xyz.ignatz.antlr.aidl.analyzer;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
 import org.antlr.v4.runtime.*;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 public class AidlLexer extends Lexer {
@@ -105,7 +108,7 @@ public class AidlLexer extends Lexer {
 	}
 
 	@Override
-	public String getGrammarFileName() { return "src/main/resources/grammar/Aidl.g4"; }
+	public String getGrammarFileName() { return "Aidl.g4"; }
 
 	@Override
 	public String[] getRuleNames() { return ruleNames; }

+ 0 - 0
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.tokens → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLexer.tokens


+ 1 - 1
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlListener.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlListener.java

@@ -1,4 +1,4 @@
-// Generated from E:/subjects/Compilers Principle/exp/2/antlr\Aidl.g4 by ANTLR 4.9.1
+// Generated from E:/subjects/Compilers Principle/exp/antlr/aidl-to-json/src/main/resources/grammar\Aidl.g4 by ANTLR 4.9.1
 package xyz.ignatz.antlr.aidl.analyzer;
 import org.antlr.v4.runtime.tree.ParseTreeListener;
 

+ 1 - 1
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLoader.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlLoader.java

@@ -2,7 +2,7 @@ package xyz.ignatz.antlr.aidl.analyzer;
 
 import java.util.*;
 
-import xyz.ignatz.tools.MapToJson;
+import xyz.ignatz.utils.MapToJson;
 
 public class AidlLoader extends AidlBaseListener
 {

+ 219 - 204
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlParser.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlParser.java

@@ -1,10 +1,13 @@
-// Generated from E:/subjects/Compilers Principle/exp/2/antlr\Aidl.g4 by ANTLR 4.9.1
+// Generated from E:/subjects/Compilers Principle/exp/antlr/aidl-to-json/src/main/resources/grammar\Aidl.g4 by ANTLR 4.9.1
 package xyz.ignatz.antlr.aidl.analyzer;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
 import org.antlr.v4.runtime.tree.*;
 import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 public class AidlParser extends Parser {
@@ -29,7 +32,7 @@ public class AidlParser extends Parser {
 		RULE_name = 17, RULE_path = 18, RULE_id = 19;
 	private static String[] makeRuleNames() {
 		return new String[] {
-				"src/main/java/xyz/ignatz/antlr/aidl", "packageStatement", "parcelableStatement", "importStatement",
+			"aidl", "packageStatement", "parcelableStatement", "importStatement", 
 			"interfaceStatement", "interfaceSubStatement", "methodStatement", "constStatement", 
 			"methodReturnType", "paramList", "param", "paramTag", "paramType", "type", 
 			"list", "interfaceName", "className", "name", "path", "id"
@@ -93,7 +96,7 @@ public class AidlParser extends Parser {
 	}
 
 	@Override
-	public String getGrammarFileName() { return "src/main/resources/grammar/Aidl.g4"; }
+	public String getGrammarFileName() { return "Aidl.g4"; }
 
 	@Override
 	public String[] getRuleNames() { return ruleNames; }
@@ -154,14 +157,22 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(40);
-			packageStatement();
-			setState(49);
+			setState(41);
+			_errHandler.sync(this);
+			_la = _input.LA(1);
+			if (_la==PACKAGE) {
+				{
+				setState(40);
+				packageStatement();
+				}
+			}
+
+			setState(51);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
 			case PARCELABLE:
 				{
-				setState(41);
+				setState(43);
 				parcelableStatement();
 				}
 				break;
@@ -169,26 +180,28 @@ public class AidlParser extends Parser {
 			case INTERFACE:
 			case ONEWAY:
 				{
-				setState(45);
+				setState(47);
 				_errHandler.sync(this);
 				_la = _input.LA(1);
 				while (_la==IMPORT) {
 					{
 					{
-					setState(42);
+					setState(44);
 					importStatement();
 					}
 					}
-					setState(47);
+					setState(49);
 					_errHandler.sync(this);
 					_la = _input.LA(1);
 				}
-				setState(48);
+				setState(50);
 				interfaceStatement();
 				}
 				break;
+			case EOF:
+				break;
 			default:
-				throw new NoViableAltException(this);
+				break;
 			}
 			}
 		}
@@ -234,11 +247,11 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(51);
+			setState(53);
 			match(PACKAGE);
-			setState(52);
+			setState(54);
 			name();
-			setState(53);
+			setState(55);
 			match(SE);
 			}
 		}
@@ -284,11 +297,11 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(55);
+			setState(57);
 			match(PARCELABLE);
-			setState(56);
+			setState(58);
 			id();
-			setState(57);
+			setState(59);
 			match(SE);
 			}
 		}
@@ -334,11 +347,11 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(59);
+			setState(61);
 			match(IMPORT);
-			setState(60);
+			setState(62);
 			path();
-			setState(61);
+			setState(63);
 			match(SE);
 			}
 		}
@@ -395,40 +408,40 @@ public class AidlParser extends Parser {
 			enterOuterAlt(_localctx, 1);
 			{
 			oneway = 0;
-			setState(66);
+			setState(68);
 			_errHandler.sync(this);
 			_la = _input.LA(1);
 			if (_la==ONEWAY) {
 				{
-				setState(64);
+				setState(66);
 				match(ONEWAY);
 				oneway = 1;
 				}
 			}
 
-			setState(68);
+			setState(70);
 			match(INTERFACE);
-			setState(69);
+			setState(71);
 			id();
-			setState(70);
+			setState(72);
 			match(LC);
-			setState(74);
+			setState(76);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					{
 					{
-					setState(71);
+					setState(73);
 					interfaceSubStatement();
 					}
 					} 
 				}
-				setState(76);
+				setState(78);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
 			}
-			setState(77);
+			setState(79);
 			match(RC);
 			}
 		}
@@ -473,20 +486,20 @@ public class AidlParser extends Parser {
 		InterfaceSubStatementContext _localctx = new InterfaceSubStatementContext(_ctx, getState());
 		enterRule(_localctx, 10, RULE_interfaceSubStatement);
 		try {
-			setState(81);
+			setState(83);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(79);
+				setState(81);
 				methodStatement();
 				}
 				break;
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(80);
+				setState(82);
 				constStatement();
 				}
 				break;
@@ -546,48 +559,48 @@ public class AidlParser extends Parser {
 			enterOuterAlt(_localctx, 1);
 			{
 			oneway &= 1;
-			setState(86);
+			setState(88);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
 			case 1:
 				{
-				setState(84);
+				setState(86);
 				match(ONEWAY);
 				oneway |= 2;
 				}
 				break;
 			}
-			setState(88);
+			setState(90);
 			methodReturnType();
-			setState(89);
+			setState(91);
 			id();
-			setState(90);
-			match(LP);
 			setState(92);
+			match(LP);
+			setState(94);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
 			case 1:
 				{
-				setState(91);
+				setState(93);
 				paramList();
 				}
 				break;
 			}
-			setState(94);
+			setState(96);
 			match(RP);
-			setState(97);
+			setState(99);
 			_errHandler.sync(this);
 			_la = _input.LA(1);
 			if (_la==EQ) {
 				{
-				setState(95);
+				setState(97);
 				match(EQ);
-				setState(96);
+				setState(98);
 				match(INT);
 				}
 			}
 
-			setState(99);
+			setState(101);
 			match(SE);
 			}
 		}
@@ -636,40 +649,40 @@ public class AidlParser extends Parser {
 		ConstStatementContext _localctx = new ConstStatementContext(_ctx, getState());
 		enterRule(_localctx, 14, RULE_constStatement);
 		try {
-			setState(115);
+			setState(117);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(101);
+				setState(103);
 				match(CONST);
-				setState(102);
+				setState(104);
 				match(INT);
-				setState(103);
+				setState(105);
 				id();
-				setState(104);
+				setState(106);
 				match(EQ);
-				setState(105);
+				setState(107);
 				match(INTEGER);
-				setState(106);
+				setState(108);
 				match(SE);
 				}
 				break;
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(108);
+				setState(110);
 				match(CONST);
-				setState(109);
+				setState(111);
 				match(STRING);
-				setState(110);
+				setState(112);
 				id();
-				setState(111);
+				setState(113);
 				match(EQ);
-				setState(112);
+				setState(114);
 				match(LITERALSTRING);
-				setState(113);
+				setState(115);
 				match(SE);
 				}
 				break;
@@ -716,26 +729,26 @@ public class AidlParser extends Parser {
 		enterRule(_localctx, 16, RULE_methodReturnType);
 		int _la;
 		try {
-			setState(123);
+			setState(125);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(117);
+				setState(119);
 				if (!(oneway==0)) throw new FailedPredicateException(this, "oneway==0");
 				{
-				setState(119);
+				setState(121);
 				_errHandler.sync(this);
 				_la = _input.LA(1);
 				if (_la==NULLABLE) {
 					{
-					setState(118);
+					setState(120);
 					match(NULLABLE);
 					}
 				}
 
-				setState(121);
+				setState(123);
 				type();
 				}
 				}
@@ -743,7 +756,7 @@ public class AidlParser extends Parser {
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(122);
+				setState(124);
 				match(VOID);
 				}
 				break;
@@ -797,21 +810,21 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(125);
+			setState(127);
 			param();
-			setState(130);
+			setState(132);
 			_errHandler.sync(this);
 			_la = _input.LA(1);
 			while (_la==CO) {
 				{
 				{
-				setState(126);
+				setState(128);
 				match(CO);
-				setState(127);
+				setState(129);
 				param();
 				}
 				}
-				setState(132);
+				setState(134);
 				_errHandler.sync(this);
 				_la = _input.LA(1);
 			}
@@ -865,29 +878,29 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(134);
+			setState(136);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
 			case 1:
 				{
-				setState(133);
+				setState(135);
 				match(NULLABLE);
 				}
 				break;
 			}
-			setState(137);
+			setState(139);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
 			case 1:
 				{
-				setState(136);
+				setState(138);
 				((ParamContext)_localctx).paramTag = paramTag();
 				}
 				break;
 			}
-			setState(139);
+			setState(141);
 			paramType((((ParamContext)_localctx).paramTag!=null?_input.getText(((ParamContext)_localctx).paramTag.start,((ParamContext)_localctx).paramTag.stop):null));
-			setState(140);
+			setState(142);
 			id();
 			}
 		}
@@ -930,22 +943,22 @@ public class AidlParser extends Parser {
 		enterRule(_localctx, 22, RULE_paramTag);
 		int _la;
 		try {
-			setState(145);
+			setState(147);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(142);
+				setState(144);
 				match(IN);
 				}
 				break;
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(143);
+				setState(145);
 				if (!(oneway==0)) throw new FailedPredicateException(this, "oneway==0");
-				setState(144);
+				setState(146);
 				_la = _input.LA(1);
 				if ( !(_la==INOUT || _la==OUT) ) {
 				_errHandler.recoverInline(this);
@@ -1020,27 +1033,27 @@ public class AidlParser extends Parser {
 		ParamTypeContext _localctx = new ParamTypeContext(_ctx, getState(), tag);
 		enterRule(_localctx, 24, RULE_paramType);
 		try {
-			setState(178);
+			setState(180);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(147);
+				setState(149);
 				if (!(_localctx.tag==null)) throw new FailedPredicateException(this, "$tag==null");
 				{
-				setState(153);
+				setState(155);
 				_errHandler.sync(this);
 				switch (_input.LA(1)) {
 				case PRIMITIVE:
 					{
-					setState(148);
+					setState(150);
 					match(PRIMITIVE);
 					}
 					break;
 				case STRING:
 					{
-					setState(149);
+					setState(151);
 					match(STRING);
 					}
 					break;
@@ -1048,7 +1061,7 @@ public class AidlParser extends Parser {
 				case PATH:
 				case ID:
 					{
-					setState(150);
+					setState(152);
 					interfaceName();
 					((ParamTypeContext)_localctx).tid =  1;
 					}
@@ -1062,67 +1075,67 @@ public class AidlParser extends Parser {
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(155);
+				setState(157);
 				if (!(_localctx.tag!=null)) throw new FailedPredicateException(this, "$tag!=null");
-				setState(176);
+				setState(178);
 				_errHandler.sync(this);
-				switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
+				switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
 				case 1:
 					{
-					setState(156);
+					setState(158);
 					match(MAP);
 					}
 					break;
 				case 2:
 					{
-					setState(157);
+					setState(159);
 					match(CHARSEQUENCE);
 					}
 					break;
 				case 3:
 					{
-					setState(158);
+					setState(160);
 					list();
 					}
 					break;
 				case 4:
 					{
-					setState(165);
+					setState(167);
 					_errHandler.sync(this);
-					switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+					switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
 					case 1:
 						{
-						setState(159);
+						setState(161);
 						name();
 						((ParamTypeContext)_localctx).tid =  -1;
 						}
 						break;
 					case 2:
 						{
-						setState(162);
+						setState(164);
 						((ParamTypeContext)_localctx).type = type();
 						((ParamTypeContext)_localctx).tid =  ((ParamTypeContext)_localctx).type.tid;
 						}
 						break;
 					}
-					setState(167);
+					setState(169);
 					if (!(_localctx.tag.equals("in"))) throw new FailedPredicateException(this, "$tag.equals(\"in\")");
 					}
 					break;
 				case 5:
 					{
-					setState(169);
+					setState(171);
 					className();
 					((ParamTypeContext)_localctx).tid =  2;
 					}
 					break;
 				case 6:
 					{
-					setState(172);
+					setState(174);
 					((ParamTypeContext)_localctx).type = type();
-					setState(173);
+					setState(175);
 					match(LB);
-					setState(174);
+					setState(176);
 					match(RB);
 					}
 					break;
@@ -1188,43 +1201,43 @@ public class AidlParser extends Parser {
 			int _alt;
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(188);
+			setState(190);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
 			case PRIMITIVE:
 				{
-				setState(180);
+				setState(182);
 				match(PRIMITIVE);
 				}
 				break;
 			case STRING:
 				{
-				setState(181);
+				setState(183);
 				match(STRING);
 				}
 				break;
 			case CHARSEQUENCE:
 				{
-				setState(182);
+				setState(184);
 				match(CHARSEQUENCE);
 				}
 				break;
 			case MAP:
 				{
-				setState(183);
+				setState(185);
 				match(MAP);
 				}
 				break;
 			case LIST:
 				{
-				setState(184);
+				setState(186);
 				list();
 				}
 				break;
 			case PATH:
 			case ID:
 				{
-				setState(185);
+				setState(187);
 				className();
 				((TypeContext)_localctx).tid =  2;
 				}
@@ -1232,23 +1245,23 @@ public class AidlParser extends Parser {
 			default:
 				throw new NoViableAltException(this);
 			}
-			setState(194);
+			setState(196);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,21,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					{
 					{
-					setState(190);
+					setState(192);
 					match(LB);
-					setState(191);
+					setState(193);
 					match(RB);
 					}
 					} 
 				}
-				setState(196);
+				setState(198);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,21,_ctx);
 			}
 			}
 		}
@@ -1295,18 +1308,18 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(197);
+			setState(199);
 			match(LIST);
-			setState(202);
+			setState(204);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
 			case 1:
 				{
-				setState(198);
+				setState(200);
 				match(LA);
-				setState(199);
+				setState(201);
 				type();
-				setState(200);
+				setState(202);
 				match(RA);
 				}
 				break;
@@ -1352,13 +1365,13 @@ public class AidlParser extends Parser {
 		InterfaceNameContext _localctx = new InterfaceNameContext(_ctx, getState());
 		enterRule(_localctx, 30, RULE_interfaceName);
 		try {
-			setState(206);
+			setState(208);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
 			case IBINDER:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(204);
+				setState(206);
 				match(IBINDER);
 				}
 				break;
@@ -1366,7 +1379,7 @@ public class AidlParser extends Parser {
 			case ID:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(205);
+				setState(207);
 				name();
 				}
 				break;
@@ -1414,7 +1427,7 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(208);
+			setState(210);
 			name();
 			}
 		}
@@ -1458,7 +1471,7 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(210);
+			setState(212);
 			_la = _input.LA(1);
 			if ( !(_la==PATH || _la==ID) ) {
 			_errHandler.recoverInline(this);
@@ -1508,7 +1521,7 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(212);
+			setState(214);
 			match(PATH);
 			}
 		}
@@ -1550,7 +1563,7 @@ public class AidlParser extends Parser {
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(214);
+			setState(216);
 			match(ID);
 			}
 		}
@@ -1603,75 +1616,77 @@ public class AidlParser extends Parser {
 	}
 
 	public static final String _serializedATN =
-		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3.\u00db\4\2\t\2\4"+
+		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3.\u00dd\4\2\t\2\4"+
 		"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
 		"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
-		"\4\23\t\23\4\24\t\24\4\25\t\25\3\2\3\2\3\2\7\2.\n\2\f\2\16\2\61\13\2\3"+
-		"\2\5\2\64\n\2\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\6\3\6"+
-		"\3\6\5\6E\n\6\3\6\3\6\3\6\3\6\7\6K\n\6\f\6\16\6N\13\6\3\6\3\6\3\7\3\7"+
-		"\5\7T\n\7\3\b\3\b\3\b\5\bY\n\b\3\b\3\b\3\b\3\b\5\b_\n\b\3\b\3\b\3\b\5"+
-		"\bd\n\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+
-		"\t\5\tv\n\t\3\n\3\n\5\nz\n\n\3\n\3\n\5\n~\n\n\3\13\3\13\3\13\7\13\u0083"+
-		"\n\13\f\13\16\13\u0086\13\13\3\f\5\f\u0089\n\f\3\f\5\f\u008c\n\f\3\f\3"+
-		"\f\3\f\3\r\3\r\3\r\5\r\u0094\n\r\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u009c"+
-		"\n\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u00a8\n\16"+
-		"\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u00b3\n\16\5\16\u00b5"+
-		"\n\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00bf\n\17\3\17\3\17"+
-		"\7\17\u00c3\n\17\f\17\16\17\u00c6\13\17\3\20\3\20\3\20\3\20\3\20\5\20"+
-		"\u00cd\n\20\3\21\3\21\5\21\u00d1\n\21\3\22\3\22\3\23\3\23\3\24\3\24\3"+
-		"\25\3\25\3\25\2\2\26\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(\2\4"+
-		"\4\2\24\24\26\26\3\2()\2\u00e6\2*\3\2\2\2\4\65\3\2\2\2\69\3\2\2\2\b=\3"+
-		"\2\2\2\nA\3\2\2\2\fS\3\2\2\2\16U\3\2\2\2\20u\3\2\2\2\22}\3\2\2\2\24\177"+
-		"\3\2\2\2\26\u0088\3\2\2\2\30\u0093\3\2\2\2\32\u00b4\3\2\2\2\34\u00be\3"+
-		"\2\2\2\36\u00c7\3\2\2\2 \u00d0\3\2\2\2\"\u00d2\3\2\2\2$\u00d4\3\2\2\2"+
-		"&\u00d6\3\2\2\2(\u00d8\3\2\2\2*\63\5\4\3\2+\64\5\6\4\2,.\5\b\5\2-,\3\2"+
-		"\2\2.\61\3\2\2\2/-\3\2\2\2/\60\3\2\2\2\60\62\3\2\2\2\61/\3\2\2\2\62\64"+
-		"\5\n\6\2\63+\3\2\2\2\63/\3\2\2\2\64\3\3\2\2\2\65\66\7\f\2\2\66\67\5$\23"+
-		"\2\678\7&\2\28\5\3\2\2\29:\7\r\2\2:;\5(\25\2;<\7&\2\2<\7\3\2\2\2=>\7\16"+
-		"\2\2>?\5&\24\2?@\7&\2\2@\t\3\2\2\2AD\b\6\1\2BC\7\20\2\2CE\b\6\1\2DB\3"+
-		"\2\2\2DE\3\2\2\2EF\3\2\2\2FG\7\17\2\2GH\5(\25\2HL\7\36\2\2IK\5\f\7\2J"+
-		"I\3\2\2\2KN\3\2\2\2LJ\3\2\2\2LM\3\2\2\2MO\3\2\2\2NL\3\2\2\2OP\7\37\2\2"+
-		"P\13\3\2\2\2QT\5\16\b\2RT\5\20\t\2SQ\3\2\2\2SR\3\2\2\2T\r\3\2\2\2UX\b"+
-		"\b\1\2VW\7\20\2\2WY\b\b\1\2XV\3\2\2\2XY\3\2\2\2YZ\3\2\2\2Z[\5\22\n\2["+
-		"\\\5(\25\2\\^\7\34\2\2]_\5\24\13\2^]\3\2\2\2^_\3\2\2\2_`\3\2\2\2`c\7\35"+
-		"\2\2ab\7\'\2\2bd\7\6\2\2ca\3\2\2\2cd\3\2\2\2de\3\2\2\2ef\7&\2\2f\17\3"+
-		"\2\2\2gh\7\22\2\2hi\7\6\2\2ij\5(\25\2jk\7\'\2\2kl\7*\2\2lm\7&\2\2mv\3"+
-		"\2\2\2no\7\22\2\2op\7\27\2\2pq\5(\25\2qr\7\'\2\2rs\7+\2\2st\7&\2\2tv\3"+
-		"\2\2\2ug\3\2\2\2un\3\2\2\2v\21\3\2\2\2wy\6\n\2\2xz\7\23\2\2yx\3\2\2\2"+
-		"yz\3\2\2\2z{\3\2\2\2{~\5\34\17\2|~\7\21\2\2}w\3\2\2\2}|\3\2\2\2~\23\3"+
-		"\2\2\2\177\u0084\5\26\f\2\u0080\u0081\7%\2\2\u0081\u0083\5\26\f\2\u0082"+
-		"\u0080\3\2\2\2\u0083\u0086\3\2\2\2\u0084\u0082\3\2\2\2\u0084\u0085\3\2"+
-		"\2\2\u0085\25\3\2\2\2\u0086\u0084\3\2\2\2\u0087\u0089\7\23\2\2\u0088\u0087"+
-		"\3\2\2\2\u0088\u0089\3\2\2\2\u0089\u008b\3\2\2\2\u008a\u008c\5\30\r\2"+
-		"\u008b\u008a\3\2\2\2\u008b\u008c\3\2\2\2\u008c\u008d\3\2\2\2\u008d\u008e"+
-		"\5\32\16\2\u008e\u008f\5(\25\2\u008f\27\3\2\2\2\u0090\u0094\7\25\2\2\u0091"+
-		"\u0092\6\r\3\2\u0092\u0094\t\2\2\2\u0093\u0090\3\2\2\2\u0093\u0091\3\2"+
-		"\2\2\u0094\31\3\2\2\2\u0095\u009b\6\16\4\3\u0096\u009c\7\3\2\2\u0097\u009c"+
-		"\7\27\2\2\u0098\u0099\5 \21\2\u0099\u009a\b\16\1\2\u009a\u009c\3\2\2\2"+
-		"\u009b\u0096\3\2\2\2\u009b\u0097\3\2\2\2\u009b\u0098\3\2\2\2\u009c\u00b5"+
-		"\3\2\2\2\u009d\u00b2\6\16\5\3\u009e\u00b3\7\31\2\2\u009f\u00b3\7\30\2"+
-		"\2\u00a0\u00b3\5\36\20\2\u00a1\u00a2\5$\23\2\u00a2\u00a3\b\16\1\2\u00a3"+
-		"\u00a8\3\2\2\2\u00a4\u00a5\5\34\17\2\u00a5\u00a6\b\16\1\2\u00a6\u00a8"+
-		"\3\2\2\2\u00a7\u00a1\3\2\2\2\u00a7\u00a4\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9"+
-		"\u00aa\6\16\6\3\u00aa\u00b3\3\2\2\2\u00ab\u00ac\5\"\22\2\u00ac\u00ad\b"+
-		"\16\1\2\u00ad\u00b3\3\2\2\2\u00ae\u00af\5\34\17\2\u00af\u00b0\7 \2\2\u00b0"+
-		"\u00b1\7!\2\2\u00b1\u00b3\3\2\2\2\u00b2\u009e\3\2\2\2\u00b2\u009f\3\2"+
-		"\2\2\u00b2\u00a0\3\2\2\2\u00b2\u00a7\3\2\2\2\u00b2\u00ab\3\2\2\2\u00b2"+
-		"\u00ae\3\2\2\2\u00b3\u00b5\3\2\2\2\u00b4\u0095\3\2\2\2\u00b4\u009d\3\2"+
-		"\2\2\u00b5\33\3\2\2\2\u00b6\u00bf\7\3\2\2\u00b7\u00bf\7\27\2\2\u00b8\u00bf"+
-		"\7\30\2\2\u00b9\u00bf\7\31\2\2\u00ba\u00bf\5\36\20\2\u00bb\u00bc\5\"\22"+
-		"\2\u00bc\u00bd\b\17\1\2\u00bd\u00bf\3\2\2\2\u00be\u00b6\3\2\2\2\u00be"+
-		"\u00b7\3\2\2\2\u00be\u00b8\3\2\2\2\u00be\u00b9\3\2\2\2\u00be\u00ba\3\2"+
-		"\2\2\u00be\u00bb\3\2\2\2\u00bf\u00c4\3\2\2\2\u00c0\u00c1\7 \2\2\u00c1"+
-		"\u00c3\7!\2\2\u00c2\u00c0\3\2\2\2\u00c3\u00c6\3\2\2\2\u00c4\u00c2\3\2"+
-		"\2\2\u00c4\u00c5\3\2\2\2\u00c5\35\3\2\2\2\u00c6\u00c4\3\2\2\2\u00c7\u00cc"+
-		"\7\32\2\2\u00c8\u00c9\7\"\2\2\u00c9\u00ca\5\34\17\2\u00ca\u00cb\7#\2\2"+
-		"\u00cb\u00cd\3\2\2\2\u00cc\u00c8\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\37"+
-		"\3\2\2\2\u00ce\u00d1\7\33\2\2\u00cf\u00d1\5$\23\2\u00d0\u00ce\3\2\2\2"+
-		"\u00d0\u00cf\3\2\2\2\u00d1!\3\2\2\2\u00d2\u00d3\5$\23\2\u00d3#\3\2\2\2"+
-		"\u00d4\u00d5\t\3\2\2\u00d5%\3\2\2\2\u00d6\u00d7\7(\2\2\u00d7\'\3\2\2\2"+
-		"\u00d8\u00d9\7)\2\2\u00d9)\3\2\2\2\31/\63DLSX^cuy}\u0084\u0088\u008b\u0093"+
-		"\u009b\u00a7\u00b2\u00b4\u00be\u00c4\u00cc\u00d0";
+		"\4\23\t\23\4\24\t\24\4\25\t\25\3\2\5\2,\n\2\3\2\3\2\7\2\60\n\2\f\2\16"+
+		"\2\63\13\2\3\2\5\2\66\n\2\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\5\3\5\3\5"+
+		"\3\5\3\6\3\6\3\6\5\6G\n\6\3\6\3\6\3\6\3\6\7\6M\n\6\f\6\16\6P\13\6\3\6"+
+		"\3\6\3\7\3\7\5\7V\n\7\3\b\3\b\3\b\5\b[\n\b\3\b\3\b\3\b\3\b\5\ba\n\b\3"+
+		"\b\3\b\3\b\5\bf\n\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3"+
+		"\t\3\t\3\t\3\t\5\tx\n\t\3\n\3\n\5\n|\n\n\3\n\3\n\5\n\u0080\n\n\3\13\3"+
+		"\13\3\13\7\13\u0085\n\13\f\13\16\13\u0088\13\13\3\f\5\f\u008b\n\f\3\f"+
+		"\5\f\u008e\n\f\3\f\3\f\3\f\3\r\3\r\3\r\5\r\u0096\n\r\3\16\3\16\3\16\3"+
+		"\16\3\16\3\16\5\16\u009e\n\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
+		"\3\16\3\16\5\16\u00aa\n\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
+		"\5\16\u00b5\n\16\5\16\u00b7\n\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3"+
+		"\17\5\17\u00c1\n\17\3\17\3\17\7\17\u00c5\n\17\f\17\16\17\u00c8\13\17\3"+
+		"\20\3\20\3\20\3\20\3\20\5\20\u00cf\n\20\3\21\3\21\5\21\u00d3\n\21\3\22"+
+		"\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\25\2\2\26\2\4\6\b\n\f\16\20\22\24"+
+		"\26\30\32\34\36 \"$&(\2\4\4\2\24\24\26\26\3\2()\2\u00ea\2+\3\2\2\2\4\67"+
+		"\3\2\2\2\6;\3\2\2\2\b?\3\2\2\2\nC\3\2\2\2\fU\3\2\2\2\16W\3\2\2\2\20w\3"+
+		"\2\2\2\22\177\3\2\2\2\24\u0081\3\2\2\2\26\u008a\3\2\2\2\30\u0095\3\2\2"+
+		"\2\32\u00b6\3\2\2\2\34\u00c0\3\2\2\2\36\u00c9\3\2\2\2 \u00d2\3\2\2\2\""+
+		"\u00d4\3\2\2\2$\u00d6\3\2\2\2&\u00d8\3\2\2\2(\u00da\3\2\2\2*,\5\4\3\2"+
+		"+*\3\2\2\2+,\3\2\2\2,\65\3\2\2\2-\66\5\6\4\2.\60\5\b\5\2/.\3\2\2\2\60"+
+		"\63\3\2\2\2\61/\3\2\2\2\61\62\3\2\2\2\62\64\3\2\2\2\63\61\3\2\2\2\64\66"+
+		"\5\n\6\2\65-\3\2\2\2\65\61\3\2\2\2\65\66\3\2\2\2\66\3\3\2\2\2\678\7\f"+
+		"\2\289\5$\23\29:\7&\2\2:\5\3\2\2\2;<\7\r\2\2<=\5(\25\2=>\7&\2\2>\7\3\2"+
+		"\2\2?@\7\16\2\2@A\5&\24\2AB\7&\2\2B\t\3\2\2\2CF\b\6\1\2DE\7\20\2\2EG\b"+
+		"\6\1\2FD\3\2\2\2FG\3\2\2\2GH\3\2\2\2HI\7\17\2\2IJ\5(\25\2JN\7\36\2\2K"+
+		"M\5\f\7\2LK\3\2\2\2MP\3\2\2\2NL\3\2\2\2NO\3\2\2\2OQ\3\2\2\2PN\3\2\2\2"+
+		"QR\7\37\2\2R\13\3\2\2\2SV\5\16\b\2TV\5\20\t\2US\3\2\2\2UT\3\2\2\2V\r\3"+
+		"\2\2\2WZ\b\b\1\2XY\7\20\2\2Y[\b\b\1\2ZX\3\2\2\2Z[\3\2\2\2[\\\3\2\2\2\\"+
+		"]\5\22\n\2]^\5(\25\2^`\7\34\2\2_a\5\24\13\2`_\3\2\2\2`a\3\2\2\2ab\3\2"+
+		"\2\2be\7\35\2\2cd\7\'\2\2df\7\6\2\2ec\3\2\2\2ef\3\2\2\2fg\3\2\2\2gh\7"+
+		"&\2\2h\17\3\2\2\2ij\7\22\2\2jk\7\6\2\2kl\5(\25\2lm\7\'\2\2mn\7*\2\2no"+
+		"\7&\2\2ox\3\2\2\2pq\7\22\2\2qr\7\27\2\2rs\5(\25\2st\7\'\2\2tu\7+\2\2u"+
+		"v\7&\2\2vx\3\2\2\2wi\3\2\2\2wp\3\2\2\2x\21\3\2\2\2y{\6\n\2\2z|\7\23\2"+
+		"\2{z\3\2\2\2{|\3\2\2\2|}\3\2\2\2}\u0080\5\34\17\2~\u0080\7\21\2\2\177"+
+		"y\3\2\2\2\177~\3\2\2\2\u0080\23\3\2\2\2\u0081\u0086\5\26\f\2\u0082\u0083"+
+		"\7%\2\2\u0083\u0085\5\26\f\2\u0084\u0082\3\2\2\2\u0085\u0088\3\2\2\2\u0086"+
+		"\u0084\3\2\2\2\u0086\u0087\3\2\2\2\u0087\25\3\2\2\2\u0088\u0086\3\2\2"+
+		"\2\u0089\u008b\7\23\2\2\u008a\u0089\3\2\2\2\u008a\u008b\3\2\2\2\u008b"+
+		"\u008d\3\2\2\2\u008c\u008e\5\30\r\2\u008d\u008c\3\2\2\2\u008d\u008e\3"+
+		"\2\2\2\u008e\u008f\3\2\2\2\u008f\u0090\5\32\16\2\u0090\u0091\5(\25\2\u0091"+
+		"\27\3\2\2\2\u0092\u0096\7\25\2\2\u0093\u0094\6\r\3\2\u0094\u0096\t\2\2"+
+		"\2\u0095\u0092\3\2\2\2\u0095\u0093\3\2\2\2\u0096\31\3\2\2\2\u0097\u009d"+
+		"\6\16\4\3\u0098\u009e\7\3\2\2\u0099\u009e\7\27\2\2\u009a\u009b\5 \21\2"+
+		"\u009b\u009c\b\16\1\2\u009c\u009e\3\2\2\2\u009d\u0098\3\2\2\2\u009d\u0099"+
+		"\3\2\2\2\u009d\u009a\3\2\2\2\u009e\u00b7\3\2\2\2\u009f\u00b4\6\16\5\3"+
+		"\u00a0\u00b5\7\31\2\2\u00a1\u00b5\7\30\2\2\u00a2\u00b5\5\36\20\2\u00a3"+
+		"\u00a4\5$\23\2\u00a4\u00a5\b\16\1\2\u00a5\u00aa\3\2\2\2\u00a6\u00a7\5"+
+		"\34\17\2\u00a7\u00a8\b\16\1\2\u00a8\u00aa\3\2\2\2\u00a9\u00a3\3\2\2\2"+
+		"\u00a9\u00a6\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ac\6\16\6\3\u00ac\u00b5"+
+		"\3\2\2\2\u00ad\u00ae\5\"\22\2\u00ae\u00af\b\16\1\2\u00af\u00b5\3\2\2\2"+
+		"\u00b0\u00b1\5\34\17\2\u00b1\u00b2\7 \2\2\u00b2\u00b3\7!\2\2\u00b3\u00b5"+
+		"\3\2\2\2\u00b4\u00a0\3\2\2\2\u00b4\u00a1\3\2\2\2\u00b4\u00a2\3\2\2\2\u00b4"+
+		"\u00a9\3\2\2\2\u00b4\u00ad\3\2\2\2\u00b4\u00b0\3\2\2\2\u00b5\u00b7\3\2"+
+		"\2\2\u00b6\u0097\3\2\2\2\u00b6\u009f\3\2\2\2\u00b7\33\3\2\2\2\u00b8\u00c1"+
+		"\7\3\2\2\u00b9\u00c1\7\27\2\2\u00ba\u00c1\7\30\2\2\u00bb\u00c1\7\31\2"+
+		"\2\u00bc\u00c1\5\36\20\2\u00bd\u00be\5\"\22\2\u00be\u00bf\b\17\1\2\u00bf"+
+		"\u00c1\3\2\2\2\u00c0\u00b8\3\2\2\2\u00c0\u00b9\3\2\2\2\u00c0\u00ba\3\2"+
+		"\2\2\u00c0\u00bb\3\2\2\2\u00c0\u00bc\3\2\2\2\u00c0\u00bd\3\2\2\2\u00c1"+
+		"\u00c6\3\2\2\2\u00c2\u00c3\7 \2\2\u00c3\u00c5\7!\2\2\u00c4\u00c2\3\2\2"+
+		"\2\u00c5\u00c8\3\2\2\2\u00c6\u00c4\3\2\2\2\u00c6\u00c7\3\2\2\2\u00c7\35"+
+		"\3\2\2\2\u00c8\u00c6\3\2\2\2\u00c9\u00ce\7\32\2\2\u00ca\u00cb\7\"\2\2"+
+		"\u00cb\u00cc\5\34\17\2\u00cc\u00cd\7#\2\2\u00cd\u00cf\3\2\2\2\u00ce\u00ca"+
+		"\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf\37\3\2\2\2\u00d0\u00d3\7\33\2\2\u00d1"+
+		"\u00d3\5$\23\2\u00d2\u00d0\3\2\2\2\u00d2\u00d1\3\2\2\2\u00d3!\3\2\2\2"+
+		"\u00d4\u00d5\5$\23\2\u00d5#\3\2\2\2\u00d6\u00d7\t\3\2\2\u00d7%\3\2\2\2"+
+		"\u00d8\u00d9\7(\2\2\u00d9\'\3\2\2\2\u00da\u00db\7)\2\2\u00db)\3\2\2\2"+
+		"\32+\61\65FNUZ`ew{\177\u0086\u008a\u008d\u0095\u009d\u00a9\u00b4\u00b6"+
+		"\u00c0\u00c6\u00ce\u00d2";
 	public static final ATN _ATN =
 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
 	static {

+ 1 - 1
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlVisitor.java → aidl-to-json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/AidlVisitor.java

@@ -1,4 +1,4 @@
-// Generated from E:/subjects/Compilers Principle/exp/2/antlr\Aidl.g4 by ANTLR 4.9.1
+// Generated from E:/subjects/Compilers Principle/exp/antlr/aidl-to-json/src/main/resources/grammar\Aidl.g4 by ANTLR 4.9.1
 package xyz.ignatz.antlr.aidl.analyzer;
 import org.antlr.v4.runtime.tree.ParseTreeVisitor;
 

+ 0 - 0
aidl2json/src/main/resources/example/aidl/AudioPolicyConfig.aidl → aidl-to-json/src/main/resources/example/aidl/AudioPolicyConfig.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IAccessibilityInteractionConnection.aidl → aidl-to-json/src/main/resources/example/aidl/IAccessibilityInteractionConnection.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IAccessibilityServiceConnection.aidl → aidl-to-json/src/main/resources/example/aidl/IAccessibilityServiceConnection.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IBluetoothGatt.aidl → aidl-to-json/src/main/resources/example/aidl/IBluetoothGatt.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IBluetoothHeadsetClient.aidl → aidl-to-json/src/main/resources/example/aidl/IBluetoothHeadsetClient.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IConnectionServiceAdapter.aidl → aidl-to-json/src/main/resources/example/aidl/IConnectionServiceAdapter.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IFingerprintDaemonCallback.aidl → aidl-to-json/src/main/resources/example/aidl/IFingerprintDaemonCallback.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/INetworkManagementService.aidl → aidl-to-json/src/main/resources/example/aidl/INetworkManagementService.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IOnAppsChangedListener.aidl → aidl-to-json/src/main/resources/example/aidl/IOnAppsChangedListener.aidl


+ 0 - 0
aidl2json/src/main/resources/example/aidl/IUserManager.aidl → aidl-to-json/src/main/resources/example/aidl/IUserManager.aidl


+ 1 - 1
aidl2json/src/main/resources/grammar/Aidl.g4 → aidl-to-json/src/main/resources/grammar/Aidl.g4

@@ -1,4 +1,4 @@
-src.main.resources.grammar Aidl;
+grammar Aidl;
 
 @members {
     int oneway = 0;

Разница между файлами не показана из-за своего большого размера
+ 0 - 118
aidl2json/src/main/java/xyz/ignatz/antlr/aidl/analyzer/Aidl.interp


+ 19 - 0
java-control-flow/pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>antlr</artifactId>
+        <groupId>xyz.ignatz</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>java-control-flow</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 18 - 0
pom.xml

@@ -6,7 +6,25 @@
 
     <groupId>xyz.ignatz</groupId>
     <artifactId>antlr</artifactId>
+    <packaging>pom</packaging>
     <version>1.0-SNAPSHOT</version>
+    <modules>
+        <module>java-control-flow</module>
+        <module>aidl-to-json</module>
+        <module>utils</module>
+    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr4</artifactId>
+            <version>4.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>xyz.ignatz</groupId>
+            <artifactId>utils</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>

+ 19 - 0
utils/pom.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>antlr</artifactId>
+        <groupId>xyz.ignatz</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>utils</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 1 - 1
aidl2json/src/main/java/xyz/ignatz/tools/MapToJson.java → utils/src/main/java/xyz/ignatz/utils/MapToJson.java

@@ -1,4 +1,4 @@
-package xyz.ignatz.tools;
+package xyz.ignatz.utils;
 
 import java.util.ArrayList;
 import java.util.Map;

Некоторые файлы не были показаны из-за большого количества измененных файлов