From 91e961e70a5423491a14c6233fb094321413de99 Mon Sep 17 00:00:00 2001 From: wangshi Date: Mon, 10 Mar 2025 17:10:31 +0800 Subject: [PATCH 01/26] add parse event Signed-off-by: wangshi --- .../src/main/java/parse/ParseBase.java | 45 +++++++++++++++++++ .../ohosgen/src/main/java/parse/ParseC.java | 34 +++++--------- .../src/main/java/parse/ParseTask.java | 2 +- .../{ParseInfo.java => ParseTaskInfo.java} | 23 +++++++--- .../ohosgen/src/main/java/parse/ParseTs.java | 32 ++++--------- 5 files changed, 81 insertions(+), 55 deletions(-) rename src/intellij_plugin/ohosgen/src/main/java/parse/{ParseInfo.java => ParseTaskInfo.java} (81%) diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java index 73ae1608..5f1d86bc 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java @@ -15,10 +15,14 @@ package parse; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import grammar.*; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; +import utils.BaseEvent; import utils.BaseListener; +import utils.Constants; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -35,6 +39,10 @@ import java.util.concurrent.CopyOnWriteArrayList; public abstract class ParseBase { protected String fileContent; protected CharStream fcStream; + protected String status; + protected String procMsg; + protected int progress; + protected int totalProgress = Constants.HUNDRED_PERCENT; /** * 存储所有监听回调 */ @@ -54,6 +62,43 @@ public abstract class ParseBase { listeners.add(listener); } + /** + * send event + * + * @param status 状态 + * @param msg 消息 + * @param process 进度 + */ + protected void SendEvent(String status, String msg, int process) { + this.procMsg = msg; + this.status = status; + this.progress = process; + doNotify(status, msg, process); + } + + /** + * notify parse info + * + * @param status 状态 + * @param msg 消息 + * @param process 进度 + */ + protected void doNotify(String status, String msg, int process) { + BaseEvent pcEvent = new BaseEvent(this); + pcEvent.setEventMsg("parsec complete"); + ParseTaskInfo pi = new ParseTaskInfo(status, msg, process, this.totalProgress); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + pcEvent.setEventMsg(jsonStr); + } catch (JsonProcessingException e) { + System.out.println("json process error: " + e.getMessage()); + } + listeners.forEach(listener -> { + listener.onEvent(pcEvent); + }); + } + /** * 根据文件名解析文件 * diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseC.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseC.java index 94222c95..ed81bef6 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseC.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseC.java @@ -15,7 +15,10 @@ package parse; -import antlr.*; +import antlr.cpp.CPP14CustomListener; +import antlr.cpp.CPP14ErrorListener; +import antlr.cpp.CPP14Lexer; +import antlr.cpp.CPP14Parser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import grammar.*; @@ -24,10 +27,9 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTreeWalker; +import utils.Constants; import utils.BaseEvent; -import java.lang.reflect.Type; - /** *

类名:该类用于xxx

* description ${description} @@ -48,7 +50,7 @@ public class ParseC extends ParseBase { System.out.println("parseFile: " + filePath); BaseEvent pcEvent = new BaseEvent(this); pcEvent.setEventMsg("parsec complete"); - ParseInfo pi = new ParseInfo("start", "parse c starting", 0, 100); + ParseTaskInfo pi = new ParseTaskInfo("start", "parse c starting", 0, 100); ObjectMapper mapper = new ObjectMapper(); try { String jsonStr = mapper.writeValueAsString(pi); @@ -71,7 +73,7 @@ public class ParseC extends ParseBase { System.out.println("c parseContent"); BaseEvent pcEvent = new BaseEvent(this); pcEvent.setEventMsg("parsec complete"); - ParseInfo pi = new ParseInfo("start", "parse c content starting", 0, 100); + ParseTaskInfo pi = new ParseTaskInfo("start", "parse c content starting", 0, 100); ObjectMapper mapper = new ObjectMapper(); try { String jsonStr = mapper.writeValueAsString(pi); @@ -93,7 +95,7 @@ public class ParseC extends ParseBase { public void parseCStream(CharStream fileCStream) { System.out.println("c/cpp parse char stream"); this.fcStream = fileCStream; - + SendEvent(Constants.START_STATUS, Constants.C_CPP_START_MSG, 50); try { // 初始化词法分析器 CPP14Lexer lexer = new CPP14Lexer(this.fcStream); @@ -107,28 +109,12 @@ public class ParseC extends ParseBase { ParseTreeWalker walker = new ParseTreeWalker(); walker.walk(tsc, tree); - System.out.println("c/cpp parse char stream finish"); + System.out.println(); } catch (RecognitionException e) { System.out.println("parse cstream e.printStackTrace(): " + e.getMessage()); } - doNotify(); - } - - private void doNotify() { - BaseEvent pcEvent = new BaseEvent(this); - pcEvent.setEventMsg("parsec complete"); - ParseInfo pi = new ParseInfo("start", "parse ts content starting", 0, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - pcEvent.setEventMsg(jsonStr); - } catch (JsonProcessingException e) { - System.out.println("json process error: " + e.getMessage()); - } - listeners.forEach(listener -> { - listener.onEvent(pcEvent); - }); + SendEvent(Constants.COMPLETE_STATUS, Constants.C_CPP_COMPLETE_MSG, 50); } @Override diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTask.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTask.java index 49934105..03e5b850 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTask.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTask.java @@ -131,7 +131,7 @@ public class ParseTask extends Task.Backgroundable implements BaseListener { System.out.println("on event: " + jsonStr); ObjectMapper mapper = new ObjectMapper(); try { - ParseInfo pi2 = mapper.readValue(jsonStr, ParseInfo.class); + ParseTaskInfo pi2 = mapper.readValue(jsonStr, ParseTaskInfo.class); } catch (JsonProcessingException e) { System.out.println("Test fromJson catch: " + e.getMessage()); } diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseInfo.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTaskInfo.java similarity index 81% rename from src/intellij_plugin/ohosgen/src/main/java/parse/ParseInfo.java rename to src/intellij_plugin/ohosgen/src/main/java/parse/ParseTaskInfo.java index fa6dd31b..6b1c6d1c 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseInfo.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTaskInfo.java @@ -24,16 +24,18 @@ package parse; * @version 1.0 * @since 2025-02-28 */ -public class ParseInfo { +public class ParseTaskInfo { private String status; private String message; + private int currentType; + private String jsonData; private int progress; private int total; /** * 构造函数 */ - public ParseInfo() {} + public ParseTaskInfo() {} /** * 有参数构造函数 @@ -43,11 +45,18 @@ public class ParseInfo { * @param vp 进度 * @param vt 总数 */ - public ParseInfo(String vs, String vm, int vp, int vt) { - status = vs; - message = vm; - progress = vp; - total = vt; + public ParseTaskInfo(String vs, String vm, int vp, int vt) { + this.status = vs; + this.message = vm; + this.progress = vp; + this.total = vt; + } + + public ParseTaskInfo(String vs, String vm, int ct, String jd) { + this.status = vs; + this.message = vm; + this.currentType = ct; + this.jsonData = jd; } /** diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTs.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTs.java index 4d1208a6..ed985e45 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTs.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseTs.java @@ -15,10 +15,10 @@ package parse; -import antlr.TypeScriptCustomListener; -import antlr.TypeScriptErrorListener; -import antlr.TypeScriptLexer; -import antlr.TypeScriptParser; +import antlr.typescript.TypeScriptCustomListener; +import antlr.typescript.TypeScriptErrorListener; +import antlr.typescript.TypeScriptLexer; +import antlr.typescript.TypeScriptParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import grammar.*; @@ -28,6 +28,7 @@ import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTreeWalker; import utils.BaseEvent; +import utils.Constants; /** *

类名:该类用于xxx

@@ -49,7 +50,7 @@ public class ParseTs extends ParseBase { System.out.println("parseFile: " + filePath); BaseEvent pcEvent = new BaseEvent(this); pcEvent.setEventMsg("parsec complete"); - ParseInfo pi = new ParseInfo("start", "parse ts starting", 0, 100); + ParseTaskInfo pi = new ParseTaskInfo("start", "parse ts starting", 0, 100); ObjectMapper mapper = new ObjectMapper(); try { String jsonStr = mapper.writeValueAsString(pi); @@ -71,7 +72,7 @@ public class ParseTs extends ParseBase { public void parseContent(String fileContent) { System.out.println("ts parseContent"); this.fileContent = fileContent; - doNotify(); + SendEvent(Constants.COMPLETE_STATUS, Constants.TS_COMPLETE_MSG, 50); } /** @@ -84,6 +85,7 @@ public class ParseTs extends ParseBase { System.out.println("ts parse char stream start"); this.fcStream = fileCStream; + SendEvent(Constants.START_STATUS, Constants.TS_START_MSG, 0); try { // 初始化词法分析器 TypeScriptLexer lexer = new TypeScriptLexer(this.fcStream); @@ -102,23 +104,7 @@ public class ParseTs extends ParseBase { System.out.println("parse cstream e.printStackTrace(): " + e.getMessage()); } - doNotify(); - } - - private void doNotify() { - BaseEvent pcEvent = new BaseEvent(this); - pcEvent.setEventMsg("parsec complete"); - ParseInfo pi = new ParseInfo("start", "parse ts content starting", 0, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - pcEvent.setEventMsg(jsonStr); - } catch (JsonProcessingException e) { - System.out.println("json process error: " + e.getMessage()); - } - listeners.forEach(listener -> { - listener.onEvent(pcEvent); - }); + SendEvent(Constants.COMPLETE_STATUS, Constants.TS_COMPLETE_MSG, 50); } @Override -- Gitee From dba8832d5f2fabf1069291bbf24a6a951623662c Mon Sep 17 00:00:00 2001 From: wangshi Date: Mon, 10 Mar 2025 17:12:13 +0800 Subject: [PATCH 02/26] add parse task info test Signed-off-by: wangshi --- .../test/java/parse/ParseTaskInfoTest.java | 214 ++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/test/java/parse/ParseTaskInfoTest.java diff --git a/src/intellij_plugin/ohosgen/src/test/java/parse/ParseTaskInfoTest.java b/src/intellij_plugin/ohosgen/src/test/java/parse/ParseTaskInfoTest.java new file mode 100644 index 00000000..d03a4236 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/test/java/parse/ParseTaskInfoTest.java @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package parse; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +/** + *

类名:该类用于xxx

+ * description + * + * @author Administrator + * date 2025-02-28 + * @version 1.0 + * @since 2025-02-28 + */ +class ParseTaskInfoTest { + + @BeforeEach + void setUp() { + } + + @AfterEach + void tearDown() { + } + + @Test + void setStatus() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setStatus: " + jsonStr); + pi.setStatus("start"); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setStatus: " + jsonStr); + assertEquals("start", pi.getStatus()); + } catch (JsonProcessingException e) { + System.out.println("Test setStatus catch: " + e.getMessage()); + fail(); + } + } + + @Test + void getStatus() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getStatus: " + jsonStr); + String value = pi.getStatus(); + jsonStr = mapper.writeValueAsString(pi); + assertEquals("complete", value); + System.out.println("Test getStatus: " + value); + } catch (JsonProcessingException e) { + System.out.println("Test getStatus catch: " + e.getMessage()); + fail(); + } + } + + @Test + void setMessage() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setMessage: " + jsonStr); + pi.setMessage("start parse c"); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setMessage: " + jsonStr); + assertEquals("start parse c", pi.getMessage()); + } catch (JsonProcessingException e) { + System.out.println("Test setMessage catch: " + e.getMessage()); + fail(); + } + } + + @Test + void getMessage() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getMessage: " + jsonStr); + String value = pi.getMessage(); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getMessage: " + value); + assertEquals("parse c finished", value); + } catch (JsonProcessingException e) { + System.out.println("Test getMessage catch: " + e.getMessage()); + fail(); + } + } + + @Test + void setProgress() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setProgress: " + jsonStr); + pi.setProgress(0); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setProgress: " + jsonStr); + assertEquals(0, pi.getProgress()); + } catch (JsonProcessingException e) { + System.out.println("Test setProgress catch: " + e.getMessage()); + fail(); + } + } + + @Test + void getProgress() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getProgress: " + jsonStr); + int value = pi.getProgress(); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getProgress: " + value); + assertEquals(100, value); + } catch (JsonProcessingException e) { + System.out.println("Test getProgress catch: " + e.getMessage()); + fail(); + } + } + + @Test + void setTotal() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setTotal: " + jsonStr); + pi.setTotal(0); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test setTotal: " + jsonStr); + assertEquals(0, pi.getTotal()); + } catch (JsonProcessingException e) { + System.out.println("Test setTotal catch: " + e.getMessage()); + fail(); + } + } + + @Test + void getTotal() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getTotal: " + jsonStr); + int value = pi.getTotal(); + jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getTotal: " + value); + assertEquals(100, value); + } catch (JsonProcessingException e) { + System.out.println("Test getTotal catch: " + e.getMessage()); + fail(); + } + } + + @Test + void toJson() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + String expStr = "{\"status\":\"complete\",\"message\":\"parse c finished\",\"progress\":100,\"total\":100}"; + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test getTotal: " + jsonStr); + assertEquals(expStr, jsonStr); + } catch (JsonProcessingException e) { + System.out.println("Test getTotal catch: " + e.getMessage()); + fail(); + } + } + + @Test + void fromJson() { + ParseTaskInfo pi = new ParseTaskInfo("complete", "parse c finished", 100, 100); + ObjectMapper mapper = new ObjectMapper(); + try { + String jsonStr = mapper.writeValueAsString(pi); + System.out.println("Test fromJson: " + jsonStr); + ParseTaskInfo pi2 = mapper.readValue(jsonStr, ParseTaskInfo.class); + + assertEquals("complete", pi2.getStatus()); + assertEquals("parse c finished", pi2.getMessage()); + assertEquals(100, pi2.getProgress()); + assertEquals(100, pi2.getTotal()); + } catch (JsonProcessingException e) { + System.out.println("Test fromJson catch: " + e.getMessage()); + fail(); + } + } +} \ No newline at end of file -- Gitee From 9bb5704eae549c56e6ebf5230ffbb77550ffdf51 Mon Sep 17 00:00:00 2001 From: wangshi Date: Mon, 10 Mar 2025 17:13:04 +0800 Subject: [PATCH 03/26] delete parse task info test Signed-off-by: wangshi --- .../src/test/java/parse/ParseInfoTest.java | 214 ------------------ 1 file changed, 214 deletions(-) delete mode 100644 src/intellij_plugin/ohosgen/src/test/java/parse/ParseInfoTest.java diff --git a/src/intellij_plugin/ohosgen/src/test/java/parse/ParseInfoTest.java b/src/intellij_plugin/ohosgen/src/test/java/parse/ParseInfoTest.java deleted file mode 100644 index e64c76cb..00000000 --- a/src/intellij_plugin/ohosgen/src/test/java/parse/ParseInfoTest.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2025 Shenzhen Kaihong Digital. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package parse; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -/** - *

类名:该类用于xxx

- * description - * - * @author Administrator - * date 2025-02-28 - * @version 1.0 - * @since 2025-02-28 - */ -class ParseInfoTest { - - @BeforeEach - void setUp() { - } - - @AfterEach - void tearDown() { - } - - @Test - void setStatus() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setStatus: " + jsonStr); - pi.setStatus("start"); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setStatus: " + jsonStr); - assertEquals("start", pi.getStatus()); - } catch (JsonProcessingException e) { - System.out.println("Test setStatus catch: " + e.getMessage()); - fail(); - } - } - - @Test - void getStatus() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getStatus: " + jsonStr); - String value = pi.getStatus(); - jsonStr = mapper.writeValueAsString(pi); - assertEquals("complete", value); - System.out.println("Test getStatus: " + value); - } catch (JsonProcessingException e) { - System.out.println("Test getStatus catch: " + e.getMessage()); - fail(); - } - } - - @Test - void setMessage() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setMessage: " + jsonStr); - pi.setMessage("start parse c"); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setMessage: " + jsonStr); - assertEquals("start parse c", pi.getMessage()); - } catch (JsonProcessingException e) { - System.out.println("Test setMessage catch: " + e.getMessage()); - fail(); - } - } - - @Test - void getMessage() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getMessage: " + jsonStr); - String value = pi.getMessage(); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getMessage: " + value); - assertEquals("parse c finished", value); - } catch (JsonProcessingException e) { - System.out.println("Test getMessage catch: " + e.getMessage()); - fail(); - } - } - - @Test - void setProgress() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setProgress: " + jsonStr); - pi.setProgress(0); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setProgress: " + jsonStr); - assertEquals(0, pi.getProgress()); - } catch (JsonProcessingException e) { - System.out.println("Test setProgress catch: " + e.getMessage()); - fail(); - } - } - - @Test - void getProgress() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getProgress: " + jsonStr); - int value = pi.getProgress(); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getProgress: " + value); - assertEquals(100, value); - } catch (JsonProcessingException e) { - System.out.println("Test getProgress catch: " + e.getMessage()); - fail(); - } - } - - @Test - void setTotal() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setTotal: " + jsonStr); - pi.setTotal(0); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test setTotal: " + jsonStr); - assertEquals(0, pi.getTotal()); - } catch (JsonProcessingException e) { - System.out.println("Test setTotal catch: " + e.getMessage()); - fail(); - } - } - - @Test - void getTotal() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getTotal: " + jsonStr); - int value = pi.getTotal(); - jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getTotal: " + value); - assertEquals(100, value); - } catch (JsonProcessingException e) { - System.out.println("Test getTotal catch: " + e.getMessage()); - fail(); - } - } - - @Test - void toJson() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - String expStr = "{\"status\":\"complete\",\"message\":\"parse c finished\",\"progress\":100,\"total\":100}"; - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test getTotal: " + jsonStr); - assertEquals(expStr, jsonStr); - } catch (JsonProcessingException e) { - System.out.println("Test getTotal catch: " + e.getMessage()); - fail(); - } - } - - @Test - void fromJson() { - ParseInfo pi = new ParseInfo("complete", "parse c finished", 100, 100); - ObjectMapper mapper = new ObjectMapper(); - try { - String jsonStr = mapper.writeValueAsString(pi); - System.out.println("Test fromJson: " + jsonStr); - ParseInfo pi2 = mapper.readValue(jsonStr, ParseInfo.class); - - assertEquals("complete", pi2.getStatus()); - assertEquals("parse c finished", pi2.getMessage()); - assertEquals(100, pi2.getProgress()); - assertEquals(100, pi2.getTotal()); - } catch (JsonProcessingException e) { - System.out.println("Test fromJson catch: " + e.getMessage()); - fail(); - } - } -} \ No newline at end of file -- Gitee From 34266d644395cbdc6eb2ec72fe6fcad7d891faa9 Mon Sep 17 00:00:00 2001 From: wangshi Date: Mon, 10 Mar 2025 17:13:47 +0800 Subject: [PATCH 04/26] add constants Signed-off-by: wangshi --- .../src/main/java/utils/Constants.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java b/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java index ad3e577a..98499147 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java +++ b/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java @@ -25,4 +25,64 @@ package utils; * @version 1.0 */ public class Constants { + public static final int PARSE_C_CPP_LANGUAGE = 1; + public static final int PARSE_TS_LANGUAGE = 2; + + public static final int PARSE_TS_ABSTRACT = 1; + public static final int PARSE_TS_CLASS = 2; + public static final int PARSE_TS_ENUM = 3; + public static final int PARSE_TS_EXPORT = 4; + public static final int PARSE_TS_FUNCTION = 5; + public static final int PARSE_TS_GENERIC = 6; + public static final int PARSE_TS_GENERIC_CLASS = 7; + public static final int PARSE_TS_GENERIC_INTERFACE = 8; + public static final int PARSE_TS_IMPORT = 9; + public static final int PARSE_TS_INTERFACE = 10; + public static final int PARSE_TS_JS_CLASS = 11; + public static final int PARSE_TS_LOOP = 12; + public static final int PARSE_TS_MODULE = 13; + public static final int PARSE_TS_NON_NULL = 14; + public static final int PARSE_TS_OBJECT_INITIALIZER = 15; + public static final int PARSE_TS_STATEMENT = 16; + public static final int PARSE_TS_TEMPLATE_STRING = 17; + public static final int PARSE_TS_TYPE = 18; + public static final int PARSE_TS_VARIABLE = 19; + public static final int PARSE_TS_EXIT_TRANSLATION = 20; + + public static final int PARSE_C_CPP_CLASS = 51; + public static final int PARSE_C_CPP_ATTRIBUTE = 52; + public static final int PARSE_C_CPP_MEMBER = 53; + public static final int PARSE_C_CPP_FUNCTION = 54; + public static final int PARSE_C_CPP_ENUM = 55; + public static final int PARSE_C_CPP_TYPE = 56; + public static final int PARSE_C_CPP_TEMPLATE = 57; + public static final int PARSE_C_CPP_UNION = 58; + public static final int PARSE_C_CPP_STRUCT = 59; + public static final int PARSE_C_CPP_MACRO = 60; + public static final int PARSE_C_CPP_POINT = 61; + public static final int PARSE_C_CPP_PURE = 62; + public static final int PARSE_C_CPP_EXIT_TRANSLATION = 63; + + public static final int TEN_PERCENT = 10; + public static final int HUNDRED_PERCENT = 100; + public static final int THOUSAND_PERCENT = 1000; + + public static final String START_STATUS = "start"; + public static final String PAUSE_STATUS = "pause"; + public static final String RESUME_STATUS = "resume"; + public static final String STOP_STATUS = "stop"; + public static final String COMPLETE_STATUS = "complete"; + public static final String FINISH_STATUS = "finish"; + + public static final String C_CPP_START_MSG = "c/cpp parse char stream start"; + public static final String TS_START_MSG = "ts parse char stream start"; + public static final String C_CPP_PAUSE_MSG = "c/cpp parse char stream pause"; + public static final String TS_PAUSE_MSG = "ts parse char stream pause"; + public static final String C_CPP_RESUME_MSG = "c/cpp parse char stream resume"; + public static final String TS_RESUME_MSG = "ts parse char stream resume"; + public static final String C_CPP_FINISH_MSG = "c/cpp parse char stream finish"; + public static final String TS_FINISH_MSG = "ts parse char stream finish"; + public static final String C_CPP_COMPLETE_MSG = "c/cpp parse char stream complete"; + public static final String TS_COMPLETE_MSG = "ts parse char stream complete"; + } -- Gitee From e35af27c2a2250ec26d6545d027bb005792ec1ab Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 09:59:22 +0800 Subject: [PATCH 05/26] refactory ts listener Signed-off-by: wangshi --- .../java/antlr/TypeScriptCustomListener.java | 272 ------------------ 1 file changed, 272 deletions(-) delete mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomListener.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomListener.java deleted file mode 100644 index 0d502fb1..00000000 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomListener.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (c) 2025 Shenzhen Kaihong Digital. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package antlr; - -import org.antlr.v4.runtime.tree.ParseTree; - -import java.util.List; - -/** - *

类名:该类用于xxx

- * description typescript custom visitor - * - * @author Administrator - * date 2025-02-28 - * @version 1.0 - * @since 2025-02-28 - */ -public class TypeScriptCustomListener extends TypeScriptParserBaseListener { - @Override - public void enterVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx) { - String varName = ctx.identifierOrKeyWord().getText(); - System.out.println("变量名: " + varName); - System.out.println("var : " + ctx.getText()); - String typeAnno = ctx.typeAnnotation() != null ? ctx.typeAnnotation().getText() : ""; - System.out.println("type : " + typeAnno); - List secList = ctx.singleExpression(); - for (TypeScriptParser.SingleExpressionContext sec : secList) { - String value = sec.getText(); - System.out.println("single : " + value); - int cnt = sec.getChildCount(); - System.out.println("single child cnt: " + cnt); - for (int i = 0; i < cnt; i++) { - ParseTree pt = sec.getChild(i); - System.out.println("single child pt: " + pt.getText()); - } - } - - System.out.println("------------------------------"); - } - - @Override - public void enterConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx) { - // 提取构造函数参数列表 - String res = ctx.formalParameterList().getText(); - System.out.println("Construct: " + res); - - } - - @Override - public void enterMethodProperty(TypeScriptParser.MethodPropertyContext ctx) { - super.enterMethodProperty(ctx); - String res = ctx.toString(); - System.out.println("Method: " + res); - } - - @Override - public void enterFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { - super.enterFunctionDeclaration(ctx); - // 提取函数名、参数等信息 - String funcName = ctx.identifier().getText(); - System.out.println("Function: " + funcName + " all: " + ctx.getText()); - - String callSign = ctx.callSignature().getText(); - System.out.println("Function callSign: " + callSign); - String typeAnno = ctx.callSignature().typeAnnotation().getText(); - System.out.println("Function typeAnno: " + typeAnno); - if (ctx.callSignature().parameterList() != null) { - List plc = ctx.callSignature().parameterList().parameter(); - for (TypeScriptParser.ParameterContext pc : plc) { - System.out.println("Function param: " + pc.getText()); - TypeScriptParser. RequiredParameterContext rpc = pc.requiredParameter(); - String ta = rpc.typeAnnotation().getText(); - String iop = rpc.identifierOrPattern().getText(); - System.out.println("Function type: " + ta + " name: " + iop); - } - } - System.out.println("--------------------"); - } - - @Override - public void enterClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx) { - super.enterClassDeclaration(ctx); - // 提取类名、方法、属性等信息 - String className = ctx.identifier().getText(); - System.out.println("Class: " + className); - - - // 获取修饰符(如public/abstract) - TypeScriptParser.DecoratorListContext dlc = ctx.decoratorList(); - if (dlc != null) { - System.out.println("Class decoratorList: " + dlc.getText()); - } - // 处理继承关系(extends/implements) - TypeScriptParser.ClassHeritageContext heritage = ctx.classHeritage(); - System.out.println("Class heritage: " + heritage.getText()); - } - - @Override - public void enterClassElement(TypeScriptParser.ClassElementContext ctx) { - super.enterClassElement(ctx); - System.out.println("Class element: " + ctx.getText()); - TypeScriptParser.StatementContext sc = ctx.statement(); - if (sc != null) { - System.out.println("Class state: " + sc.getText()); - } - - TypeScriptParser.PropertyMemberDeclarationContext pmdc = ctx.propertyMemberDeclaration(); - if (pmdc != null) { - System.out.println("Class property: " + pmdc.getText()); - } - } - - @Override - public void enterMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx) { - super.enterMethodDeclarationExpression(ctx); - System.out.println("Method property: " + ctx.getText()); - String propertyName = ctx.propertyName().getText(); - System.out.println("Method name: " + propertyName); - String callSign = ctx.callSignature().getText(); - System.out.println("Method callSign: " + callSign); - String typeAnno = ctx.callSignature().typeAnnotation().getText(); - System.out.println("Method typeAnno: " + typeAnno); - List plc = ctx.callSignature().parameterList().parameter(); - for (TypeScriptParser.ParameterContext pc : plc) { - System.out.println("Method param: " + pc.getText()); - TypeScriptParser. RequiredParameterContext rpc = pc.requiredParameter(); - String ta = rpc.typeAnnotation().getText(); - String iop = rpc.identifierOrPattern().getText(); - System.out.println("Method type: " + ta + " name: " + iop); - } - int cnt = ctx.getChildCount(); - System.out.println("Method param cnt: " + cnt); - } - - @Override - public void enterPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx) { - super.enterPropertyDeclarationExpression(ctx); - System.out.println("Property property: " + ctx.getText()); - String propertyName = ctx.propertyName().getText(); - String typeName = ctx.typeAnnotation().getText(); - System.out.println("Property name: " + propertyName + " type: " + typeName); - } - - @Override - public void enterTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx) { - super.enterTypeAliasDeclaration(ctx); - String typeName = ctx.identifier().getText(); - System.out.println("Type: " + typeName); - TypeScriptParser.TypeParametersContext tpc = ctx.typeParameters(); - if (tpc != null) { - System.out.println("Type params: " + tpc.getText()); - } - TypeScriptParser.Type_Context typeContext = ctx.type_(); - if (typeContext != null) { - System.out.println("Type type_: " + typeContext.getText()); - - TypeScriptParser.UnionOrIntersectionOrPrimaryTypeContext upt = - typeContext.unionOrIntersectionOrPrimaryType(); - if (upt != null) { - System.out.println("Type uoiop: " + upt.getText()); - } - TypeScriptParser.TypeGenericContext tgc = typeContext.typeGeneric(); - if (tgc != null) { - System.out.println("Type typeGeneric: " + tgc.getText()); - } - TypeScriptParser.ConstructorTypeContext ctc = typeContext.constructorType(); - if (ctc != null) { - System.out.println("Type constructorType: " + ctc.getText()); - } - TypeScriptParser.FunctionTypeContext ftc = typeContext.functionType(); - if (ftc != null) { - System.out.println("Type functionType: " + ftc.getText()); - } - } - - System.out.println("-------------------"); - } - - @Override - public void enterEnumBody(TypeScriptParser.EnumBodyContext ctx) { - super.enterEnumBody(ctx); - System.out.println("find Enum Body: "); - String enumName = ctx.getText(); - System.out.println("Enum: " + enumName); - } - - @Override - public void enterEnumMemberList(TypeScriptParser.EnumMemberListContext ctx) { - super.enterEnumMemberList(ctx); - List memList = ctx.enumMember(); - for (TypeScriptParser.EnumMemberContext enumMemberContext : memList) { - String memName = enumMemberContext.getText(); - System.out.println("Enum mem: " + memName); - } - } - - @Override - public void enterEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx) { - super.enterEnumDeclaration(ctx); - System.out.println("find Enum Declare: "); - String res = ""; - String enumName = ctx.identifier().getText(); - res += "Enum: " + enumName; - System.out.println("Enum name: " + res); - - List members = ctx.enumBody().enumMemberList().enumMember(); - for (TypeScriptParser.EnumMemberContext member : members) { - res += " , " + member.getText(); - } - System.out.println("Enum: " + res); - } - - @Override - public void enterNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx) { - super.enterNamespaceDeclaration(ctx); - System.out.println("find namespace Declare: " + ctx.toString()); - } - - @Override - public void enterInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx) { - super.enterInterfaceDeclaration(ctx); - System.out.println("find interface Declare: " + ctx.getText()); - String interfaceName = ctx.identifier().getText(); - System.out.println("interface name: " + interfaceName); - TypeScriptParser.ObjectTypeContext otc = ctx.objectType(); - TypeScriptParser.TypeBodyContext tbc = otc.typeBody(); - TypeScriptParser.TypeMemberListContext tlc = tbc.typeMemberList(); - List tmcList = tlc.typeMember(); - for (TypeScriptParser.TypeMemberContext tmc : tmcList) { - String callSign = tmc.callSignature().getText(); - System.out.println("interface callSign: " + callSign); - String typeAnno = tmc.callSignature().typeAnnotation().getText(); - System.out.println("interface typeAnno: " + typeAnno); - List plc = tmc.callSignature().parameterList().parameter(); - for (TypeScriptParser.ParameterContext pc : plc) { - System.out.println("interface param: " + pc.getText()); - TypeScriptParser. RequiredParameterContext rpc = pc.requiredParameter(); - String ta = rpc.typeAnnotation().getText(); - String iop = rpc.identifierOrPattern().getText(); - System.out.println("interface type: " + ta + " name: " + iop); - } - } - System.out.println("----------------"); - } - - @Override - public void enterAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx) { - super.enterAbstractDeclaration(ctx); - System.out.println("find abstract Declare: " + ctx.toString()); - } - - @Override - public void enterExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx) { - super.enterExportDeclaration(ctx); - System.out.println("find export Declare: " + ctx.toString()); - } - - -} -- Gitee From bd530f3759c1a44835316281e1e842206600b3df Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 09:59:43 +0800 Subject: [PATCH 06/26] refactory ts visitor Signed-off-by: wangshi --- .../java/antlr/TypeScriptCustomVisitor.java | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomVisitor.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomVisitor.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomVisitor.java deleted file mode 100644 index a2fb589b..00000000 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptCustomVisitor.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2025 Shenzhen Kaihong Digital. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package antlr; - -import java.util.List; -import java.util.ArrayList; - -/** - *

类名:该类用于xxx

- * description typescript custom visitor - * - * @author Administrator - * date 2025-02-28 - * @version 1.0 - * @since 2025-02-28 - */ -public class TypeScriptCustomVisitor extends TypeScriptParserBaseVisitor { - private List functionNames = new ArrayList<>(); - - public List getFunctionNames() { return functionNames; } - - @Override - public Void visitFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { - functionNames.add(ctx.identifier().getText()); - return super.visitFunctionDeclaration(ctx); - } -} -- Gitee From afcc174090fffe756bef2977d51bf6e85f5a4387 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:00:05 +0800 Subject: [PATCH 07/26] refactory ts error Signed-off-by: wangshi --- .../java/antlr/TypeScriptErrorListener.java | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptErrorListener.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptErrorListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptErrorListener.java deleted file mode 100644 index 08215ac7..00000000 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptErrorListener.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2025 Shenzhen Kaihong Digital. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package antlr; - -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.misc.IntervalSet; - -import java.util.Locale; - -/** - *

类名:该类用于xxx

- * description typescript error listener - * - * @author Administrator - * date 2025-02-28 - * @version 1.0 - * @since 2025-02-28 - */ -public class TypeScriptErrorListener extends BaseErrorListener { - @Override - public void syntaxError(Recognizer recognizer, - Object offendingSymbol, - int line, - int charPositionInLine, - String msg, - RecognitionException e) { - System.err.println("syntax error"); - System.out.println("syntax error"); - // 输出错误位置和消息 - String errorHeader = String.format(Locale.ROOT, "语法错误@行%d:%d - ", line, charPositionInLine + 1); - String errorDetail = String.format("符号 '%s' 无效,预期: %s", - offendingSymbol instanceof Token ? ((Token) offendingSymbol).getText() : "", - getExpectedTokens(recognizer, e)); - System.err.println(errorHeader + errorDetail + " | 错误详情: " + msg); - } - - private String getExpectedTokens(Recognizer recognizer, RecognitionException e) { - if (e == null) { - return "未知预期符号"; - } - IntervalSet expectedTokens = e.getExpectedTokens(); - return expectedTokens.toString(recognizer.getVocabulary()); - } -} \ No newline at end of file -- Gitee From df5bed1e0c0697faea3614b86afee6ead7291450 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:00:24 +0800 Subject: [PATCH 08/26] refactory ts listener Signed-off-by: wangshi --- .../typescript/TypeScriptCustomListener.java | 294 ++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomListener.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomListener.java new file mode 100644 index 00000000..2c4ee043 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomListener.java @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +import org.antlr.v4.runtime.tree.ParseTree; + +import java.util.List; + +/** + *

类名:该类用于xxx

+ * description typescript custom visitor + * + * @author Administrator + * date 2025-02-28 + * @version 1.0 + * @since 2025-02-28 + */ +public class TypeScriptCustomListener extends TypeScriptParserBaseListener { + @Override + public void enterVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx) { + String varName = ctx.identifierOrKeyWord().getText(); + System.out.println("变量名: " + varName); + System.out.println("var : " + ctx.getText()); + String typeAnno = ctx.typeAnnotation() != null ? ctx.typeAnnotation().getText() : ""; + System.out.println("type : " + typeAnno); + List secList = ctx.singleExpression(); + for (TypeScriptParser.SingleExpressionContext sec : secList) { + String value = sec.getText(); + System.out.println("single : " + value); + int cnt = sec.getChildCount(); + System.out.println("single child cnt: " + cnt); + for (int i = 0; i < cnt; i++) { + ParseTree pt = sec.getChild(i); + System.out.println("single child pt: " + pt.getText()); + } + } + + System.out.println("------------------------------"); + } + + @Override + public void enterConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx) { + // 提取构造函数参数列表 + String res = ctx.formalParameterList().getText(); + System.out.println("Construct: " + res); + + } + + @Override + public void enterMethodProperty(TypeScriptParser.MethodPropertyContext ctx) { + super.enterMethodProperty(ctx); + String res = ctx.toString(); + System.out.println("Method: " + res); + } + + @Override + public void enterFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { + super.enterFunctionDeclaration(ctx); + // 提取函数名、参数等信息 + String funcName = ctx.identifier().getText(); + System.out.println("Function: " + funcName + " all: " + ctx.getText()); + + String callSign = ctx.callSignature().getText(); + System.out.println("Function callSign: " + callSign); + String typeAnno = ctx.callSignature().typeAnnotation().getText(); + System.out.println("Function typeAnno: " + typeAnno); + if (ctx.callSignature().parameterList() != null) { + List plc = ctx.callSignature().parameterList().parameter(); + for (TypeScriptParser.ParameterContext pc : plc) { + System.out.println("Function param: " + pc.getText()); + TypeScriptParser. RequiredParameterContext rpc = pc.requiredParameter(); + String ta = rpc.typeAnnotation().getText(); + String iop = rpc.identifierOrPattern().getText(); + System.out.println("Function type: " + ta + " name: " + iop); + } + } + System.out.println("--------------------"); + } + + @Override + public void enterClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx) { + super.enterClassDeclaration(ctx); + // 提取类名、方法、属性等信息 + String className = ctx.identifier().getText(); + System.out.println("Class: " + className); + + + // 获取修饰符(如public/abstract) + TypeScriptParser.DecoratorListContext dlc = ctx.decoratorList(); + if (dlc != null) { + System.out.println("Class decoratorList: " + dlc.getText()); + } + // 处理继承关系(extends/implements) + TypeScriptParser.ClassHeritageContext heritage = ctx.classHeritage(); + System.out.println("Class heritage: " + heritage.getText()); + } + + @Override + public void enterClassElement(TypeScriptParser.ClassElementContext ctx) { + super.enterClassElement(ctx); + System.out.println("Class element: " + ctx.getText()); + TypeScriptParser.StatementContext sc = ctx.statement(); + if (sc != null) { + System.out.println("Class state: " + sc.getText()); + } + + TypeScriptParser.PropertyMemberDeclarationContext pmdc = ctx.propertyMemberDeclaration(); + if (pmdc != null) { + System.out.println("Class property: " + pmdc.getText()); + } + } + + @Override + public void enterMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx) { + super.enterMethodDeclarationExpression(ctx); + System.out.println("Method property: " + ctx.getText()); + String propertyName = ctx.propertyName().getText(); + System.out.println("Method name: " + propertyName); + String callSign = ctx.callSignature().getText(); + System.out.println("Method callSign: " + callSign); + String typeAnno = ctx.callSignature().typeAnnotation().getText(); + System.out.println("Method typeAnno: " + typeAnno); + List plc = ctx.callSignature().parameterList().parameter(); + for (TypeScriptParser.ParameterContext pc : plc) { + System.out.println("Method param: " + pc.getText()); + TypeScriptParser. RequiredParameterContext rpc = pc.requiredParameter(); + String ta = rpc.typeAnnotation().getText(); + String iop = rpc.identifierOrPattern().getText(); + System.out.println("Method type: " + ta + " name: " + iop); + } + int cnt = ctx.getChildCount(); + System.out.println("Method param cnt: " + cnt); + } + + @Override + public void enterPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx) { + super.enterPropertyDeclarationExpression(ctx); + System.out.println("Property property: " + ctx.getText()); + String propertyName = ctx.propertyName().getText(); + String typeName = ctx.typeAnnotation().getText(); + System.out.println("Property name: " + propertyName + " type: " + typeName); + } + + @Override + public void enterTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx) { + super.enterTypeAliasDeclaration(ctx); + String typeName = ctx.identifier().getText(); + System.out.println("Type: " + typeName); + TypeScriptParser.TypeParametersContext tpc = ctx.typeParameters(); + if (tpc != null) { + System.out.println("Type params: " + tpc.getText()); + } + TypeScriptParser.Type_Context typeContext = ctx.type_(); + if (typeContext != null) { + System.out.println("Type type_: " + typeContext.getText()); + + TypeScriptParser.UnionOrIntersectionOrPrimaryTypeContext upt = + typeContext.unionOrIntersectionOrPrimaryType(); + if (upt != null) { + System.out.println("Type uoiop: " + upt.getText()); + } + TypeScriptParser.TypeGenericContext tgc = typeContext.typeGeneric(); + if (tgc != null) { + System.out.println("Type typeGeneric: " + tgc.getText()); + } + TypeScriptParser.ConstructorTypeContext ctc = typeContext.constructorType(); + if (ctc != null) { + System.out.println("Type constructorType: " + ctc.getText()); + } + TypeScriptParser.FunctionTypeContext ftc = typeContext.functionType(); + if (ftc != null) { + System.out.println("Type functionType: " + ftc.getText()); + } + } + + System.out.println("-------------------"); + } + + @Override + public void enterEnumBody(TypeScriptParser.EnumBodyContext ctx) { + super.enterEnumBody(ctx); + System.out.println("find Enum Body: "); + String enumName = ctx.getText(); + System.out.println("Enum: " + enumName); + } + + @Override + public void enterEnumMemberList(TypeScriptParser.EnumMemberListContext ctx) { + super.enterEnumMemberList(ctx); + List memList = ctx.enumMember(); + for (TypeScriptParser.EnumMemberContext enumMemberContext : memList) { + String memName = enumMemberContext.getText(); + System.out.println("Enum mem: " + memName); + } + } + + @Override + public void enterEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx) { + super.enterEnumDeclaration(ctx); + System.out.println("find Enum Declare: "); + String res = ""; + String enumName = ctx.identifier().getText(); + res += "Enum: " + enumName; + System.out.println("Enum name: " + res); + + List members = ctx.enumBody().enumMemberList().enumMember(); + for (TypeScriptParser.EnumMemberContext member : members) { + res += " , " + member.getText(); + } + System.out.println("Enum: " + res); + } + + @Override + public void enterNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx) { + super.enterNamespaceDeclaration(ctx); + System.out.println("find namespace Declare: " + ctx.toString()); + } + + @Override + public void enterInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx) { + super.enterInterfaceDeclaration(ctx); + System.out.println("find interface Declare: " + ctx.getText()); + String interfaceName = ctx.identifier().getText(); + System.out.println("interface name: " + interfaceName); + TypeScriptParser.ObjectTypeContext otc = ctx.objectType(); + TypeScriptParser.TypeBodyContext tbc = otc.typeBody(); + TypeScriptParser.TypeMemberListContext tlc = tbc.typeMemberList(); + List tmcList = tlc.typeMember(); + for (TypeScriptParser.TypeMemberContext tmc : tmcList) { + String callSign = tmc.callSignature().getText(); + System.out.println("interface callSign: " + callSign); + String typeAnno = tmc.callSignature().typeAnnotation().getText(); + System.out.println("interface typeAnno: " + typeAnno); + List plc = tmc.callSignature().parameterList().parameter(); + for (TypeScriptParser.ParameterContext pc : plc) { + System.out.println("interface param: " + pc.getText()); + TypeScriptParser. RequiredParameterContext rpc = pc.requiredParameter(); + String ta = rpc.typeAnnotation().getText(); + String iop = rpc.identifierOrPattern().getText(); + System.out.println("interface type: " + ta + " name: " + iop); + } + } + System.out.println("----------------"); + } + + @Override + public void enterAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx) { + super.enterAbstractDeclaration(ctx); + System.out.println("find abstract Declare: " + ctx.toString()); + } + + @Override + public void enterExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx) { + super.enterExportDeclaration(ctx); + System.out.println("find export Declare: " + ctx.toString()); + } + + @Override + public void enterConstraint(TypeScriptParser.ConstraintContext ctx) { + super.enterConstraint(ctx); + System.out.println("enter constraint: " + ctx.toString()); + } + + @Override + public void exitConstraint(TypeScriptParser.ConstraintContext ctx) { + super.exitConstraint(ctx); + System.out.println("exit constraint: " + ctx.toString()); + } + + @Override + public void enterProgram(TypeScriptParser.ProgramContext ctx) { + super.enterProgram(ctx); + System.out.println("enter Program: " + ctx.toString()); + } + + @Override + public void exitProgram(TypeScriptParser.ProgramContext ctx) { + super.exitProgram(ctx); + System.out.println("exit Program: " + ctx.toString()); + } +} -- Gitee From 4daca2cbbb7d87b3c2f43fa6a31747bbe9632490 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:00:40 +0800 Subject: [PATCH 09/26] refactory ts error Signed-off-by: wangshi --- .../typescript/TypeScriptErrorListener.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptErrorListener.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptErrorListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptErrorListener.java new file mode 100644 index 00000000..2f617455 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptErrorListener.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.IntervalSet; + +import java.util.Locale; + +/** + *

类名:该类用于xxx

+ * description typescript error listener + * + * @author Administrator + * date 2025-02-28 + * @version 1.0 + * @since 2025-02-28 + */ +public class TypeScriptErrorListener extends BaseErrorListener { + @Override + public void syntaxError(Recognizer recognizer, + Object offendingSymbol, + int line, + int charPositionInLine, + String msg, + RecognitionException e) { + System.err.println("syntax error"); + System.out.println("syntax error"); + // 输出错误位置和消息 + String errorHeader = String.format(Locale.ROOT, "语法错误@行%d:%d - ", line, charPositionInLine + 1); + String errorDetail = String.format("符号 '%s' 无效,预期: %s", + offendingSymbol instanceof Token ? ((Token) offendingSymbol).getText() : "", + getExpectedTokens(recognizer, e)); + System.err.println(errorHeader + errorDetail + " | 错误详情: " + msg); + } + + private String getExpectedTokens(Recognizer recognizer, RecognitionException e) { + if (e == null) { + return "未知预期符号"; + } + IntervalSet expectedTokens = e.getExpectedTokens(); + return expectedTokens.toString(recognizer.getVocabulary()); + } +} \ No newline at end of file -- Gitee From 7f175d0712ce2903b14598609d5fb553d284f697 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:00:58 +0800 Subject: [PATCH 10/26] refactory ts visitor Signed-off-by: wangshi --- .../typescript/TypeScriptCustomVisitor.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomVisitor.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomVisitor.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomVisitor.java new file mode 100644 index 00000000..e2d6bb31 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptCustomVisitor.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +import java.util.List; +import java.util.ArrayList; + +/** + *

类名:该类用于xxx

+ * description typescript custom visitor + * + * @author Administrator + * date 2025-02-28 + * @version 1.0 + * @since 2025-02-28 + */ +public class TypeScriptCustomVisitor extends TypeScriptParserBaseVisitor { + private List functionNames = new ArrayList<>(); + + public List getFunctionNames() { return functionNames; } + + @Override + public Void visitFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { + functionNames.add(ctx.identifier().getText()); + return super.visitFunctionDeclaration(ctx); + } +} -- Gitee From 284280a80d89336fd9b906adbcda6eebf3db95c8 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:04:05 +0800 Subject: [PATCH 11/26] refacotry ts lexer Signed-off-by: wangshi --- .../src/main/java/antlr/TypeScriptLexer.java | 1434 ----------------- 1 file changed, 1434 deletions(-) delete mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.java deleted file mode 100644 index 1203b7ae..00000000 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.java +++ /dev/null @@ -1,1434 +0,0 @@ -/* - * Copyright (c) 2025 Shenzhen Kaihong Digital. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package antlr; - -// Generated from TypeScriptLexer.g4 by ANTLR 4.13.2 -import antlr.TypeScriptLexerBase; -import org.antlr.v4.runtime.atn.LexerATNSimulator; -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", "CheckReturnValue", "this-escape"}) -public class TypeScriptLexer extends TypeScriptLexerBase { - static { RuntimeMetaData.checkVersion("4.13.2", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - MultiLineComment=1, SingleLineComment=2, RegularExpressionLiteral=3, OpenBracket=4, - CloseBracket=5, OpenParen=6, CloseParen=7, OpenBrace=8, TemplateCloseBrace=9, - CloseBrace=10, SemiColon=11, Comma=12, Assign=13, QuestionMark=14, QuestionMarkDot=15, - Colon=16, Ellipsis=17, Dot=18, PlusPlus=19, MinusMinus=20, Plus=21, Minus=22, - BitNot=23, Not=24, Multiply=25, Divide=26, Modulus=27, Power=28, NullCoalesce=29, - Hashtag=30, LeftShiftArithmetic=31, LessThan=32, MoreThan=33, LessThanEquals=34, - GreaterThanEquals=35, Equals_=36, NotEquals=37, IdentityEquals=38, IdentityNotEquals=39, - BitAnd=40, BitXOr=41, BitOr=42, And=43, Or=44, MultiplyAssign=45, DivideAssign=46, - ModulusAssign=47, PlusAssign=48, MinusAssign=49, LeftShiftArithmeticAssign=50, - RightShiftArithmeticAssign=51, RightShiftLogicalAssign=52, BitAndAssign=53, - BitXorAssign=54, BitOrAssign=55, PowerAssign=56, NullishCoalescingAssign=57, - ARROW=58, NullLiteral=59, BooleanLiteral=60, DecimalLiteral=61, HexIntegerLiteral=62, - OctalIntegerLiteral=63, OctalIntegerLiteral2=64, BinaryIntegerLiteral=65, - BigHexIntegerLiteral=66, BigOctalIntegerLiteral=67, BigBinaryIntegerLiteral=68, - BigDecimalIntegerLiteral=69, Break=70, Do=71, Instanceof=72, Typeof=73, - Case=74, Else=75, New=76, Var=77, Catch=78, Finally=79, Return=80, Void=81, - Continue=82, For=83, Switch=84, While=85, Debugger=86, Function_=87, This=88, - With=89, Default=90, If=91, Throw=92, Delete=93, In=94, Try=95, As=96, - From=97, ReadOnly=98, Async=99, Await=100, Yield=101, YieldStar=102, Class=103, - Enum=104, Extends=105, Super=106, Const=107, Export=108, Import=109, Implements=110, - Let=111, Private=112, Public=113, Interface=114, Package=115, Protected=116, - Static=117, Any=118, Number=119, Never=120, Boolean=121, String=122, Unique=123, - Symbol=124, Undefined=125, Object=126, Of=127, KeyOf=128, TypeAlias=129, - Constructor=130, Namespace=131, Require=132, Module=133, Declare=134, - Abstract=135, Is=136, At=137, Identifier=138, StringLiteral=139, BackTick=140, - WhiteSpaces=141, LineTerminator=142, HtmlComment=143, CDataComment=144, - UnexpectedCharacter=145, TemplateStringEscapeAtom=146, TemplateStringStartExpression=147, - TemplateStringAtom=148; - public static final int - ERROR=2; - public static final int - TEMPLATE=1; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "ERROR" - }; - - public static String[] modeNames = { - "DEFAULT_MODE", "TEMPLATE" - }; - - private static String[] makeRuleNames() { - return new String[] { - "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", - "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", - "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", - "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", - "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", - "NullCoalesce", "Hashtag", "LeftShiftArithmetic", "LessThan", "MoreThan", - "LessThanEquals", "GreaterThanEquals", "Equals_", "NotEquals", "IdentityEquals", - "IdentityNotEquals", "BitAnd", "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", - "DivideAssign", "ModulusAssign", "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", - "RightShiftArithmeticAssign", "RightShiftLogicalAssign", "BitAndAssign", - "BitXorAssign", "BitOrAssign", "PowerAssign", "NullishCoalescingAssign", - "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", "HexIntegerLiteral", - "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", - "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", - "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", - "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", - "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", - "If", "Throw", "Delete", "In", "Try", "As", "From", "ReadOnly", "Async", - "Await", "Yield", "YieldStar", "Class", "Enum", "Extends", "Super", "Const", - "Export", "Import", "Implements", "Let", "Private", "Public", "Interface", - "Package", "Protected", "Static", "Any", "Number", "Never", "Boolean", - "String", "Unique", "Symbol", "Undefined", "Object", "Of", "KeyOf", "TypeAlias", - "Constructor", "Namespace", "Require", "Module", "Declare", "Abstract", - "Is", "At", "Identifier", "StringLiteral", "BackTick", "WhiteSpaces", - "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", - "TemplateStringEscapeAtom", "BackTickInside", "TemplateStringStartExpression", - "TemplateStringAtom", "DoubleStringCharacter", "SingleStringCharacter", - "EscapeSequence", "CharacterEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence", - "ExtendedUnicodeEscapeSequence", "SingleEscapeCharacter", "NonEscapeCharacter", - "EscapeCharacter", "LineContinuation", "HexDigit", "DecimalIntegerLiteral", - "ExponentPart", "IdentifierPart", "IdentifierStart", "RegularExpressionFirstChar", - "RegularExpressionChar", "RegularExpressionClassChar", "RegularExpressionBackslashSequence" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, null, null, null, "'['", "']'", "'('", "')'", "'{'", null, "'}'", - "';'", "','", "'='", "'?'", "'?.'", "':'", "'...'", "'.'", "'++'", "'--'", - "'+'", "'-'", "'~'", "'!'", "'*'", "'/'", "'%'", "'**'", "'??'", "'#'", - "'<<'", "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'==='", "'!=='", - "'&'", "'^'", "'|'", "'&&'", "'||'", "'*='", "'/='", "'%='", "'+='", - "'-='", "'<<='", "'>>='", "'>>>='", "'&='", "'^='", "'|='", "'**='", - "'??='", "'=>'", "'null'", null, null, null, null, null, null, null, - null, null, null, "'break'", "'do'", "'instanceof'", "'typeof'", "'case'", - "'else'", "'new'", "'var'", "'catch'", "'finally'", "'return'", "'void'", - "'continue'", "'for'", "'switch'", "'while'", "'debugger'", "'function'", - "'this'", "'with'", "'default'", "'if'", "'throw'", "'delete'", "'in'", - "'try'", "'as'", "'from'", "'readonly'", "'async'", "'await'", "'yield'", - "'yield*'", "'class'", "'enum'", "'extends'", "'super'", "'const'", "'export'", - "'import'", "'implements'", "'let'", "'private'", "'public'", "'interface'", - "'package'", "'protected'", "'static'", "'any'", "'number'", "'never'", - "'boolean'", "'string'", "'unique'", "'symbol'", "'undefined'", "'object'", - "'of'", "'keyof'", "'type'", "'constructor'", "'namespace'", "'require'", - "'module'", "'declare'", "'abstract'", "'is'", "'@'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", - "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", - "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", - "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", - "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", - "NullCoalesce", "Hashtag", "LeftShiftArithmetic", "LessThan", "MoreThan", - "LessThanEquals", "GreaterThanEquals", "Equals_", "NotEquals", "IdentityEquals", - "IdentityNotEquals", "BitAnd", "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", - "DivideAssign", "ModulusAssign", "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", - "RightShiftArithmeticAssign", "RightShiftLogicalAssign", "BitAndAssign", - "BitXorAssign", "BitOrAssign", "PowerAssign", "NullishCoalescingAssign", - "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", "HexIntegerLiteral", - "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", - "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", - "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", - "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", - "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", - "If", "Throw", "Delete", "In", "Try", "As", "From", "ReadOnly", "Async", - "Await", "Yield", "YieldStar", "Class", "Enum", "Extends", "Super", "Const", - "Export", "Import", "Implements", "Let", "Private", "Public", "Interface", - "Package", "Protected", "Static", "Any", "Number", "Never", "Boolean", - "String", "Unique", "Symbol", "Undefined", "Object", "Of", "KeyOf", "TypeAlias", - "Constructor", "Namespace", "Require", "Module", "Declare", "Abstract", - "Is", "At", "Identifier", "StringLiteral", "BackTick", "WhiteSpaces", - "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", - "TemplateStringEscapeAtom", "TemplateStringStartExpression", "TemplateStringAtom" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - public TypeScriptLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "TypeScriptLexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - @Override - public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { - switch (ruleIndex) { - case 7: - OpenBrace_action((RuleContext)_localctx, actionIndex); - break; - case 9: - CloseBrace_action((RuleContext)_localctx, actionIndex); - break; - case 138: - StringLiteral_action((RuleContext)_localctx, actionIndex); - break; - case 139: - BackTick_action((RuleContext)_localctx, actionIndex); - break; - case 146: - BackTickInside_action((RuleContext)_localctx, actionIndex); - break; - case 147: - TemplateStringStartExpression_action((RuleContext)_localctx, actionIndex); - break; - } - } - private void OpenBrace_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 0: - this.ProcessOpenBrace(); - break; - } - } - private void CloseBrace_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 1: - this.ProcessCloseBrace(); - break; - } - } - private void StringLiteral_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 2: - this.ProcessStringLiteral(); - break; - } - } - private void BackTick_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 3: - this.IncreaseTemplateDepth(); - break; - } - } - private void BackTickInside_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 4: - this.DecreaseTemplateDepth(); - break; - } - } - private void TemplateStringStartExpression_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 5: - this.StartTemplateString(); - break; - } - } - @Override - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 2: - return RegularExpressionLiteral_sempred((RuleContext)_localctx, predIndex); - case 8: - return TemplateCloseBrace_sempred((RuleContext)_localctx, predIndex); - case 62: - return OctalIntegerLiteral_sempred((RuleContext)_localctx, predIndex); - } - return true; - } - private boolean RegularExpressionLiteral_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return this.IsRegexPossible(); - } - return true; - } - private boolean TemplateCloseBrace_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 1: - return this.IsInTemplateString(); - } - return true; - } - private boolean OctalIntegerLiteral_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return !this.IsStrictMode(); - } - return true; - } - - public static final String _serializedATN = - "\u0004\u0000\u0094\u052f\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000"+ - "\u0007\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003"+ - "\u0007\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006"+ - "\u0007\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002"+ - "\n\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002"+ - "\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002"+ - "\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002"+ - "\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002"+ - "\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002"+ - "\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002"+ - "\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002"+ - " \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002"+ - "%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002"+ - "*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002"+ - "/\u0007/\u00020\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u0002"+ - "4\u00074\u00025\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u0002"+ - "9\u00079\u0002:\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002"+ - ">\u0007>\u0002?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002"+ - "C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002"+ - "H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002"+ - "M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002"+ - "R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002"+ - "W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002"+ - "\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002"+ - "a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002"+ - "f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002"+ - "k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002"+ - "p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002"+ - "u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002"+ - "z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002"+ - "\u007f\u0007\u007f\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002"+ - "\u0082\u0007\u0082\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002"+ - "\u0085\u0007\u0085\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002"+ - "\u0088\u0007\u0088\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002"+ - "\u008b\u0007\u008b\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002"+ - "\u008e\u0007\u008e\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002"+ - "\u0091\u0007\u0091\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002"+ - "\u0094\u0007\u0094\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002"+ - "\u0097\u0007\u0097\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002"+ - "\u009a\u0007\u009a\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002"+ - "\u009d\u0007\u009d\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002"+ - "\u00a0\u0007\u00a0\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002"+ - "\u00a3\u0007\u00a3\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002"+ - "\u00a6\u0007\u00a6\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0001"+ - "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0005\u0000\u0159\b\u0000\n"+ - "\u0000\f\u0000\u015c\t\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+ - "\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0005"+ - "\u0001\u0167\b\u0001\n\u0001\f\u0001\u016a\t\u0001\u0001\u0001\u0001\u0001"+ - "\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002\u0171\b\u0002\n\u0002"+ - "\f\u0002\u0174\t\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002"+ - "\u0179\b\u0002\n\u0002\f\u0002\u017c\t\u0002\u0001\u0003\u0001\u0003\u0001"+ - "\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001"+ - "\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b"+ - "\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001"+ - "\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f"+ - "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011"+ - "\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0016"+ - "\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019"+ - "\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b"+ - "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001!"+ - "\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001$\u0001"+ - "$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001"+ - "\'\u0001\'\u0001(\u0001(\u0001)\u0001)\u0001*\u0001*\u0001*\u0001+\u0001"+ - "+\u0001+\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001.\u0001.\u0001"+ - ".\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00011\u00011\u00011\u0001"+ - "1\u00012\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u0001"+ - "4\u00014\u00014\u00015\u00015\u00015\u00016\u00016\u00016\u00017\u0001"+ - "7\u00017\u00017\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u0001"+ - ":\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+ - ";\u0001;\u0001;\u0001;\u0003;\u0225\b;\u0001<\u0001<\u0001<\u0001<\u0005"+ - "<\u022b\b<\n<\f<\u022e\t<\u0001<\u0003<\u0231\b<\u0001<\u0001<\u0001<"+ - "\u0005<\u0236\b<\n<\f<\u0239\t<\u0001<\u0003<\u023c\b<\u0001<\u0001<\u0003"+ - "<\u0240\b<\u0003<\u0242\b<\u0001=\u0001=\u0001=\u0001=\u0005=\u0248\b"+ - "=\n=\f=\u024b\t=\u0001>\u0001>\u0004>\u024f\b>\u000b>\f>\u0250\u0001>"+ - "\u0001>\u0001?\u0001?\u0001?\u0001?\u0005?\u0259\b?\n?\f?\u025c\t?\u0001"+ - "@\u0001@\u0001@\u0001@\u0005@\u0262\b@\n@\f@\u0265\t@\u0001A\u0001A\u0001"+ - "A\u0001A\u0005A\u026b\bA\nA\fA\u026e\tA\u0001A\u0001A\u0001B\u0001B\u0001"+ - "B\u0001B\u0005B\u0276\bB\nB\fB\u0279\tB\u0001B\u0001B\u0001C\u0001C\u0001"+ - "C\u0001C\u0005C\u0281\bC\nC\fC\u0284\tC\u0001C\u0001C\u0001D\u0001D\u0001"+ - "D\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001"+ - "G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+ - "G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001"+ - "I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001"+ - "K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001"+ - "M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001"+ - "P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ - "Q\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001S\u0001"+ - "S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001"+ - "U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001V\u0001V\u0001V\u0001"+ - "V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0001W\u0001"+ - "W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ - "Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001"+ - "[\u0001[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ - "\\\u0001]\u0001]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001"+ - "_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001a\u0001"+ - "a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+ - "b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+ - "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ - "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001"+ - "g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001"+ - "i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ - "j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001l\u0001l\u0001"+ - "l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ - "s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ - "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001"+ - "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ - "y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001"+ - "{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001"+ - "|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001"+ - "}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ - "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080"+ - "\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+ - "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+ - "\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ - "\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ - "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+ - "\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ - "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+ - "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086"+ - "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+ - "\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088"+ - "\u0001\u0088\u0001\u0089\u0001\u0089\u0005\u0089\u0449\b\u0089\n\u0089"+ - "\f\u0089\u044c\t\u0089\u0001\u008a\u0001\u008a\u0005\u008a\u0450\b\u008a"+ - "\n\u008a\f\u008a\u0453\t\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0005"+ - "\u008a\u0458\b\u008a\n\u008a\f\u008a\u045b\t\u008a\u0001\u008a\u0003\u008a"+ - "\u045e\b\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008c\u0004\u008c\u0468\b\u008c\u000b\u008c"+ - "\f\u008c\u0469\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d\u0001\u008d"+ - "\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+ - "\u0001\u008e\u0005\u008e\u0478\b\u008e\n\u008e\f\u008e\u047b\t\u008e\u0001"+ - "\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ - "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ - "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0005\u008f\u048e"+ - "\b\u008f\n\u008f\f\u008f\u0491\t\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+ - "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090"+ - "\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092"+ - "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093"+ - "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0094"+ - "\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0003\u0095"+ - "\u04b3\b\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0003\u0096"+ - "\u04b9\b\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097"+ - "\u0003\u0097\u04c0\b\u0097\u0001\u0098\u0001\u0098\u0003\u0098\u04c4\b"+ - "\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001"+ - "\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+ - "\u009a\u0001\u009a\u0001\u009a\u0004\u009a\u04d4\b\u009a\u000b\u009a\f"+ - "\u009a\u04d5\u0001\u009a\u0001\u009a\u0003\u009a\u04da\b\u009a\u0001\u009b"+ - "\u0001\u009b\u0001\u009b\u0004\u009b\u04df\b\u009b\u000b\u009b\f\u009b"+ - "\u04e0\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009d\u0001"+ - "\u009d\u0001\u009e\u0001\u009e\u0003\u009e\u04eb\b\u009e\u0001\u009f\u0001"+ - "\u009f\u0004\u009f\u04ef\b\u009f\u000b\u009f\f\u009f\u04f0\u0001\u00a0"+ - "\u0001\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0005\u00a1\u04f8\b\u00a1"+ - "\n\u00a1\f\u00a1\u04fb\t\u00a1\u0003\u00a1\u04fd\b\u00a1\u0001\u00a2\u0001"+ - "\u00a2\u0003\u00a2\u0501\b\u00a2\u0001\u00a2\u0004\u00a2\u0504\b\u00a2"+ - "\u000b\u00a2\f\u00a2\u0505\u0001\u00a3\u0001\u00a3\u0003\u00a3\u050a\b"+ - "\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0003\u00a4\u050f\b\u00a4\u0001"+ - "\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0005\u00a5\u0515\b\u00a5\n"+ - "\u00a5\f\u00a5\u0518\t\u00a5\u0001\u00a5\u0003\u00a5\u051b\b\u00a5\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0005\u00a6\u0521\b\u00a6\n"+ - "\u00a6\f\u00a6\u0524\t\u00a6\u0001\u00a6\u0003\u00a6\u0527\b\u00a6\u0001"+ - "\u00a7\u0001\u00a7\u0003\u00a7\u052b\b\u00a7\u0001\u00a8\u0001\u00a8\u0001"+ - "\u00a8\u0003\u015a\u0479\u048f\u0000\u00a9\u0002\u0001\u0004\u0002\u0006"+ - "\u0003\b\u0004\n\u0005\f\u0006\u000e\u0007\u0010\b\u0012\t\u0014\n\u0016"+ - "\u000b\u0018\f\u001a\r\u001c\u000e\u001e\u000f \u0010\"\u0011$\u0012&"+ - "\u0013(\u0014*\u0015,\u0016.\u00170\u00182\u00194\u001a6\u001b8\u001c"+ - ":\u001d<\u001e>\u001f@ B!D\"F#H$J%L&N\'P(R)T*V+X,Z-\\.^/`0b1d2f3h4j5l"+ - "6n7p8r9t:v;x~?\u0080@\u0082A\u0084B\u0086C\u0088D\u008aE\u008cF\u008e"+ - "G\u0090H\u0092I\u0094J\u0096K\u0098L\u009aM\u009cN\u009eO\u00a0P\u00a2"+ - "Q\u00a4R\u00a6S\u00a8T\u00aaU\u00acV\u00aeW\u00b0X\u00b2Y\u00b4Z\u00b6"+ - "[\u00b8\\\u00ba]\u00bc^\u00be_\u00c0`\u00c2a\u00c4b\u00c6c\u00c8d\u00ca"+ - "e\u00ccf\u00ceg\u00d0h\u00d2i\u00d4j\u00d6k\u00d8l\u00dam\u00dcn\u00de"+ - "o\u00e0p\u00e2q\u00e4r\u00e6s\u00e8t\u00eau\u00ecv\u00eew\u00f0x\u00f2"+ - "y\u00f4z\u00f6{\u00f8|\u00fa}\u00fc~\u00fe\u007f\u0100\u0080\u0102\u0081"+ - "\u0104\u0082\u0106\u0083\u0108\u0084\u010a\u0085\u010c\u0086\u010e\u0087"+ - "\u0110\u0088\u0112\u0089\u0114\u008a\u0116\u008b\u0118\u008c\u011a\u008d"+ - "\u011c\u008e\u011e\u008f\u0120\u0090\u0122\u0091\u0124\u0092\u0126\u0000"+ - "\u0128\u0093\u012a\u0094\u012c\u0000\u012e\u0000\u0130\u0000\u0132\u0000"+ - "\u0134\u0000\u0136\u0000\u0138\u0000\u013a\u0000\u013c\u0000\u013e\u0000"+ - "\u0140\u0000\u0142\u0000\u0144\u0000\u0146\u0000\u0148\u0000\u014a\u0000"+ - "\u014c\u0000\u014e\u0000\u0150\u0000\u0152\u0000\u0002\u0000\u0001\u001b"+ - "\u0003\u0000\n\n\r\r\u2028\u2029\u0001\u000009\u0002\u000009__\u0002\u0000"+ - "XXxx\u0003\u000009AFaf\u0001\u000007\u0002\u0000OOoo\u0002\u000007__\u0002"+ - "\u0000BBbb\u0001\u000001\u0002\u000001__\u0004\u0000\t\t\u000b\f \u00a0"+ - "\u00a0\u0002\u0000\\\\``\u0004\u0000\n\n\r\r\"\"\\\\\u0004\u0000\n\n\r"+ - "\r\'\'\\\\\t\u0000\"\"\'\'\\\\bbffnnrrttvv\f\u0000\n\n\r\r\"\"\'\'09\\"+ - "\\bbffnnrrtvxx\u0003\u000009uuxx\u0004\u000009AF__af\u0001\u000019\u0002"+ - "\u0000EEee\u0002\u0000++--\u0198\u000009__\u0300\u036f\u0483\u0487\u0591"+ - "\u05bd\u05bf\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05c7\u0610\u061a\u064b"+ - "\u0669\u0670\u0670\u06d6\u06dc\u06df\u06e4\u06e7\u06e8\u06ea\u06ed\u06f0"+ - "\u06f9\u0711\u0711\u0730\u074a\u07a6\u07b0\u07c0\u07c9\u07eb\u07f3\u07fd"+ - "\u07fd\u0816\u0819\u081b\u0823\u0825\u0827\u0829\u082d\u0859\u085b\u0898"+ - "\u089f\u08ca\u08e1\u08e3\u0902\u093a\u093a\u093c\u093c\u0941\u0948\u094d"+ - "\u094d\u0951\u0957\u0962\u0963\u0966\u096f\u0981\u0981\u09bc\u09bc\u09c1"+ - "\u09c4\u09cd\u09cd\u09e2\u09e3\u09e6\u09ef\u09fe\u09fe\u0a01\u0a02\u0a3c"+ - "\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4d\u0a51\u0a51\u0a66\u0a71\u0a75"+ - "\u0a75\u0a81\u0a82\u0abc\u0abc\u0ac1\u0ac5\u0ac7\u0ac8\u0acd\u0acd\u0ae2"+ - "\u0ae3\u0ae6\u0aef\u0afa\u0aff\u0b01\u0b01\u0b3c\u0b3c\u0b3f\u0b3f\u0b41"+ - "\u0b44\u0b4d\u0b4d\u0b55\u0b56\u0b62\u0b63\u0b66\u0b6f\u0b82\u0b82\u0bc0"+ - "\u0bc0\u0bcd\u0bcd\u0be6\u0bef\u0c00\u0c00\u0c04\u0c04\u0c3c\u0c3c\u0c3e"+ - "\u0c40\u0c46\u0c48\u0c4a\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66\u0c6f\u0c81"+ - "\u0c81\u0cbc\u0cbc\u0cbf\u0cbf\u0cc6\u0cc6\u0ccc\u0ccd\u0ce2\u0ce3\u0ce6"+ - "\u0cef\u0d00\u0d01\u0d3b\u0d3c\u0d41\u0d44\u0d4d\u0d4d\u0d62\u0d63\u0d66"+ - "\u0d6f\u0d81\u0d81\u0dca\u0dca\u0dd2\u0dd4\u0dd6\u0dd6\u0de6\u0def\u0e31"+ - "\u0e31\u0e34\u0e3a\u0e47\u0e4e\u0e50\u0e59\u0eb1\u0eb1\u0eb4\u0ebc\u0ec8"+ - "\u0ece\u0ed0\u0ed9\u0f18\u0f19\u0f20\u0f29\u0f35\u0f35\u0f37\u0f37\u0f39"+ - "\u0f39\u0f71\u0f7e\u0f80\u0f84\u0f86\u0f87\u0f8d\u0f97\u0f99\u0fbc\u0fc6"+ - "\u0fc6\u102d\u1030\u1032\u1037\u1039\u103a\u103d\u103e\u1040\u1049\u1058"+ - "\u1059\u105e\u1060\u1071\u1074\u1082\u1082\u1085\u1086\u108d\u108d\u1090"+ - "\u1099\u109d\u109d\u135d\u135f\u1712\u1714\u1732\u1733\u1752\u1753\u1772"+ - "\u1773\u17b4\u17b5\u17b7\u17bd\u17c6\u17c6\u17c9\u17d3\u17dd\u17dd\u17e0"+ - "\u17e9\u180b\u180d\u180f\u1819\u1885\u1886\u18a9\u18a9\u1920\u1922\u1927"+ - "\u1928\u1932\u1932\u1939\u193b\u1946\u194f\u19d0\u19d9\u1a17\u1a18\u1a1b"+ - "\u1a1b\u1a56\u1a56\u1a58\u1a5e\u1a60\u1a60\u1a62\u1a62\u1a65\u1a6c\u1a73"+ - "\u1a7c\u1a7f\u1a89\u1a90\u1a99\u1ab0\u1abd\u1abf\u1ace\u1b00\u1b03\u1b34"+ - "\u1b34\u1b36\u1b3a\u1b3c\u1b3c\u1b42\u1b42\u1b50\u1b59\u1b6b\u1b73\u1b80"+ - "\u1b81\u1ba2\u1ba5\u1ba8\u1ba9\u1bab\u1bad\u1bb0\u1bb9\u1be6\u1be6\u1be8"+ - "\u1be9\u1bed\u1bed\u1bef\u1bf1\u1c2c\u1c33\u1c36\u1c37\u1c40\u1c49\u1c50"+ - "\u1c59\u1cd0\u1cd2\u1cd4\u1ce0\u1ce2\u1ce8\u1ced\u1ced\u1cf4\u1cf4\u1cf8"+ - "\u1cf9\u1dc0\u1dff\u200c\u200d\u203f\u2040\u2054\u2054\u20d0\u20dc\u20e1"+ - "\u20e1\u20e5\u20f0\u2cef\u2cf1\u2d7f\u2d7f\u2de0\u2dff\u302a\u302d\u3099"+ - "\u309a\u8000\ua620\u8000\ua629\u8000\ua66f\u8000\ua66f\u8000\ua674\u8000"+ - "\ua67d\u8000\ua69e\u8000\ua69f\u8000\ua6f0\u8000\ua6f1\u8000\ua802\u8000"+ - "\ua802\u8000\ua806\u8000\ua806\u8000\ua80b\u8000\ua80b\u8000\ua825\u8000"+ - "\ua826\u8000\ua82c\u8000\ua82c\u8000\ua8c4\u8000\ua8c5\u8000\ua8d0\u8000"+ - "\ua8d9\u8000\ua8e0\u8000\ua8f1\u8000\ua8ff\u8000\ua909\u8000\ua926\u8000"+ - "\ua92d\u8000\ua947\u8000\ua951\u8000\ua980\u8000\ua982\u8000\ua9b3\u8000"+ - "\ua9b3\u8000\ua9b6\u8000\ua9b9\u8000\ua9bc\u8000\ua9bd\u8000\ua9d0\u8000"+ - "\ua9d9\u8000\ua9e5\u8000\ua9e5\u8000\ua9f0\u8000\ua9f9\u8000\uaa29\u8000"+ - "\uaa2e\u8000\uaa31\u8000\uaa32\u8000\uaa35\u8000\uaa36\u8000\uaa43\u8000"+ - "\uaa43\u8000\uaa4c\u8000\uaa4c\u8000\uaa50\u8000\uaa59\u8000\uaa7c\u8000"+ - "\uaa7c\u8000\uaab0\u8000\uaab0\u8000\uaab2\u8000\uaab4\u8000\uaab7\u8000"+ - "\uaab8\u8000\uaabe\u8000\uaabf\u8000\uaac1\u8000\uaac1\u8000\uaaec\u8000"+ - "\uaaed\u8000\uaaf6\u8000\uaaf6\u8000\uabe5\u8000\uabe5\u8000\uabe8\u8000"+ - "\uabe8\u8000\uabed\u8000\uabed\u8000\uabf0\u8000\uabf9\u8000\ufb1e\u8000"+ - "\ufb1e\u8000\ufe00\u8000\ufe0f\u8000\ufe20\u8000\ufe2f\u8000\ufe33\u8000"+ - "\ufe34\u8000\ufe4d\u8000\ufe4f\u8000\uff10\u8000\uff19\u8000\uff3f\u8000"+ - "\uff3f\u8001\u01fd\u8001\u01fd\u8001\u02e0\u8001\u02e0\u8001\u0376\u8001"+ - "\u037a\u8001\u04a0\u8001\u04a9\u8001\u0a01\u8001\u0a03\u8001\u0a05\u8001"+ - "\u0a06\u8001\u0a0c\u8001\u0a0f\u8001\u0a38\u8001\u0a3a\u8001\u0a3f\u8001"+ - "\u0a3f\u8001\u0ae5\u8001\u0ae6\u8001\u0d24\u8001\u0d27\u8001\u0d30\u8001"+ - "\u0d39\u8001\u0eab\u8001\u0eac\u8001\u0efd\u8001\u0eff\u8001\u0f46\u8001"+ - "\u0f50\u8001\u0f82\u8001\u0f85\u8001\u1001\u8001\u1001\u8001\u1038\u8001"+ - "\u1046\u8001\u1066\u8001\u1070\u8001\u1073\u8001\u1074\u8001\u107f\u8001"+ - "\u1081\u8001\u10b3\u8001\u10b6\u8001\u10b9\u8001\u10ba\u8001\u10c2\u8001"+ - "\u10c2\u8001\u10f0\u8001\u10f9\u8001\u1100\u8001\u1102\u8001\u1127\u8001"+ - "\u112b\u8001\u112d\u8001\u1134\u8001\u1136\u8001\u113f\u8001\u1173\u8001"+ - "\u1173\u8001\u1180\u8001\u1181\u8001\u11b6\u8001\u11be\u8001\u11c9\u8001"+ - "\u11cc\u8001\u11cf\u8001\u11d9\u8001\u122f\u8001\u1231\u8001\u1234\u8001"+ - "\u1234\u8001\u1236\u8001\u1237\u8001\u123e\u8001\u123e\u8001\u1241\u8001"+ - "\u1241\u8001\u12df\u8001\u12df\u8001\u12e3\u8001\u12ea\u8001\u12f0\u8001"+ - "\u12f9\u8001\u1300\u8001\u1301\u8001\u133b\u8001\u133c\u8001\u1340\u8001"+ - "\u1340\u8001\u1366\u8001\u136c\u8001\u1370\u8001\u1374\u8001\u1438\u8001"+ - "\u143f\u8001\u1442\u8001\u1444\u8001\u1446\u8001\u1446\u8001\u1450\u8001"+ - "\u1459\u8001\u145e\u8001\u145e\u8001\u14b3\u8001\u14b8\u8001\u14ba\u8001"+ - "\u14ba\u8001\u14bf\u8001\u14c0\u8001\u14c2\u8001\u14c3\u8001\u14d0\u8001"+ - "\u14d9\u8001\u15b2\u8001\u15b5\u8001\u15bc\u8001\u15bd\u8001\u15bf\u8001"+ - "\u15c0\u8001\u15dc\u8001\u15dd\u8001\u1633\u8001\u163a\u8001\u163d\u8001"+ - "\u163d\u8001\u163f\u8001\u1640\u8001\u1650\u8001\u1659\u8001\u16ab\u8001"+ - "\u16ab\u8001\u16ad\u8001\u16ad\u8001\u16b0\u8001\u16b5\u8001\u16b7\u8001"+ - "\u16b7\u8001\u16c0\u8001\u16c9\u8001\u171d\u8001\u171f\u8001\u1722\u8001"+ - "\u1725\u8001\u1727\u8001\u172b\u8001\u1730\u8001\u1739\u8001\u182f\u8001"+ - "\u1837\u8001\u1839\u8001\u183a\u8001\u18e0\u8001\u18e9\u8001\u193b\u8001"+ - "\u193c\u8001\u193e\u8001\u193e\u8001\u1943\u8001\u1943\u8001\u1950\u8001"+ - "\u1959\u8001\u19d4\u8001\u19d7\u8001\u19da\u8001\u19db\u8001\u19e0\u8001"+ - "\u19e0\u8001\u1a01\u8001\u1a0a\u8001\u1a33\u8001\u1a38\u8001\u1a3b\u8001"+ - "\u1a3e\u8001\u1a47\u8001\u1a47\u8001\u1a51\u8001\u1a56\u8001\u1a59\u8001"+ - "\u1a5b\u8001\u1a8a\u8001\u1a96\u8001\u1a98\u8001\u1a99\u8001\u1c30\u8001"+ - "\u1c36\u8001\u1c38\u8001\u1c3d\u8001\u1c3f\u8001\u1c3f\u8001\u1c50\u8001"+ - "\u1c59\u8001\u1c92\u8001\u1ca7\u8001\u1caa\u8001\u1cb0\u8001\u1cb2\u8001"+ - "\u1cb3\u8001\u1cb5\u8001\u1cb6\u8001\u1d31\u8001\u1d36\u8001\u1d3a\u8001"+ - "\u1d3a\u8001\u1d3c\u8001\u1d3d\u8001\u1d3f\u8001\u1d45\u8001\u1d47\u8001"+ - "\u1d47\u8001\u1d50\u8001\u1d59\u8001\u1d90\u8001\u1d91\u8001\u1d95\u8001"+ - "\u1d95\u8001\u1d97\u8001\u1d97\u8001\u1da0\u8001\u1da9\u8001\u1ef3\u8001"+ - "\u1ef4\u8001\u1f00\u8001\u1f01\u8001\u1f36\u8001\u1f3a\u8001\u1f40\u8001"+ - "\u1f40\u8001\u1f42\u8001\u1f42\u8001\u1f50\u8001\u1f59\u8001\u3440\u8001"+ - "\u3440\u8001\u3447\u8001\u3455\u8001\u6a60\u8001\u6a69\u8001\u6ac0\u8001"+ - "\u6ac9\u8001\u6af0\u8001\u6af4\u8001\u6b30\u8001\u6b36\u8001\u6b50\u8001"+ - "\u6b59\u8001\u6f4f\u8001\u6f4f\u8001\u6f8f\u8001\u6f92\u8001\u6fe4\u8001"+ - "\u6fe4\u8001\ubc9d\u8001\ubc9e\u8001\ucf00\u8001\ucf2d\u8001\ucf30\u8001"+ - "\ucf46\u8001\ud167\u8001\ud169\u8001\ud17b\u8001\ud182\u8001\ud185\u8001"+ - "\ud18b\u8001\ud1aa\u8001\ud1ad\u8001\ud242\u8001\ud244\u8001\ud7ce\u8001"+ - "\ud7ff\u8001\uda00\u8001\uda36\u8001\uda3b\u8001\uda6c\u8001\uda75\u8001"+ - "\uda75\u8001\uda84\u8001\uda84\u8001\uda9b\u8001\uda9f\u8001\udaa1\u8001"+ - "\udaaf\u8001\ue000\u8001\ue006\u8001\ue008\u8001\ue018\u8001\ue01b\u8001"+ - "\ue021\u8001\ue023\u8001\ue024\u8001\ue026\u8001\ue02a\u8001\ue08f\u8001"+ - "\ue08f\u8001\ue130\u8001\ue136\u8001\ue140\u8001\ue149\u8001\ue2ae\u8001"+ - "\ue2ae\u8001\ue2ec\u8001\ue2f9\u8001\ue4ec\u8001\ue4f9\u8001\ue8d0\u8001"+ - "\ue8d6\u8001\ue944\u8001\ue94a\u8001\ue950\u8001\ue959\u8001\ufbf0\u8001"+ - "\ufbf9\u800e\u0100\u800e\u01ef\u0295\u0000$$AZ__az\u00aa\u00aa\u00b5\u00b5"+ - "\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8\u02c1\u02c6\u02d1\u02e0\u02e4"+ - "\u02ec\u02ec\u02ee\u02ee\u0370\u0374\u0376\u0377\u037a\u037d\u037f\u037f"+ - "\u0386\u0386\u0388\u038a\u038c\u038c\u038e\u03a1\u03a3\u03f5\u03f7\u0481"+ - "\u048a\u052f\u0531\u0556\u0559\u0559\u0560\u0588\u05d0\u05ea\u05ef\u05f2"+ - "\u0620\u064a\u066e\u066f\u0671\u06d3\u06d5\u06d5\u06e5\u06e6\u06ee\u06ef"+ - "\u06fa\u06fc\u06ff\u06ff\u0710\u0710\u0712\u072f\u074d\u07a5\u07b1\u07b1"+ - "\u07ca\u07ea\u07f4\u07f5\u07fa\u07fa\u0800\u0815\u081a\u081a\u0824\u0824"+ - "\u0828\u0828\u0840\u0858\u0860\u086a\u0870\u0887\u0889\u088e\u08a0\u08c9"+ - "\u0904\u0939\u093d\u093d\u0950\u0950\u0958\u0961\u0971\u0980\u0985\u098c"+ - "\u098f\u0990\u0993\u09a8\u09aa\u09b0\u09b2\u09b2\u09b6\u09b9\u09bd\u09bd"+ - "\u09ce\u09ce\u09dc\u09dd\u09df\u09e1\u09f0\u09f1\u09fc\u09fc\u0a05\u0a0a"+ - "\u0a0f\u0a10\u0a13\u0a28\u0a2a\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39"+ - "\u0a59\u0a5c\u0a5e\u0a5e\u0a72\u0a74\u0a85\u0a8d\u0a8f\u0a91\u0a93\u0aa8"+ - "\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5\u0ab9\u0abd\u0abd\u0ad0\u0ad0\u0ae0\u0ae1"+ - "\u0af9\u0af9\u0b05\u0b0c\u0b0f\u0b10\u0b13\u0b28\u0b2a\u0b30\u0b32\u0b33"+ - "\u0b35\u0b39\u0b3d\u0b3d\u0b5c\u0b5d\u0b5f\u0b61\u0b71\u0b71\u0b83\u0b83"+ - "\u0b85\u0b8a\u0b8e\u0b90\u0b92\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e\u0b9f"+ - "\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0bb9\u0bd0\u0bd0\u0c05\u0c0c\u0c0e\u0c10"+ - "\u0c12\u0c28\u0c2a\u0c39\u0c3d\u0c3d\u0c58\u0c5a\u0c5d\u0c5d\u0c60\u0c61"+ - "\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92\u0ca8\u0caa\u0cb3\u0cb5\u0cb9"+ - "\u0cbd\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04\u0d0c\u0d0e\u0d10"+ - "\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54\u0d56\u0d5f\u0d61\u0d7a\u0d7f"+ - "\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd\u0dbd\u0dc0\u0dc6\u0e01\u0e30"+ - "\u0e32\u0e33\u0e40\u0e46\u0e81\u0e82\u0e84\u0e84\u0e86\u0e8a\u0e8c\u0ea3"+ - "\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd\u0ebd\u0ec0\u0ec4\u0ec6\u0ec6"+ - "\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49\u0f6c\u0f88\u0f8c\u1000\u102a"+ - "\u103f\u103f\u1050\u1055\u105a\u105d\u1061\u1061\u1065\u1066\u106e\u1070"+ - "\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7\u10c7\u10cd\u10cd\u10d0\u10fa"+ - "\u10fc\u1248\u124a\u124d\u1250\u1256\u1258\u1258\u125a\u125d\u1260\u1288"+ - "\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8\u12be\u12c0\u12c0\u12c2\u12c5"+ - "\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318\u135a\u1380\u138f\u13a0\u13f5"+ - "\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681\u169a\u16a0\u16ea\u16f1\u16f8"+ - "\u1700\u1711\u171f\u1731\u1740\u1751\u1760\u176c\u176e\u1770\u1780\u17b3"+ - "\u17d7\u17d7\u17dc\u17dc\u1820\u1878\u1880\u1884\u1887\u18a8\u18aa\u18aa"+ - "\u18b0\u18f5\u1900\u191e\u1950\u196d\u1970\u1974\u1980\u19ab\u19b0\u19c9"+ - "\u1a00\u1a16\u1a20\u1a54\u1aa7\u1aa7\u1b05\u1b33\u1b45\u1b4c\u1b83\u1ba0"+ - "\u1bae\u1baf\u1bba\u1be5\u1c00\u1c23\u1c4d\u1c4f\u1c5a\u1c7d\u1c80\u1c88"+ - "\u1c90\u1cba\u1cbd\u1cbf\u1ce9\u1cec\u1cee\u1cf3\u1cf5\u1cf6\u1cfa\u1cfa"+ - "\u1d00\u1dbf\u1e00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48\u1f4d\u1f50\u1f57"+ - "\u1f59\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80\u1fb4\u1fb6\u1fbc"+ - "\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb\u1fe0\u1fec"+ - "\u1ff2\u1ff4\u1ff6\u1ffc\u2071\u2071\u207f\u207f\u2090\u209c\u2102\u2102"+ - "\u2107\u2107\u210a\u2113\u2115\u2115\u2119\u211d\u2124\u2124\u2126\u2126"+ - "\u2128\u2128\u212a\u212d\u212f\u2139\u213c\u213f\u2145\u2149\u214e\u214e"+ - "\u2183\u2184\u2c00\u2ce4\u2ceb\u2cee\u2cf2\u2cf3\u2d00\u2d25\u2d27\u2d27"+ - "\u2d2d\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d80\u2d96\u2da0\u2da6\u2da8\u2dae"+ - "\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6\u2dd8\u2dde"+ - "\u2e2f\u2e2f\u3005\u3006\u3031\u3035\u303b\u303c\u3041\u3096\u309d\u309f"+ - "\u30a1\u30fa\u30fc\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf\u31f0\u31ff"+ - "\u3400\u4dbf\u4e00\u8000\ua48c\u8000\ua4d0\u8000\ua4fd\u8000\ua500\u8000"+ - "\ua60c\u8000\ua610\u8000\ua61f\u8000\ua62a\u8000\ua62b\u8000\ua640\u8000"+ - "\ua66e\u8000\ua67f\u8000\ua69d\u8000\ua6a0\u8000\ua6e5\u8000\ua717\u8000"+ - "\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7ca\u8000\ua7d0\u8000"+ - "\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000\ua7d5\u8000\ua7d9\u8000\ua7f2\u8000"+ - "\ua801\u8000\ua803\u8000\ua805\u8000\ua807\u8000\ua80a\u8000\ua80c\u8000"+ - "\ua822\u8000\ua840\u8000\ua873\u8000\ua882\u8000\ua8b3\u8000\ua8f2\u8000"+ - "\ua8f7\u8000\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua8fe\u8000\ua90a\u8000"+ - "\ua925\u8000\ua930\u8000\ua946\u8000\ua960\u8000\ua97c\u8000\ua984\u8000"+ - "\ua9b2\u8000\ua9cf\u8000\ua9cf\u8000\ua9e0\u8000\ua9e4\u8000\ua9e6\u8000"+ - "\ua9ef\u8000\ua9fa\u8000\ua9fe\u8000\uaa00\u8000\uaa28\u8000\uaa40\u8000"+ - "\uaa42\u8000\uaa44\u8000\uaa4b\u8000\uaa60\u8000\uaa76\u8000\uaa7a\u8000"+ - "\uaa7a\u8000\uaa7e\u8000\uaaaf\u8000\uaab1\u8000\uaab1\u8000\uaab5\u8000"+ - "\uaab6\u8000\uaab9\u8000\uaabd\u8000\uaac0\u8000\uaac0\u8000\uaac2\u8000"+ - "\uaac2\u8000\uaadb\u8000\uaadd\u8000\uaae0\u8000\uaaea\u8000\uaaf2\u8000"+ - "\uaaf4\u8000\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000\uab11\u8000"+ - "\uab16\u8000\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000\uab30\u8000"+ - "\uab5a\u8000\uab5c\u8000\uab69\u8000\uab70\u8000\uabe2\u8000\uac00\u8000"+ - "\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000\ud7cb\u8000\ud7fb\u8000\uf900\u8000"+ - "\ufa6d\u8000\ufa70\u8000\ufad9\u8000\ufb00\u8000\ufb06\u8000\ufb13\u8000"+ - "\ufb17\u8000\ufb1d\u8000\ufb1d\u8000\ufb1f\u8000\ufb28\u8000\ufb2a\u8000"+ - "\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000\ufb40\u8000"+ - "\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000\ufbd3\u8000"+ - "\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000\ufdf0\u8000"+ - "\ufdfb\u8000\ufe70\u8000\ufe74\u8000\ufe76\u8000\ufefc\u8000\uff21\u8000"+ - "\uff3a\u8000\uff41\u8000\uff5a\u8000\uff66\u8000\uffbe\u8000\uffc2\u8000"+ - "\uffc7\u8000\uffca\u8000\uffcf\u8000\uffd2\u8000\uffd7\u8000\uffda\u8000"+ - "\uffdc\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001:\u8001<\u8001"+ - "=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001\u0280\u8001"+ - "\u029c\u8001\u02a0\u8001\u02d0\u8001\u0300\u8001\u031f\u8001\u032d\u8001"+ - "\u0340\u8001\u0342\u8001\u0349\u8001\u0350\u8001\u0375\u8001\u0380\u8001"+ - "\u039d\u8001\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001\u0400\u8001"+ - "\u049d\u8001\u04b0\u8001\u04d3\u8001\u04d8\u8001\u04fb\u8001\u0500\u8001"+ - "\u0527\u8001\u0530\u8001\u0563\u8001\u0570\u8001\u057a\u8001\u057c\u8001"+ - "\u058a\u8001\u058c\u8001\u0592\u8001\u0594\u8001\u0595\u8001\u0597\u8001"+ - "\u05a1\u8001\u05a3\u8001\u05b1\u8001\u05b3\u8001\u05b9\u8001\u05bb\u8001"+ - "\u05bc\u8001\u0600\u8001\u0736\u8001\u0740\u8001\u0755\u8001\u0760\u8001"+ - "\u0767\u8001\u0780\u8001\u0785\u8001\u0787\u8001\u07b0\u8001\u07b2\u8001"+ - "\u07ba\u8001\u0800\u8001\u0805\u8001\u0808\u8001\u0808\u8001\u080a\u8001"+ - "\u0835\u8001\u0837\u8001\u0838\u8001\u083c\u8001\u083c\u8001\u083f\u8001"+ - "\u0855\u8001\u0860\u8001\u0876\u8001\u0880\u8001\u089e\u8001\u08e0\u8001"+ - "\u08f2\u8001\u08f4\u8001\u08f5\u8001\u0900\u8001\u0915\u8001\u0920\u8001"+ - "\u0939\u8001\u0980\u8001\u09b7\u8001\u09be\u8001\u09bf\u8001\u0a00\u8001"+ - "\u0a00\u8001\u0a10\u8001\u0a13\u8001\u0a15\u8001\u0a17\u8001\u0a19\u8001"+ - "\u0a35\u8001\u0a60\u8001\u0a7c\u8001\u0a80\u8001\u0a9c\u8001\u0ac0\u8001"+ - "\u0ac7\u8001\u0ac9\u8001\u0ae4\u8001\u0b00\u8001\u0b35\u8001\u0b40\u8001"+ - "\u0b55\u8001\u0b60\u8001\u0b72\u8001\u0b80\u8001\u0b91\u8001\u0c00\u8001"+ - "\u0c48\u8001\u0c80\u8001\u0cb2\u8001\u0cc0\u8001\u0cf2\u8001\u0d00\u8001"+ - "\u0d23\u8001\u0e80\u8001\u0ea9\u8001\u0eb0\u8001\u0eb1\u8001\u0f00\u8001"+ - "\u0f1c\u8001\u0f27\u8001\u0f27\u8001\u0f30\u8001\u0f45\u8001\u0f70\u8001"+ - "\u0f81\u8001\u0fb0\u8001\u0fc4\u8001\u0fe0\u8001\u0ff6\u8001\u1003\u8001"+ - "\u1037\u8001\u1071\u8001\u1072\u8001\u1075\u8001\u1075\u8001\u1083\u8001"+ - "\u10af\u8001\u10d0\u8001\u10e8\u8001\u1103\u8001\u1126\u8001\u1144\u8001"+ - "\u1144\u8001\u1147\u8001\u1147\u8001\u1150\u8001\u1172\u8001\u1176\u8001"+ - "\u1176\u8001\u1183\u8001\u11b2\u8001\u11c1\u8001\u11c4\u8001\u11da\u8001"+ - "\u11da\u8001\u11dc\u8001\u11dc\u8001\u1200\u8001\u1211\u8001\u1213\u8001"+ - "\u122b\u8001\u123f\u8001\u1240\u8001\u1280\u8001\u1286\u8001\u1288\u8001"+ - "\u1288\u8001\u128a\u8001\u128d\u8001\u128f\u8001\u129d\u8001\u129f\u8001"+ - "\u12a8\u8001\u12b0\u8001\u12de\u8001\u1305\u8001\u130c\u8001\u130f\u8001"+ - "\u1310\u8001\u1313\u8001\u1328\u8001\u132a\u8001\u1330\u8001\u1332\u8001"+ - "\u1333\u8001\u1335\u8001\u1339\u8001\u133d\u8001\u133d\u8001\u1350\u8001"+ - "\u1350\u8001\u135d\u8001\u1361\u8001\u1400\u8001\u1434\u8001\u1447\u8001"+ - "\u144a\u8001\u145f\u8001\u1461\u8001\u1480\u8001\u14af\u8001\u14c4\u8001"+ - "\u14c5\u8001\u14c7\u8001\u14c7\u8001\u1580\u8001\u15ae\u8001\u15d8\u8001"+ - "\u15db\u8001\u1600\u8001\u162f\u8001\u1644\u8001\u1644\u8001\u1680\u8001"+ - "\u16aa\u8001\u16b8\u8001\u16b8\u8001\u1700\u8001\u171a\u8001\u1740\u8001"+ - "\u1746\u8001\u1800\u8001\u182b\u8001\u18a0\u8001\u18df\u8001\u18ff\u8001"+ - "\u1906\u8001\u1909\u8001\u1909\u8001\u190c\u8001\u1913\u8001\u1915\u8001"+ - "\u1916\u8001\u1918\u8001\u192f\u8001\u193f\u8001\u193f\u8001\u1941\u8001"+ - "\u1941\u8001\u19a0\u8001\u19a7\u8001\u19aa\u8001\u19d0\u8001\u19e1\u8001"+ - "\u19e1\u8001\u19e3\u8001\u19e3\u8001\u1a00\u8001\u1a00\u8001\u1a0b\u8001"+ - "\u1a32\u8001\u1a3a\u8001\u1a3a\u8001\u1a50\u8001\u1a50\u8001\u1a5c\u8001"+ - "\u1a89\u8001\u1a9d\u8001\u1a9d\u8001\u1ab0\u8001\u1af8\u8001\u1c00\u8001"+ - "\u1c08\u8001\u1c0a\u8001\u1c2e\u8001\u1c40\u8001\u1c40\u8001\u1c72\u8001"+ - "\u1c8f\u8001\u1d00\u8001\u1d06\u8001\u1d08\u8001\u1d09\u8001\u1d0b\u8001"+ - "\u1d30\u8001\u1d46\u8001\u1d46\u8001\u1d60\u8001\u1d65\u8001\u1d67\u8001"+ - "\u1d68\u8001\u1d6a\u8001\u1d89\u8001\u1d98\u8001\u1d98\u8001\u1ee0\u8001"+ - "\u1ef2\u8001\u1f02\u8001\u1f02\u8001\u1f04\u8001\u1f10\u8001\u1f12\u8001"+ - "\u1f33\u8001\u1fb0\u8001\u1fb0\u8001\u2000\u8001\u2399\u8001\u2480\u8001"+ - "\u2543\u8001\u2f90\u8001\u2ff0\u8001\u3000\u8001\u342f\u8001\u3441\u8001"+ - "\u3446\u8001\u4400\u8001\u4646\u8001\u6800\u8001\u6a38\u8001\u6a40\u8001"+ - "\u6a5e\u8001\u6a70\u8001\u6abe\u8001\u6ad0\u8001\u6aed\u8001\u6b00\u8001"+ - "\u6b2f\u8001\u6b40\u8001\u6b43\u8001\u6b63\u8001\u6b77\u8001\u6b7d\u8001"+ - "\u6b8f\u8001\u6e40\u8001\u6e7f\u8001\u6f00\u8001\u6f4a\u8001\u6f50\u8001"+ - "\u6f50\u8001\u6f93\u8001\u6f9f\u8001\u6fe0\u8001\u6fe1\u8001\u6fe3\u8001"+ - "\u6fe3\u8001\u7000\u8001\u87f7\u8001\u8800\u8001\u8cd5\u8001\u8d00\u8001"+ - "\u8d08\u8001\uaff0\u8001\uaff3\u8001\uaff5\u8001\uaffb\u8001\uaffd\u8001"+ - "\uaffe\u8001\ub000\u8001\ub122\u8001\ub132\u8001\ub132\u8001\ub150\u8001"+ - "\ub152\u8001\ub155\u8001\ub155\u8001\ub164\u8001\ub167\u8001\ub170\u8001"+ - "\ub2fb\u8001\ubc00\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001"+ - "\ubc88\u8001\ubc90\u8001\ubc99\u8001\ud400\u8001\ud454\u8001\ud456\u8001"+ - "\ud49c\u8001\ud49e\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001"+ - "\ud4a6\u8001\ud4a9\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001"+ - "\ud4bb\u8001\ud4bd\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001"+ - "\ud50a\u8001\ud50d\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001"+ - "\ud539\u8001\ud53b\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546\u8001"+ - "\ud546\u8001\ud54a\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001"+ - "\ud6c0\u8001\ud6c2\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001"+ - "\ud714\u8001\ud716\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750\u8001"+ - "\ud76e\u8001\ud770\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001"+ - "\ud7c2\u8001\ud7c4\u8001\ud7cb\u8001\udf00\u8001\udf1e\u8001\udf25\u8001"+ - "\udf2a\u8001\ue030\u8001\ue06d\u8001\ue100\u8001\ue12c\u8001\ue137\u8001"+ - "\ue13d\u8001\ue14e\u8001\ue14e\u8001\ue290\u8001\ue2ad\u8001\ue2c0\u8001"+ - "\ue2eb\u8001\ue4d0\u8001\ue4eb\u8001\ue7e0\u8001\ue7e6\u8001\ue7e8\u8001"+ - "\ue7eb\u8001\ue7ed\u8001\ue7ee\u8001\ue7f0\u8001\ue7fe\u8001\ue800\u8001"+ - "\ue8c4\u8001\ue900\u8001\ue943\u8001\ue94b\u8001\ue94b\u8001\uee00\u8001"+ - "\uee03\u8001\uee05\u8001\uee1f\u8001\uee21\u8001\uee22\u8001\uee24\u8001"+ - "\uee24\u8001\uee27\u8001\uee27\u8001\uee29\u8001\uee32\u8001\uee34\u8001"+ - "\uee37\u8001\uee39\u8001\uee39\u8001\uee3b\u8001\uee3b\u8001\uee42\u8001"+ - "\uee42\u8001\uee47\u8001\uee47\u8001\uee49\u8001\uee49\u8001\uee4b\u8001"+ - "\uee4b\u8001\uee4d\u8001\uee4f\u8001\uee51\u8001\uee52\u8001\uee54\u8001"+ - "\uee54\u8001\uee57\u8001\uee57\u8001\uee59\u8001\uee59\u8001\uee5b\u8001"+ - "\uee5b\u8001\uee5d\u8001\uee5d\u8001\uee5f\u8001\uee5f\u8001\uee61\u8001"+ - "\uee62\u8001\uee64\u8001\uee64\u8001\uee67\u8001\uee6a\u8001\uee6c\u8001"+ - "\uee72\u8001\uee74\u8001\uee77\u8001\uee79\u8001\uee7c\u8001\uee7e\u8001"+ - "\uee7e\u8001\uee80\u8001\uee89\u8001\uee8b\u8001\uee9b\u8001\ueea1\u8001"+ - "\ueea3\u8001\ueea5\u8001\ueea9\u8001\ueeab\u8001\ueebb\u8002\u0000\u8002"+ - "\ua6df\u8002\ua700\u8002\ub739\u8002\ub740\u8002\ub81d\u8002\ub820\u8002"+ - "\ucea1\u8002\uceb0\u8002\uebe0\u8002\uf800\u8002\ufa1d\u8003\u0000\u8003"+ - "\u134a\u8003\u1350\u8003\u23af\u0006\u0000\n\n\r\r**//[\\\u2028\u2029"+ - "\u0005\u0000\n\n\r\r//[\\\u2028\u2029\u0004\u0000\n\n\r\r\\]\u2028\u2029"+ - "\u054e\u0000\u0002\u0001\u0000\u0000\u0000\u0000\u0004\u0001\u0000\u0000"+ - "\u0000\u0000\u0006\u0001\u0000\u0000\u0000\u0000\b\u0001\u0000\u0000\u0000"+ - "\u0000\n\u0001\u0000\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000\u0000"+ - "\u000e\u0001\u0000\u0000\u0000\u0000\u0010\u0001\u0000\u0000\u0000\u0000"+ - "\u0012\u0001\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000"+ - "\u0016\u0001\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000"+ - "\u001a\u0001\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000"+ - "\u001e\u0001\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0000\""+ - "\u0001\u0000\u0000\u0000\u0000$\u0001\u0000\u0000\u0000\u0000&\u0001\u0000"+ - "\u0000\u0000\u0000(\u0001\u0000\u0000\u0000\u0000*\u0001\u0000\u0000\u0000"+ - "\u0000,\u0001\u0000\u0000\u0000\u0000.\u0001\u0000\u0000\u0000\u00000"+ - "\u0001\u0000\u0000\u0000\u00002\u0001\u0000\u0000\u0000\u00004\u0001\u0000"+ - "\u0000\u0000\u00006\u0001\u0000\u0000\u0000\u00008\u0001\u0000\u0000\u0000"+ - "\u0000:\u0001\u0000\u0000\u0000\u0000<\u0001\u0000\u0000\u0000\u0000>"+ - "\u0001\u0000\u0000\u0000\u0000@\u0001\u0000\u0000\u0000\u0000B\u0001\u0000"+ - "\u0000\u0000\u0000D\u0001\u0000\u0000\u0000\u0000F\u0001\u0000\u0000\u0000"+ - "\u0000H\u0001\u0000\u0000\u0000\u0000J\u0001\u0000\u0000\u0000\u0000L"+ - "\u0001\u0000\u0000\u0000\u0000N\u0001\u0000\u0000\u0000\u0000P\u0001\u0000"+ - "\u0000\u0000\u0000R\u0001\u0000\u0000\u0000\u0000T\u0001\u0000\u0000\u0000"+ - "\u0000V\u0001\u0000\u0000\u0000\u0000X\u0001\u0000\u0000\u0000\u0000Z"+ - "\u0001\u0000\u0000\u0000\u0000\\\u0001\u0000\u0000\u0000\u0000^\u0001"+ - "\u0000\u0000\u0000\u0000`\u0001\u0000\u0000\u0000\u0000b\u0001\u0000\u0000"+ - "\u0000\u0000d\u0001\u0000\u0000\u0000\u0000f\u0001\u0000\u0000\u0000\u0000"+ - "h\u0001\u0000\u0000\u0000\u0000j\u0001\u0000\u0000\u0000\u0000l\u0001"+ - "\u0000\u0000\u0000\u0000n\u0001\u0000\u0000\u0000\u0000p\u0001\u0000\u0000"+ - "\u0000\u0000r\u0001\u0000\u0000\u0000\u0000t\u0001\u0000\u0000\u0000\u0000"+ - "v\u0001\u0000\u0000\u0000\u0000x\u0001\u0000\u0000\u0000\u0000z\u0001"+ - "\u0000\u0000\u0000\u0000|\u0001\u0000\u0000\u0000\u0000~\u0001\u0000\u0000"+ - "\u0000\u0000\u0080\u0001\u0000\u0000\u0000\u0000\u0082\u0001\u0000\u0000"+ - "\u0000\u0000\u0084\u0001\u0000\u0000\u0000\u0000\u0086\u0001\u0000\u0000"+ - "\u0000\u0000\u0088\u0001\u0000\u0000\u0000\u0000\u008a\u0001\u0000\u0000"+ - "\u0000\u0000\u008c\u0001\u0000\u0000\u0000\u0000\u008e\u0001\u0000\u0000"+ - "\u0000\u0000\u0090\u0001\u0000\u0000\u0000\u0000\u0092\u0001\u0000\u0000"+ - "\u0000\u0000\u0094\u0001\u0000\u0000\u0000\u0000\u0096\u0001\u0000\u0000"+ - "\u0000\u0000\u0098\u0001\u0000\u0000\u0000\u0000\u009a\u0001\u0000\u0000"+ - "\u0000\u0000\u009c\u0001\u0000\u0000\u0000\u0000\u009e\u0001\u0000\u0000"+ - "\u0000\u0000\u00a0\u0001\u0000\u0000\u0000\u0000\u00a2\u0001\u0000\u0000"+ - "\u0000\u0000\u00a4\u0001\u0000\u0000\u0000\u0000\u00a6\u0001\u0000\u0000"+ - "\u0000\u0000\u00a8\u0001\u0000\u0000\u0000\u0000\u00aa\u0001\u0000\u0000"+ - "\u0000\u0000\u00ac\u0001\u0000\u0000\u0000\u0000\u00ae\u0001\u0000\u0000"+ - "\u0000\u0000\u00b0\u0001\u0000\u0000\u0000\u0000\u00b2\u0001\u0000\u0000"+ - "\u0000\u0000\u00b4\u0001\u0000\u0000\u0000\u0000\u00b6\u0001\u0000\u0000"+ - "\u0000\u0000\u00b8\u0001\u0000\u0000\u0000\u0000\u00ba\u0001\u0000\u0000"+ - "\u0000\u0000\u00bc\u0001\u0000\u0000\u0000\u0000\u00be\u0001\u0000\u0000"+ - "\u0000\u0000\u00c0\u0001\u0000\u0000\u0000\u0000\u00c2\u0001\u0000\u0000"+ - "\u0000\u0000\u00c4\u0001\u0000\u0000\u0000\u0000\u00c6\u0001\u0000\u0000"+ - "\u0000\u0000\u00c8\u0001\u0000\u0000\u0000\u0000\u00ca\u0001\u0000\u0000"+ - "\u0000\u0000\u00cc\u0001\u0000\u0000\u0000\u0000\u00ce\u0001\u0000\u0000"+ - "\u0000\u0000\u00d0\u0001\u0000\u0000\u0000\u0000\u00d2\u0001\u0000\u0000"+ - "\u0000\u0000\u00d4\u0001\u0000\u0000\u0000\u0000\u00d6\u0001\u0000\u0000"+ - "\u0000\u0000\u00d8\u0001\u0000\u0000\u0000\u0000\u00da\u0001\u0000\u0000"+ - "\u0000\u0000\u00dc\u0001\u0000\u0000\u0000\u0000\u00de\u0001\u0000\u0000"+ - "\u0000\u0000\u00e0\u0001\u0000\u0000\u0000\u0000\u00e2\u0001\u0000\u0000"+ - "\u0000\u0000\u00e4\u0001\u0000\u0000\u0000\u0000\u00e6\u0001\u0000\u0000"+ - "\u0000\u0000\u00e8\u0001\u0000\u0000\u0000\u0000\u00ea\u0001\u0000\u0000"+ - "\u0000\u0000\u00ec\u0001\u0000\u0000\u0000\u0000\u00ee\u0001\u0000\u0000"+ - "\u0000\u0000\u00f0\u0001\u0000\u0000\u0000\u0000\u00f2\u0001\u0000\u0000"+ - "\u0000\u0000\u00f4\u0001\u0000\u0000\u0000\u0000\u00f6\u0001\u0000\u0000"+ - "\u0000\u0000\u00f8\u0001\u0000\u0000\u0000\u0000\u00fa\u0001\u0000\u0000"+ - "\u0000\u0000\u00fc\u0001\u0000\u0000\u0000\u0000\u00fe\u0001\u0000\u0000"+ - "\u0000\u0000\u0100\u0001\u0000\u0000\u0000\u0000\u0102\u0001\u0000\u0000"+ - "\u0000\u0000\u0104\u0001\u0000\u0000\u0000\u0000\u0106\u0001\u0000\u0000"+ - "\u0000\u0000\u0108\u0001\u0000\u0000\u0000\u0000\u010a\u0001\u0000\u0000"+ - "\u0000\u0000\u010c\u0001\u0000\u0000\u0000\u0000\u010e\u0001\u0000\u0000"+ - "\u0000\u0000\u0110\u0001\u0000\u0000\u0000\u0000\u0112\u0001\u0000\u0000"+ - "\u0000\u0000\u0114\u0001\u0000\u0000\u0000\u0000\u0116\u0001\u0000\u0000"+ - "\u0000\u0000\u0118\u0001\u0000\u0000\u0000\u0000\u011a\u0001\u0000\u0000"+ - "\u0000\u0000\u011c\u0001\u0000\u0000\u0000\u0000\u011e\u0001\u0000\u0000"+ - "\u0000\u0000\u0120\u0001\u0000\u0000\u0000\u0000\u0122\u0001\u0000\u0000"+ - "\u0000\u0001\u0124\u0001\u0000\u0000\u0000\u0001\u0126\u0001\u0000\u0000"+ - "\u0000\u0001\u0128\u0001\u0000\u0000\u0000\u0001\u012a\u0001\u0000\u0000"+ - "\u0000\u0002\u0154\u0001\u0000\u0000\u0000\u0004\u0162\u0001\u0000\u0000"+ - "\u0000\u0006\u016d\u0001\u0000\u0000\u0000\b\u017d\u0001\u0000\u0000\u0000"+ - "\n\u017f\u0001\u0000\u0000\u0000\f\u0181\u0001\u0000\u0000\u0000\u000e"+ - "\u0183\u0001\u0000\u0000\u0000\u0010\u0185\u0001\u0000\u0000\u0000\u0012"+ - "\u0188\u0001\u0000\u0000\u0000\u0014\u018d\u0001\u0000\u0000\u0000\u0016"+ - "\u0190\u0001\u0000\u0000\u0000\u0018\u0192\u0001\u0000\u0000\u0000\u001a"+ - "\u0194\u0001\u0000\u0000\u0000\u001c\u0196\u0001\u0000\u0000\u0000\u001e"+ - "\u0198\u0001\u0000\u0000\u0000 \u019b\u0001\u0000\u0000\u0000\"\u019d"+ - "\u0001\u0000\u0000\u0000$\u01a1\u0001\u0000\u0000\u0000&\u01a3\u0001\u0000"+ - "\u0000\u0000(\u01a6\u0001\u0000\u0000\u0000*\u01a9\u0001\u0000\u0000\u0000"+ - ",\u01ab\u0001\u0000\u0000\u0000.\u01ad\u0001\u0000\u0000\u00000\u01af"+ - "\u0001\u0000\u0000\u00002\u01b1\u0001\u0000\u0000\u00004\u01b3\u0001\u0000"+ - "\u0000\u00006\u01b5\u0001\u0000\u0000\u00008\u01b7\u0001\u0000\u0000\u0000"+ - ":\u01ba\u0001\u0000\u0000\u0000<\u01bd\u0001\u0000\u0000\u0000>\u01bf"+ - "\u0001\u0000\u0000\u0000@\u01c2\u0001\u0000\u0000\u0000B\u01c4\u0001\u0000"+ - "\u0000\u0000D\u01c6\u0001\u0000\u0000\u0000F\u01c9\u0001\u0000\u0000\u0000"+ - "H\u01cc\u0001\u0000\u0000\u0000J\u01cf\u0001\u0000\u0000\u0000L\u01d2"+ - "\u0001\u0000\u0000\u0000N\u01d6\u0001\u0000\u0000\u0000P\u01da\u0001\u0000"+ - "\u0000\u0000R\u01dc\u0001\u0000\u0000\u0000T\u01de\u0001\u0000\u0000\u0000"+ - "V\u01e0\u0001\u0000\u0000\u0000X\u01e3\u0001\u0000\u0000\u0000Z\u01e6"+ - "\u0001\u0000\u0000\u0000\\\u01e9\u0001\u0000\u0000\u0000^\u01ec\u0001"+ - "\u0000\u0000\u0000`\u01ef\u0001\u0000\u0000\u0000b\u01f2\u0001\u0000\u0000"+ - "\u0000d\u01f5\u0001\u0000\u0000\u0000f\u01f9\u0001\u0000\u0000\u0000h"+ - "\u01fd\u0001\u0000\u0000\u0000j\u0202\u0001\u0000\u0000\u0000l\u0205\u0001"+ - "\u0000\u0000\u0000n\u0208\u0001\u0000\u0000\u0000p\u020b\u0001\u0000\u0000"+ - "\u0000r\u020f\u0001\u0000\u0000\u0000t\u0213\u0001\u0000\u0000\u0000v"+ - "\u0216\u0001\u0000\u0000\u0000x\u0224\u0001\u0000\u0000\u0000z\u0241\u0001"+ - "\u0000\u0000\u0000|\u0243\u0001\u0000\u0000\u0000~\u024c\u0001\u0000\u0000"+ - "\u0000\u0080\u0254\u0001\u0000\u0000\u0000\u0082\u025d\u0001\u0000\u0000"+ - "\u0000\u0084\u0266\u0001\u0000\u0000\u0000\u0086\u0271\u0001\u0000\u0000"+ - "\u0000\u0088\u027c\u0001\u0000\u0000\u0000\u008a\u0287\u0001\u0000\u0000"+ - "\u0000\u008c\u028a\u0001\u0000\u0000\u0000\u008e\u0290\u0001\u0000\u0000"+ - "\u0000\u0090\u0293\u0001\u0000\u0000\u0000\u0092\u029e\u0001\u0000\u0000"+ - "\u0000\u0094\u02a5\u0001\u0000\u0000\u0000\u0096\u02aa\u0001\u0000\u0000"+ - "\u0000\u0098\u02af\u0001\u0000\u0000\u0000\u009a\u02b3\u0001\u0000\u0000"+ - "\u0000\u009c\u02b7\u0001\u0000\u0000\u0000\u009e\u02bd\u0001\u0000\u0000"+ - "\u0000\u00a0\u02c5\u0001\u0000\u0000\u0000\u00a2\u02cc\u0001\u0000\u0000"+ - "\u0000\u00a4\u02d1\u0001\u0000\u0000\u0000\u00a6\u02da\u0001\u0000\u0000"+ - "\u0000\u00a8\u02de\u0001\u0000\u0000\u0000\u00aa\u02e5\u0001\u0000\u0000"+ - "\u0000\u00ac\u02eb\u0001\u0000\u0000\u0000\u00ae\u02f4\u0001\u0000\u0000"+ - "\u0000\u00b0\u02fd\u0001\u0000\u0000\u0000\u00b2\u0302\u0001\u0000\u0000"+ - "\u0000\u00b4\u0307\u0001\u0000\u0000\u0000\u00b6\u030f\u0001\u0000\u0000"+ - "\u0000\u00b8\u0312\u0001\u0000\u0000\u0000\u00ba\u0318\u0001\u0000\u0000"+ - "\u0000\u00bc\u031f\u0001\u0000\u0000\u0000\u00be\u0322\u0001\u0000\u0000"+ - "\u0000\u00c0\u0326\u0001\u0000\u0000\u0000\u00c2\u0329\u0001\u0000\u0000"+ - "\u0000\u00c4\u032e\u0001\u0000\u0000\u0000\u00c6\u0337\u0001\u0000\u0000"+ - "\u0000\u00c8\u033d\u0001\u0000\u0000\u0000\u00ca\u0343\u0001\u0000\u0000"+ - "\u0000\u00cc\u0349\u0001\u0000\u0000\u0000\u00ce\u0350\u0001\u0000\u0000"+ - "\u0000\u00d0\u0356\u0001\u0000\u0000\u0000\u00d2\u035b\u0001\u0000\u0000"+ - "\u0000\u00d4\u0363\u0001\u0000\u0000\u0000\u00d6\u0369\u0001\u0000\u0000"+ - "\u0000\u00d8\u036f\u0001\u0000\u0000\u0000\u00da\u0376\u0001\u0000\u0000"+ - "\u0000\u00dc\u037d\u0001\u0000\u0000\u0000\u00de\u0388\u0001\u0000\u0000"+ - "\u0000\u00e0\u038c\u0001\u0000\u0000\u0000\u00e2\u0394\u0001\u0000\u0000"+ - "\u0000\u00e4\u039b\u0001\u0000\u0000\u0000\u00e6\u03a5\u0001\u0000\u0000"+ - "\u0000\u00e8\u03ad\u0001\u0000\u0000\u0000\u00ea\u03b7\u0001\u0000\u0000"+ - "\u0000\u00ec\u03be\u0001\u0000\u0000\u0000\u00ee\u03c2\u0001\u0000\u0000"+ - "\u0000\u00f0\u03c9\u0001\u0000\u0000\u0000\u00f2\u03cf\u0001\u0000\u0000"+ - "\u0000\u00f4\u03d7\u0001\u0000\u0000\u0000\u00f6\u03de\u0001\u0000\u0000"+ - "\u0000\u00f8\u03e5\u0001\u0000\u0000\u0000\u00fa\u03ec\u0001\u0000\u0000"+ - "\u0000\u00fc\u03f6\u0001\u0000\u0000\u0000\u00fe\u03fd\u0001\u0000\u0000"+ - "\u0000\u0100\u0400\u0001\u0000\u0000\u0000\u0102\u0406\u0001\u0000\u0000"+ - "\u0000\u0104\u040b\u0001\u0000\u0000\u0000\u0106\u0417\u0001\u0000\u0000"+ - "\u0000\u0108\u0421\u0001\u0000\u0000\u0000\u010a\u0429\u0001\u0000\u0000"+ - "\u0000\u010c\u0430\u0001\u0000\u0000\u0000\u010e\u0438\u0001\u0000\u0000"+ - "\u0000\u0110\u0441\u0001\u0000\u0000\u0000\u0112\u0444\u0001\u0000\u0000"+ - "\u0000\u0114\u0446\u0001\u0000\u0000\u0000\u0116\u045d\u0001\u0000\u0000"+ - "\u0000\u0118\u0461\u0001\u0000\u0000\u0000\u011a\u0467\u0001\u0000\u0000"+ - "\u0000\u011c\u046d\u0001\u0000\u0000\u0000\u011e\u0471\u0001\u0000\u0000"+ - "\u0000\u0120\u0482\u0001\u0000\u0000\u0000\u0122\u0498\u0001\u0000\u0000"+ - "\u0000\u0124\u049c\u0001\u0000\u0000\u0000\u0126\u049f\u0001\u0000\u0000"+ - "\u0000\u0128\u04a5\u0001\u0000\u0000\u0000\u012a\u04ac\u0001\u0000\u0000"+ - "\u0000\u012c\u04b2\u0001\u0000\u0000\u0000\u012e\u04b8\u0001\u0000\u0000"+ - "\u0000\u0130\u04bf\u0001\u0000\u0000\u0000\u0132\u04c3\u0001\u0000\u0000"+ - "\u0000\u0134\u04c5\u0001\u0000\u0000\u0000\u0136\u04d9\u0001\u0000\u0000"+ - "\u0000\u0138\u04db\u0001\u0000\u0000\u0000\u013a\u04e4\u0001\u0000\u0000"+ - "\u0000\u013c\u04e6\u0001\u0000\u0000\u0000\u013e\u04ea\u0001\u0000\u0000"+ - "\u0000\u0140\u04ec\u0001\u0000\u0000\u0000\u0142\u04f2\u0001\u0000\u0000"+ - "\u0000\u0144\u04fc\u0001\u0000\u0000\u0000\u0146\u04fe\u0001\u0000\u0000"+ - "\u0000\u0148\u0509\u0001\u0000\u0000\u0000\u014a\u050e\u0001\u0000\u0000"+ - "\u0000\u014c\u051a\u0001\u0000\u0000\u0000\u014e\u0526\u0001\u0000\u0000"+ - "\u0000\u0150\u052a\u0001\u0000\u0000\u0000\u0152\u052c\u0001\u0000\u0000"+ - "\u0000\u0154\u0155\u0005/\u0000\u0000\u0155\u0156\u0005*\u0000\u0000\u0156"+ - "\u015a\u0001\u0000\u0000\u0000\u0157\u0159\t\u0000\u0000\u0000\u0158\u0157"+ - "\u0001\u0000\u0000\u0000\u0159\u015c\u0001\u0000\u0000\u0000\u015a\u015b"+ - "\u0001\u0000\u0000\u0000\u015a\u0158\u0001\u0000\u0000\u0000\u015b\u015d"+ - "\u0001\u0000\u0000\u0000\u015c\u015a\u0001\u0000\u0000\u0000\u015d\u015e"+ - "\u0005*\u0000\u0000\u015e\u015f\u0005/\u0000\u0000\u015f\u0160\u0001\u0000"+ - "\u0000\u0000\u0160\u0161\u0006\u0000\u0000\u0000\u0161\u0003\u0001\u0000"+ - "\u0000\u0000\u0162\u0163\u0005/\u0000\u0000\u0163\u0164\u0005/\u0000\u0000"+ - "\u0164\u0168\u0001\u0000\u0000\u0000\u0165\u0167\b\u0000\u0000\u0000\u0166"+ - "\u0165\u0001\u0000\u0000\u0000\u0167\u016a\u0001\u0000\u0000\u0000\u0168"+ - "\u0166\u0001\u0000\u0000\u0000\u0168\u0169\u0001\u0000\u0000\u0000\u0169"+ - "\u016b\u0001\u0000\u0000\u0000\u016a\u0168\u0001\u0000\u0000\u0000\u016b"+ - "\u016c\u0006\u0001\u0000\u0000\u016c\u0005\u0001\u0000\u0000\u0000\u016d"+ - "\u016e\u0005/\u0000\u0000\u016e\u0172\u0003\u014c\u00a5\u0000\u016f\u0171"+ - "\u0003\u014e\u00a6\u0000\u0170\u016f\u0001\u0000\u0000\u0000\u0171\u0174"+ - "\u0001\u0000\u0000\u0000\u0172\u0170\u0001\u0000\u0000\u0000\u0172\u0173"+ - "\u0001\u0000\u0000\u0000\u0173\u0175\u0001\u0000\u0000\u0000\u0174\u0172"+ - "\u0001\u0000\u0000\u0000\u0175\u0176\u0004\u0002\u0000\u0000\u0176\u017a"+ - "\u0005/\u0000\u0000\u0177\u0179\u0003\u0148\u00a3\u0000\u0178\u0177\u0001"+ - "\u0000\u0000\u0000\u0179\u017c\u0001\u0000\u0000\u0000\u017a\u0178\u0001"+ - "\u0000\u0000\u0000\u017a\u017b\u0001\u0000\u0000\u0000\u017b\u0007\u0001"+ - "\u0000\u0000\u0000\u017c\u017a\u0001\u0000\u0000\u0000\u017d\u017e\u0005"+ - "[\u0000\u0000\u017e\t\u0001\u0000\u0000\u0000\u017f\u0180\u0005]\u0000"+ - "\u0000\u0180\u000b\u0001\u0000\u0000\u0000\u0181\u0182\u0005(\u0000\u0000"+ - "\u0182\r\u0001\u0000\u0000\u0000\u0183\u0184\u0005)\u0000\u0000\u0184"+ - "\u000f\u0001\u0000\u0000\u0000\u0185\u0186\u0005{\u0000\u0000\u0186\u0187"+ - "\u0006\u0007\u0001\u0000\u0187\u0011\u0001\u0000\u0000\u0000\u0188\u0189"+ - "\u0004\b\u0001\u0000\u0189\u018a\u0005}\u0000\u0000\u018a\u018b\u0001"+ - "\u0000\u0000\u0000\u018b\u018c\u0006\b\u0002\u0000\u018c\u0013\u0001\u0000"+ - "\u0000\u0000\u018d\u018e\u0005}\u0000\u0000\u018e\u018f\u0006\t\u0003"+ - "\u0000\u018f\u0015\u0001\u0000\u0000\u0000\u0190\u0191\u0005;\u0000\u0000"+ - "\u0191\u0017\u0001\u0000\u0000\u0000\u0192\u0193\u0005,\u0000\u0000\u0193"+ - "\u0019\u0001\u0000\u0000\u0000\u0194\u0195\u0005=\u0000\u0000\u0195\u001b"+ - "\u0001\u0000\u0000\u0000\u0196\u0197\u0005?\u0000\u0000\u0197\u001d\u0001"+ - "\u0000\u0000\u0000\u0198\u0199\u0005?\u0000\u0000\u0199\u019a\u0005.\u0000"+ - "\u0000\u019a\u001f\u0001\u0000\u0000\u0000\u019b\u019c\u0005:\u0000\u0000"+ - "\u019c!\u0001\u0000\u0000\u0000\u019d\u019e\u0005.\u0000\u0000\u019e\u019f"+ - "\u0005.\u0000\u0000\u019f\u01a0\u0005.\u0000\u0000\u01a0#\u0001\u0000"+ - "\u0000\u0000\u01a1\u01a2\u0005.\u0000\u0000\u01a2%\u0001\u0000\u0000\u0000"+ - "\u01a3\u01a4\u0005+\u0000\u0000\u01a4\u01a5\u0005+\u0000\u0000\u01a5\'"+ - "\u0001\u0000\u0000\u0000\u01a6\u01a7\u0005-\u0000\u0000\u01a7\u01a8\u0005"+ - "-\u0000\u0000\u01a8)\u0001\u0000\u0000\u0000\u01a9\u01aa\u0005+\u0000"+ - "\u0000\u01aa+\u0001\u0000\u0000\u0000\u01ab\u01ac\u0005-\u0000\u0000\u01ac"+ - "-\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005~\u0000\u0000\u01ae/\u0001"+ - "\u0000\u0000\u0000\u01af\u01b0\u0005!\u0000\u0000\u01b01\u0001\u0000\u0000"+ - "\u0000\u01b1\u01b2\u0005*\u0000\u0000\u01b23\u0001\u0000\u0000\u0000\u01b3"+ - "\u01b4\u0005/\u0000\u0000\u01b45\u0001\u0000\u0000\u0000\u01b5\u01b6\u0005"+ - "%\u0000\u0000\u01b67\u0001\u0000\u0000\u0000\u01b7\u01b8\u0005*\u0000"+ - "\u0000\u01b8\u01b9\u0005*\u0000\u0000\u01b99\u0001\u0000\u0000\u0000\u01ba"+ - "\u01bb\u0005?\u0000\u0000\u01bb\u01bc\u0005?\u0000\u0000\u01bc;\u0001"+ - "\u0000\u0000\u0000\u01bd\u01be\u0005#\u0000\u0000\u01be=\u0001\u0000\u0000"+ - "\u0000\u01bf\u01c0\u0005<\u0000\u0000\u01c0\u01c1\u0005<\u0000\u0000\u01c1"+ - "?\u0001\u0000\u0000\u0000\u01c2\u01c3\u0005<\u0000\u0000\u01c3A\u0001"+ - "\u0000\u0000\u0000\u01c4\u01c5\u0005>\u0000\u0000\u01c5C\u0001\u0000\u0000"+ - "\u0000\u01c6\u01c7\u0005<\u0000\u0000\u01c7\u01c8\u0005=\u0000\u0000\u01c8"+ - "E\u0001\u0000\u0000\u0000\u01c9\u01ca\u0005>\u0000\u0000\u01ca\u01cb\u0005"+ - "=\u0000\u0000\u01cbG\u0001\u0000\u0000\u0000\u01cc\u01cd\u0005=\u0000"+ - "\u0000\u01cd\u01ce\u0005=\u0000\u0000\u01ceI\u0001\u0000\u0000\u0000\u01cf"+ - "\u01d0\u0005!\u0000\u0000\u01d0\u01d1\u0005=\u0000\u0000\u01d1K\u0001"+ - "\u0000\u0000\u0000\u01d2\u01d3\u0005=\u0000\u0000\u01d3\u01d4\u0005=\u0000"+ - "\u0000\u01d4\u01d5\u0005=\u0000\u0000\u01d5M\u0001\u0000\u0000\u0000\u01d6"+ - "\u01d7\u0005!\u0000\u0000\u01d7\u01d8\u0005=\u0000\u0000\u01d8\u01d9\u0005"+ - "=\u0000\u0000\u01d9O\u0001\u0000\u0000\u0000\u01da\u01db\u0005&\u0000"+ - "\u0000\u01dbQ\u0001\u0000\u0000\u0000\u01dc\u01dd\u0005^\u0000\u0000\u01dd"+ - "S\u0001\u0000\u0000\u0000\u01de\u01df\u0005|\u0000\u0000\u01dfU\u0001"+ - "\u0000\u0000\u0000\u01e0\u01e1\u0005&\u0000\u0000\u01e1\u01e2\u0005&\u0000"+ - "\u0000\u01e2W\u0001\u0000\u0000\u0000\u01e3\u01e4\u0005|\u0000\u0000\u01e4"+ - "\u01e5\u0005|\u0000\u0000\u01e5Y\u0001\u0000\u0000\u0000\u01e6\u01e7\u0005"+ - "*\u0000\u0000\u01e7\u01e8\u0005=\u0000\u0000\u01e8[\u0001\u0000\u0000"+ - "\u0000\u01e9\u01ea\u0005/\u0000\u0000\u01ea\u01eb\u0005=\u0000\u0000\u01eb"+ - "]\u0001\u0000\u0000\u0000\u01ec\u01ed\u0005%\u0000\u0000\u01ed\u01ee\u0005"+ - "=\u0000\u0000\u01ee_\u0001\u0000\u0000\u0000\u01ef\u01f0\u0005+\u0000"+ - "\u0000\u01f0\u01f1\u0005=\u0000\u0000\u01f1a\u0001\u0000\u0000\u0000\u01f2"+ - "\u01f3\u0005-\u0000\u0000\u01f3\u01f4\u0005=\u0000\u0000\u01f4c\u0001"+ - "\u0000\u0000\u0000\u01f5\u01f6\u0005<\u0000\u0000\u01f6\u01f7\u0005<\u0000"+ - "\u0000\u01f7\u01f8\u0005=\u0000\u0000\u01f8e\u0001\u0000\u0000\u0000\u01f9"+ - "\u01fa\u0005>\u0000\u0000\u01fa\u01fb\u0005>\u0000\u0000\u01fb\u01fc\u0005"+ - "=\u0000\u0000\u01fcg\u0001\u0000\u0000\u0000\u01fd\u01fe\u0005>\u0000"+ - "\u0000\u01fe\u01ff\u0005>\u0000\u0000\u01ff\u0200\u0005>\u0000\u0000\u0200"+ - "\u0201\u0005=\u0000\u0000\u0201i\u0001\u0000\u0000\u0000\u0202\u0203\u0005"+ - "&\u0000\u0000\u0203\u0204\u0005=\u0000\u0000\u0204k\u0001\u0000\u0000"+ - "\u0000\u0205\u0206\u0005^\u0000\u0000\u0206\u0207\u0005=\u0000\u0000\u0207"+ - "m\u0001\u0000\u0000\u0000\u0208\u0209\u0005|\u0000\u0000\u0209\u020a\u0005"+ - "=\u0000\u0000\u020ao\u0001\u0000\u0000\u0000\u020b\u020c\u0005*\u0000"+ - "\u0000\u020c\u020d\u0005*\u0000\u0000\u020d\u020e\u0005=\u0000\u0000\u020e"+ - "q\u0001\u0000\u0000\u0000\u020f\u0210\u0005?\u0000\u0000\u0210\u0211\u0005"+ - "?\u0000\u0000\u0211\u0212\u0005=\u0000\u0000\u0212s\u0001\u0000\u0000"+ - "\u0000\u0213\u0214\u0005=\u0000\u0000\u0214\u0215\u0005>\u0000\u0000\u0215"+ - "u\u0001\u0000\u0000\u0000\u0216\u0217\u0005n\u0000\u0000\u0217\u0218\u0005"+ - "u\u0000\u0000\u0218\u0219\u0005l\u0000\u0000\u0219\u021a\u0005l\u0000"+ - "\u0000\u021aw\u0001\u0000\u0000\u0000\u021b\u021c\u0005t\u0000\u0000\u021c"+ - "\u021d\u0005r\u0000\u0000\u021d\u021e\u0005u\u0000\u0000\u021e\u0225\u0005"+ - "e\u0000\u0000\u021f\u0220\u0005f\u0000\u0000\u0220\u0221\u0005a\u0000"+ - "\u0000\u0221\u0222\u0005l\u0000\u0000\u0222\u0223\u0005s\u0000\u0000\u0223"+ - "\u0225\u0005e\u0000\u0000\u0224\u021b\u0001\u0000\u0000\u0000\u0224\u021f"+ - "\u0001\u0000\u0000\u0000\u0225y\u0001\u0000\u0000\u0000\u0226\u0227\u0003"+ - "\u0144\u00a1\u0000\u0227\u0228\u0005.\u0000\u0000\u0228\u022c\u0007\u0001"+ - "\u0000\u0000\u0229\u022b\u0007\u0002\u0000\u0000\u022a\u0229\u0001\u0000"+ - "\u0000\u0000\u022b\u022e\u0001\u0000\u0000\u0000\u022c\u022a\u0001\u0000"+ - "\u0000\u0000\u022c\u022d\u0001\u0000\u0000\u0000\u022d\u0230\u0001\u0000"+ - "\u0000\u0000\u022e\u022c\u0001\u0000\u0000\u0000\u022f\u0231\u0003\u0146"+ - "\u00a2\u0000\u0230\u022f\u0001\u0000\u0000\u0000\u0230\u0231\u0001\u0000"+ - "\u0000\u0000\u0231\u0242\u0001\u0000\u0000\u0000\u0232\u0233\u0005.\u0000"+ - "\u0000\u0233\u0237\u0007\u0001\u0000\u0000\u0234\u0236\u0007\u0002\u0000"+ - "\u0000\u0235\u0234\u0001\u0000\u0000\u0000\u0236\u0239\u0001\u0000\u0000"+ - "\u0000\u0237\u0235\u0001\u0000\u0000\u0000\u0237\u0238\u0001\u0000\u0000"+ - "\u0000\u0238\u023b\u0001\u0000\u0000\u0000\u0239\u0237\u0001\u0000\u0000"+ - "\u0000\u023a\u023c\u0003\u0146\u00a2\u0000\u023b\u023a\u0001\u0000\u0000"+ - "\u0000\u023b\u023c\u0001\u0000\u0000\u0000\u023c\u0242\u0001\u0000\u0000"+ - "\u0000\u023d\u023f\u0003\u0144\u00a1\u0000\u023e\u0240\u0003\u0146\u00a2"+ - "\u0000\u023f\u023e\u0001\u0000\u0000\u0000\u023f\u0240\u0001\u0000\u0000"+ - "\u0000\u0240\u0242\u0001\u0000\u0000\u0000\u0241\u0226\u0001\u0000\u0000"+ - "\u0000\u0241\u0232\u0001\u0000\u0000\u0000\u0241\u023d\u0001\u0000\u0000"+ - "\u0000\u0242{\u0001\u0000\u0000\u0000\u0243\u0244\u00050\u0000\u0000\u0244"+ - "\u0245\u0007\u0003\u0000\u0000\u0245\u0249\u0007\u0004\u0000\u0000\u0246"+ - "\u0248\u0003\u0142\u00a0\u0000\u0247\u0246\u0001\u0000\u0000\u0000\u0248"+ - "\u024b\u0001\u0000\u0000\u0000\u0249\u0247\u0001\u0000\u0000\u0000\u0249"+ - "\u024a\u0001\u0000\u0000\u0000\u024a}\u0001\u0000\u0000\u0000\u024b\u0249"+ - "\u0001\u0000\u0000\u0000\u024c\u024e\u00050\u0000\u0000\u024d\u024f\u0007"+ - "\u0005\u0000\u0000\u024e\u024d\u0001\u0000\u0000\u0000\u024f\u0250\u0001"+ - "\u0000\u0000\u0000\u0250\u024e\u0001\u0000\u0000\u0000\u0250\u0251\u0001"+ - "\u0000\u0000\u0000\u0251\u0252\u0001\u0000\u0000\u0000\u0252\u0253\u0004"+ - ">\u0002\u0000\u0253\u007f\u0001\u0000\u0000\u0000\u0254\u0255\u00050\u0000"+ - "\u0000\u0255\u0256\u0007\u0006\u0000\u0000\u0256\u025a\u0007\u0005\u0000"+ - "\u0000\u0257\u0259\u0007\u0007\u0000\u0000\u0258\u0257\u0001\u0000\u0000"+ - "\u0000\u0259\u025c\u0001\u0000\u0000\u0000\u025a\u0258\u0001\u0000\u0000"+ - "\u0000\u025a\u025b\u0001\u0000\u0000\u0000\u025b\u0081\u0001\u0000\u0000"+ - "\u0000\u025c\u025a\u0001\u0000\u0000\u0000\u025d\u025e\u00050\u0000\u0000"+ - "\u025e\u025f\u0007\b\u0000\u0000\u025f\u0263\u0007\t\u0000\u0000\u0260"+ - "\u0262\u0007\n\u0000\u0000\u0261\u0260\u0001\u0000\u0000\u0000\u0262\u0265"+ - "\u0001\u0000\u0000\u0000\u0263\u0261\u0001\u0000\u0000\u0000\u0263\u0264"+ - "\u0001\u0000\u0000\u0000\u0264\u0083\u0001\u0000\u0000\u0000\u0265\u0263"+ - "\u0001\u0000\u0000\u0000\u0266\u0267\u00050\u0000\u0000\u0267\u0268\u0007"+ - "\u0003\u0000\u0000\u0268\u026c\u0007\u0004\u0000\u0000\u0269\u026b\u0003"+ - "\u0142\u00a0\u0000\u026a\u0269\u0001\u0000\u0000\u0000\u026b\u026e\u0001"+ - "\u0000\u0000\u0000\u026c\u026a\u0001\u0000\u0000\u0000\u026c\u026d\u0001"+ - "\u0000\u0000\u0000\u026d\u026f\u0001\u0000\u0000\u0000\u026e\u026c\u0001"+ - "\u0000\u0000\u0000\u026f\u0270\u0005n\u0000\u0000\u0270\u0085\u0001\u0000"+ - "\u0000\u0000\u0271\u0272\u00050\u0000\u0000\u0272\u0273\u0007\u0006\u0000"+ - "\u0000\u0273\u0277\u0007\u0005\u0000\u0000\u0274\u0276\u0007\u0007\u0000"+ - "\u0000\u0275\u0274\u0001\u0000\u0000\u0000\u0276\u0279\u0001\u0000\u0000"+ - "\u0000\u0277\u0275\u0001\u0000\u0000\u0000\u0277\u0278\u0001\u0000\u0000"+ - "\u0000\u0278\u027a\u0001\u0000\u0000\u0000\u0279\u0277\u0001\u0000\u0000"+ - "\u0000\u027a\u027b\u0005n\u0000\u0000\u027b\u0087\u0001\u0000\u0000\u0000"+ - "\u027c\u027d\u00050\u0000\u0000\u027d\u027e\u0007\b\u0000\u0000\u027e"+ - "\u0282\u0007\t\u0000\u0000\u027f\u0281\u0007\n\u0000\u0000\u0280\u027f"+ - "\u0001\u0000\u0000\u0000\u0281\u0284\u0001\u0000\u0000\u0000\u0282\u0280"+ - "\u0001\u0000\u0000\u0000\u0282\u0283\u0001\u0000\u0000\u0000\u0283\u0285"+ - "\u0001\u0000\u0000\u0000\u0284\u0282\u0001\u0000\u0000\u0000\u0285\u0286"+ - "\u0005n\u0000\u0000\u0286\u0089\u0001\u0000\u0000\u0000\u0287\u0288\u0003"+ - "\u0144\u00a1\u0000\u0288\u0289\u0005n\u0000\u0000\u0289\u008b\u0001\u0000"+ - "\u0000\u0000\u028a\u028b\u0005b\u0000\u0000\u028b\u028c\u0005r\u0000\u0000"+ - "\u028c\u028d\u0005e\u0000\u0000\u028d\u028e\u0005a\u0000\u0000\u028e\u028f"+ - "\u0005k\u0000\u0000\u028f\u008d\u0001\u0000\u0000\u0000\u0290\u0291\u0005"+ - "d\u0000\u0000\u0291\u0292\u0005o\u0000\u0000\u0292\u008f\u0001\u0000\u0000"+ - "\u0000\u0293\u0294\u0005i\u0000\u0000\u0294\u0295\u0005n\u0000\u0000\u0295"+ - "\u0296\u0005s\u0000\u0000\u0296\u0297\u0005t\u0000\u0000\u0297\u0298\u0005"+ - "a\u0000\u0000\u0298\u0299\u0005n\u0000\u0000\u0299\u029a\u0005c\u0000"+ - "\u0000\u029a\u029b\u0005e\u0000\u0000\u029b\u029c\u0005o\u0000\u0000\u029c"+ - "\u029d\u0005f\u0000\u0000\u029d\u0091\u0001\u0000\u0000\u0000\u029e\u029f"+ - "\u0005t\u0000\u0000\u029f\u02a0\u0005y\u0000\u0000\u02a0\u02a1\u0005p"+ - "\u0000\u0000\u02a1\u02a2\u0005e\u0000\u0000\u02a2\u02a3\u0005o\u0000\u0000"+ - "\u02a3\u02a4\u0005f\u0000\u0000\u02a4\u0093\u0001\u0000\u0000\u0000\u02a5"+ - "\u02a6\u0005c\u0000\u0000\u02a6\u02a7\u0005a\u0000\u0000\u02a7\u02a8\u0005"+ - "s\u0000\u0000\u02a8\u02a9\u0005e\u0000\u0000\u02a9\u0095\u0001\u0000\u0000"+ - "\u0000\u02aa\u02ab\u0005e\u0000\u0000\u02ab\u02ac\u0005l\u0000\u0000\u02ac"+ - "\u02ad\u0005s\u0000\u0000\u02ad\u02ae\u0005e\u0000\u0000\u02ae\u0097\u0001"+ - "\u0000\u0000\u0000\u02af\u02b0\u0005n\u0000\u0000\u02b0\u02b1\u0005e\u0000"+ - "\u0000\u02b1\u02b2\u0005w\u0000\u0000\u02b2\u0099\u0001\u0000\u0000\u0000"+ - "\u02b3\u02b4\u0005v\u0000\u0000\u02b4\u02b5\u0005a\u0000\u0000\u02b5\u02b6"+ - "\u0005r\u0000\u0000\u02b6\u009b\u0001\u0000\u0000\u0000\u02b7\u02b8\u0005"+ - "c\u0000\u0000\u02b8\u02b9\u0005a\u0000\u0000\u02b9\u02ba\u0005t\u0000"+ - "\u0000\u02ba\u02bb\u0005c\u0000\u0000\u02bb\u02bc\u0005h\u0000\u0000\u02bc"+ - "\u009d\u0001\u0000\u0000\u0000\u02bd\u02be\u0005f\u0000\u0000\u02be\u02bf"+ - "\u0005i\u0000\u0000\u02bf\u02c0\u0005n\u0000\u0000\u02c0\u02c1\u0005a"+ - "\u0000\u0000\u02c1\u02c2\u0005l\u0000\u0000\u02c2\u02c3\u0005l\u0000\u0000"+ - "\u02c3\u02c4\u0005y\u0000\u0000\u02c4\u009f\u0001\u0000\u0000\u0000\u02c5"+ - "\u02c6\u0005r\u0000\u0000\u02c6\u02c7\u0005e\u0000\u0000\u02c7\u02c8\u0005"+ - "t\u0000\u0000\u02c8\u02c9\u0005u\u0000\u0000\u02c9\u02ca\u0005r\u0000"+ - "\u0000\u02ca\u02cb\u0005n\u0000\u0000\u02cb\u00a1\u0001\u0000\u0000\u0000"+ - "\u02cc\u02cd\u0005v\u0000\u0000\u02cd\u02ce\u0005o\u0000\u0000\u02ce\u02cf"+ - "\u0005i\u0000\u0000\u02cf\u02d0\u0005d\u0000\u0000\u02d0\u00a3\u0001\u0000"+ - "\u0000\u0000\u02d1\u02d2\u0005c\u0000\u0000\u02d2\u02d3\u0005o\u0000\u0000"+ - "\u02d3\u02d4\u0005n\u0000\u0000\u02d4\u02d5\u0005t\u0000\u0000\u02d5\u02d6"+ - "\u0005i\u0000\u0000\u02d6\u02d7\u0005n\u0000\u0000\u02d7\u02d8\u0005u"+ - "\u0000\u0000\u02d8\u02d9\u0005e\u0000\u0000\u02d9\u00a5\u0001\u0000\u0000"+ - "\u0000\u02da\u02db\u0005f\u0000\u0000\u02db\u02dc\u0005o\u0000\u0000\u02dc"+ - "\u02dd\u0005r\u0000\u0000\u02dd\u00a7\u0001\u0000\u0000\u0000\u02de\u02df"+ - "\u0005s\u0000\u0000\u02df\u02e0\u0005w\u0000\u0000\u02e0\u02e1\u0005i"+ - "\u0000\u0000\u02e1\u02e2\u0005t\u0000\u0000\u02e2\u02e3\u0005c\u0000\u0000"+ - "\u02e3\u02e4\u0005h\u0000\u0000\u02e4\u00a9\u0001\u0000\u0000\u0000\u02e5"+ - "\u02e6\u0005w\u0000\u0000\u02e6\u02e7\u0005h\u0000\u0000\u02e7\u02e8\u0005"+ - "i\u0000\u0000\u02e8\u02e9\u0005l\u0000\u0000\u02e9\u02ea\u0005e\u0000"+ - "\u0000\u02ea\u00ab\u0001\u0000\u0000\u0000\u02eb\u02ec\u0005d\u0000\u0000"+ - "\u02ec\u02ed\u0005e\u0000\u0000\u02ed\u02ee\u0005b\u0000\u0000\u02ee\u02ef"+ - "\u0005u\u0000\u0000\u02ef\u02f0\u0005g\u0000\u0000\u02f0\u02f1\u0005g"+ - "\u0000\u0000\u02f1\u02f2\u0005e\u0000\u0000\u02f2\u02f3\u0005r\u0000\u0000"+ - "\u02f3\u00ad\u0001\u0000\u0000\u0000\u02f4\u02f5\u0005f\u0000\u0000\u02f5"+ - "\u02f6\u0005u\u0000\u0000\u02f6\u02f7\u0005n\u0000\u0000\u02f7\u02f8\u0005"+ - "c\u0000\u0000\u02f8\u02f9\u0005t\u0000\u0000\u02f9\u02fa\u0005i\u0000"+ - "\u0000\u02fa\u02fb\u0005o\u0000\u0000\u02fb\u02fc\u0005n\u0000\u0000\u02fc"+ - "\u00af\u0001\u0000\u0000\u0000\u02fd\u02fe\u0005t\u0000\u0000\u02fe\u02ff"+ - "\u0005h\u0000\u0000\u02ff\u0300\u0005i\u0000\u0000\u0300\u0301\u0005s"+ - "\u0000\u0000\u0301\u00b1\u0001\u0000\u0000\u0000\u0302\u0303\u0005w\u0000"+ - "\u0000\u0303\u0304\u0005i\u0000\u0000\u0304\u0305\u0005t\u0000\u0000\u0305"+ - "\u0306\u0005h\u0000\u0000\u0306\u00b3\u0001\u0000\u0000\u0000\u0307\u0308"+ - "\u0005d\u0000\u0000\u0308\u0309\u0005e\u0000\u0000\u0309\u030a\u0005f"+ - "\u0000\u0000\u030a\u030b\u0005a\u0000\u0000\u030b\u030c\u0005u\u0000\u0000"+ - "\u030c\u030d\u0005l\u0000\u0000\u030d\u030e\u0005t\u0000\u0000\u030e\u00b5"+ - "\u0001\u0000\u0000\u0000\u030f\u0310\u0005i\u0000\u0000\u0310\u0311\u0005"+ - "f\u0000\u0000\u0311\u00b7\u0001\u0000\u0000\u0000\u0312\u0313\u0005t\u0000"+ - "\u0000\u0313\u0314\u0005h\u0000\u0000\u0314\u0315\u0005r\u0000\u0000\u0315"+ - "\u0316\u0005o\u0000\u0000\u0316\u0317\u0005w\u0000\u0000\u0317\u00b9\u0001"+ - "\u0000\u0000\u0000\u0318\u0319\u0005d\u0000\u0000\u0319\u031a\u0005e\u0000"+ - "\u0000\u031a\u031b\u0005l\u0000\u0000\u031b\u031c\u0005e\u0000\u0000\u031c"+ - "\u031d\u0005t\u0000\u0000\u031d\u031e\u0005e\u0000\u0000\u031e\u00bb\u0001"+ - "\u0000\u0000\u0000\u031f\u0320\u0005i\u0000\u0000\u0320\u0321\u0005n\u0000"+ - "\u0000\u0321\u00bd\u0001\u0000\u0000\u0000\u0322\u0323\u0005t\u0000\u0000"+ - "\u0323\u0324\u0005r\u0000\u0000\u0324\u0325\u0005y\u0000\u0000\u0325\u00bf"+ - "\u0001\u0000\u0000\u0000\u0326\u0327\u0005a\u0000\u0000\u0327\u0328\u0005"+ - "s\u0000\u0000\u0328\u00c1\u0001\u0000\u0000\u0000\u0329\u032a\u0005f\u0000"+ - "\u0000\u032a\u032b\u0005r\u0000\u0000\u032b\u032c\u0005o\u0000\u0000\u032c"+ - "\u032d\u0005m\u0000\u0000\u032d\u00c3\u0001\u0000\u0000\u0000\u032e\u032f"+ - "\u0005r\u0000\u0000\u032f\u0330\u0005e\u0000\u0000\u0330\u0331\u0005a"+ - "\u0000\u0000\u0331\u0332\u0005d\u0000\u0000\u0332\u0333\u0005o\u0000\u0000"+ - "\u0333\u0334\u0005n\u0000\u0000\u0334\u0335\u0005l\u0000\u0000\u0335\u0336"+ - "\u0005y\u0000\u0000\u0336\u00c5\u0001\u0000\u0000\u0000\u0337\u0338\u0005"+ - "a\u0000\u0000\u0338\u0339\u0005s\u0000\u0000\u0339\u033a\u0005y\u0000"+ - "\u0000\u033a\u033b\u0005n\u0000\u0000\u033b\u033c\u0005c\u0000\u0000\u033c"+ - "\u00c7\u0001\u0000\u0000\u0000\u033d\u033e\u0005a\u0000\u0000\u033e\u033f"+ - "\u0005w\u0000\u0000\u033f\u0340\u0005a\u0000\u0000\u0340\u0341\u0005i"+ - "\u0000\u0000\u0341\u0342\u0005t\u0000\u0000\u0342\u00c9\u0001\u0000\u0000"+ - "\u0000\u0343\u0344\u0005y\u0000\u0000\u0344\u0345\u0005i\u0000\u0000\u0345"+ - "\u0346\u0005e\u0000\u0000\u0346\u0347\u0005l\u0000\u0000\u0347\u0348\u0005"+ - "d\u0000\u0000\u0348\u00cb\u0001\u0000\u0000\u0000\u0349\u034a\u0005y\u0000"+ - "\u0000\u034a\u034b\u0005i\u0000\u0000\u034b\u034c\u0005e\u0000\u0000\u034c"+ - "\u034d\u0005l\u0000\u0000\u034d\u034e\u0005d\u0000\u0000\u034e\u034f\u0005"+ - "*\u0000\u0000\u034f\u00cd\u0001\u0000\u0000\u0000\u0350\u0351\u0005c\u0000"+ - "\u0000\u0351\u0352\u0005l\u0000\u0000\u0352\u0353\u0005a\u0000\u0000\u0353"+ - "\u0354\u0005s\u0000\u0000\u0354\u0355\u0005s\u0000\u0000\u0355\u00cf\u0001"+ - "\u0000\u0000\u0000\u0356\u0357\u0005e\u0000\u0000\u0357\u0358\u0005n\u0000"+ - "\u0000\u0358\u0359\u0005u\u0000\u0000\u0359\u035a\u0005m\u0000\u0000\u035a"+ - "\u00d1\u0001\u0000\u0000\u0000\u035b\u035c\u0005e\u0000\u0000\u035c\u035d"+ - "\u0005x\u0000\u0000\u035d\u035e\u0005t\u0000\u0000\u035e\u035f\u0005e"+ - "\u0000\u0000\u035f\u0360\u0005n\u0000\u0000\u0360\u0361\u0005d\u0000\u0000"+ - "\u0361\u0362\u0005s\u0000\u0000\u0362\u00d3\u0001\u0000\u0000\u0000\u0363"+ - "\u0364\u0005s\u0000\u0000\u0364\u0365\u0005u\u0000\u0000\u0365\u0366\u0005"+ - "p\u0000\u0000\u0366\u0367\u0005e\u0000\u0000\u0367\u0368\u0005r\u0000"+ - "\u0000\u0368\u00d5\u0001\u0000\u0000\u0000\u0369\u036a\u0005c\u0000\u0000"+ - "\u036a\u036b\u0005o\u0000\u0000\u036b\u036c\u0005n\u0000\u0000\u036c\u036d"+ - "\u0005s\u0000\u0000\u036d\u036e\u0005t\u0000\u0000\u036e\u00d7\u0001\u0000"+ - "\u0000\u0000\u036f\u0370\u0005e\u0000\u0000\u0370\u0371\u0005x\u0000\u0000"+ - "\u0371\u0372\u0005p\u0000\u0000\u0372\u0373\u0005o\u0000\u0000\u0373\u0374"+ - "\u0005r\u0000\u0000\u0374\u0375\u0005t\u0000\u0000\u0375\u00d9\u0001\u0000"+ - "\u0000\u0000\u0376\u0377\u0005i\u0000\u0000\u0377\u0378\u0005m\u0000\u0000"+ - "\u0378\u0379\u0005p\u0000\u0000\u0379\u037a\u0005o\u0000\u0000\u037a\u037b"+ - "\u0005r\u0000\u0000\u037b\u037c\u0005t\u0000\u0000\u037c\u00db\u0001\u0000"+ - "\u0000\u0000\u037d\u037e\u0005i\u0000\u0000\u037e\u037f\u0005m\u0000\u0000"+ - "\u037f\u0380\u0005p\u0000\u0000\u0380\u0381\u0005l\u0000\u0000\u0381\u0382"+ - "\u0005e\u0000\u0000\u0382\u0383\u0005m\u0000\u0000\u0383\u0384\u0005e"+ - "\u0000\u0000\u0384\u0385\u0005n\u0000\u0000\u0385\u0386\u0005t\u0000\u0000"+ - "\u0386\u0387\u0005s\u0000\u0000\u0387\u00dd\u0001\u0000\u0000\u0000\u0388"+ - "\u0389\u0005l\u0000\u0000\u0389\u038a\u0005e\u0000\u0000\u038a\u038b\u0005"+ - "t\u0000\u0000\u038b\u00df\u0001\u0000\u0000\u0000\u038c\u038d\u0005p\u0000"+ - "\u0000\u038d\u038e\u0005r\u0000\u0000\u038e\u038f\u0005i\u0000\u0000\u038f"+ - "\u0390\u0005v\u0000\u0000\u0390\u0391\u0005a\u0000\u0000\u0391\u0392\u0005"+ - "t\u0000\u0000\u0392\u0393\u0005e\u0000\u0000\u0393\u00e1\u0001\u0000\u0000"+ - "\u0000\u0394\u0395\u0005p\u0000\u0000\u0395\u0396\u0005u\u0000\u0000\u0396"+ - "\u0397\u0005b\u0000\u0000\u0397\u0398\u0005l\u0000\u0000\u0398\u0399\u0005"+ - "i\u0000\u0000\u0399\u039a\u0005c\u0000\u0000\u039a\u00e3\u0001\u0000\u0000"+ - "\u0000\u039b\u039c\u0005i\u0000\u0000\u039c\u039d\u0005n\u0000\u0000\u039d"+ - "\u039e\u0005t\u0000\u0000\u039e\u039f\u0005e\u0000\u0000\u039f\u03a0\u0005"+ - "r\u0000\u0000\u03a0\u03a1\u0005f\u0000\u0000\u03a1\u03a2\u0005a\u0000"+ - "\u0000\u03a2\u03a3\u0005c\u0000\u0000\u03a3\u03a4\u0005e\u0000\u0000\u03a4"+ - "\u00e5\u0001\u0000\u0000\u0000\u03a5\u03a6\u0005p\u0000\u0000\u03a6\u03a7"+ - "\u0005a\u0000\u0000\u03a7\u03a8\u0005c\u0000\u0000\u03a8\u03a9\u0005k"+ - "\u0000\u0000\u03a9\u03aa\u0005a\u0000\u0000\u03aa\u03ab\u0005g\u0000\u0000"+ - "\u03ab\u03ac\u0005e\u0000\u0000\u03ac\u00e7\u0001\u0000\u0000\u0000\u03ad"+ - "\u03ae\u0005p\u0000\u0000\u03ae\u03af\u0005r\u0000\u0000\u03af\u03b0\u0005"+ - "o\u0000\u0000\u03b0\u03b1\u0005t\u0000\u0000\u03b1\u03b2\u0005e\u0000"+ - "\u0000\u03b2\u03b3\u0005c\u0000\u0000\u03b3\u03b4\u0005t\u0000\u0000\u03b4"+ - "\u03b5\u0005e\u0000\u0000\u03b5\u03b6\u0005d\u0000\u0000\u03b6\u00e9\u0001"+ - "\u0000\u0000\u0000\u03b7\u03b8\u0005s\u0000\u0000\u03b8\u03b9\u0005t\u0000"+ - "\u0000\u03b9\u03ba\u0005a\u0000\u0000\u03ba\u03bb\u0005t\u0000\u0000\u03bb"+ - "\u03bc\u0005i\u0000\u0000\u03bc\u03bd\u0005c\u0000\u0000\u03bd\u00eb\u0001"+ - "\u0000\u0000\u0000\u03be\u03bf\u0005a\u0000\u0000\u03bf\u03c0\u0005n\u0000"+ - "\u0000\u03c0\u03c1\u0005y\u0000\u0000\u03c1\u00ed\u0001\u0000\u0000\u0000"+ - "\u03c2\u03c3\u0005n\u0000\u0000\u03c3\u03c4\u0005u\u0000\u0000\u03c4\u03c5"+ - "\u0005m\u0000\u0000\u03c5\u03c6\u0005b\u0000\u0000\u03c6\u03c7\u0005e"+ - "\u0000\u0000\u03c7\u03c8\u0005r\u0000\u0000\u03c8\u00ef\u0001\u0000\u0000"+ - "\u0000\u03c9\u03ca\u0005n\u0000\u0000\u03ca\u03cb\u0005e\u0000\u0000\u03cb"+ - "\u03cc\u0005v\u0000\u0000\u03cc\u03cd\u0005e\u0000\u0000\u03cd\u03ce\u0005"+ - "r\u0000\u0000\u03ce\u00f1\u0001\u0000\u0000\u0000\u03cf\u03d0\u0005b\u0000"+ - "\u0000\u03d0\u03d1\u0005o\u0000\u0000\u03d1\u03d2\u0005o\u0000\u0000\u03d2"+ - "\u03d3\u0005l\u0000\u0000\u03d3\u03d4\u0005e\u0000\u0000\u03d4\u03d5\u0005"+ - "a\u0000\u0000\u03d5\u03d6\u0005n\u0000\u0000\u03d6\u00f3\u0001\u0000\u0000"+ - "\u0000\u03d7\u03d8\u0005s\u0000\u0000\u03d8\u03d9\u0005t\u0000\u0000\u03d9"+ - "\u03da\u0005r\u0000\u0000\u03da\u03db\u0005i\u0000\u0000\u03db\u03dc\u0005"+ - "n\u0000\u0000\u03dc\u03dd\u0005g\u0000\u0000\u03dd\u00f5\u0001\u0000\u0000"+ - "\u0000\u03de\u03df\u0005u\u0000\u0000\u03df\u03e0\u0005n\u0000\u0000\u03e0"+ - "\u03e1\u0005i\u0000\u0000\u03e1\u03e2\u0005q\u0000\u0000\u03e2\u03e3\u0005"+ - "u\u0000\u0000\u03e3\u03e4\u0005e\u0000\u0000\u03e4\u00f7\u0001\u0000\u0000"+ - "\u0000\u03e5\u03e6\u0005s\u0000\u0000\u03e6\u03e7\u0005y\u0000\u0000\u03e7"+ - "\u03e8\u0005m\u0000\u0000\u03e8\u03e9\u0005b\u0000\u0000\u03e9\u03ea\u0005"+ - "o\u0000\u0000\u03ea\u03eb\u0005l\u0000\u0000\u03eb\u00f9\u0001\u0000\u0000"+ - "\u0000\u03ec\u03ed\u0005u\u0000\u0000\u03ed\u03ee\u0005n\u0000\u0000\u03ee"+ - "\u03ef\u0005d\u0000\u0000\u03ef\u03f0\u0005e\u0000\u0000\u03f0\u03f1\u0005"+ - "f\u0000\u0000\u03f1\u03f2\u0005i\u0000\u0000\u03f2\u03f3\u0005n\u0000"+ - "\u0000\u03f3\u03f4\u0005e\u0000\u0000\u03f4\u03f5\u0005d\u0000\u0000\u03f5"+ - "\u00fb\u0001\u0000\u0000\u0000\u03f6\u03f7\u0005o\u0000\u0000\u03f7\u03f8"+ - "\u0005b\u0000\u0000\u03f8\u03f9\u0005j\u0000\u0000\u03f9\u03fa\u0005e"+ - "\u0000\u0000\u03fa\u03fb\u0005c\u0000\u0000\u03fb\u03fc\u0005t\u0000\u0000"+ - "\u03fc\u00fd\u0001\u0000\u0000\u0000\u03fd\u03fe\u0005o\u0000\u0000\u03fe"+ - "\u03ff\u0005f\u0000\u0000\u03ff\u00ff\u0001\u0000\u0000\u0000\u0400\u0401"+ - "\u0005k\u0000\u0000\u0401\u0402\u0005e\u0000\u0000\u0402\u0403\u0005y"+ - "\u0000\u0000\u0403\u0404\u0005o\u0000\u0000\u0404\u0405\u0005f\u0000\u0000"+ - "\u0405\u0101\u0001\u0000\u0000\u0000\u0406\u0407\u0005t\u0000\u0000\u0407"+ - "\u0408\u0005y\u0000\u0000\u0408\u0409\u0005p\u0000\u0000\u0409\u040a\u0005"+ - "e\u0000\u0000\u040a\u0103\u0001\u0000\u0000\u0000\u040b\u040c\u0005c\u0000"+ - "\u0000\u040c\u040d\u0005o\u0000\u0000\u040d\u040e\u0005n\u0000\u0000\u040e"+ - "\u040f\u0005s\u0000\u0000\u040f\u0410\u0005t\u0000\u0000\u0410\u0411\u0005"+ - "r\u0000\u0000\u0411\u0412\u0005u\u0000\u0000\u0412\u0413\u0005c\u0000"+ - "\u0000\u0413\u0414\u0005t\u0000\u0000\u0414\u0415\u0005o\u0000\u0000\u0415"+ - "\u0416\u0005r\u0000\u0000\u0416\u0105\u0001\u0000\u0000\u0000\u0417\u0418"+ - "\u0005n\u0000\u0000\u0418\u0419\u0005a\u0000\u0000\u0419\u041a\u0005m"+ - "\u0000\u0000\u041a\u041b\u0005e\u0000\u0000\u041b\u041c\u0005s\u0000\u0000"+ - "\u041c\u041d\u0005p\u0000\u0000\u041d\u041e\u0005a\u0000\u0000\u041e\u041f"+ - "\u0005c\u0000\u0000\u041f\u0420\u0005e\u0000\u0000\u0420\u0107\u0001\u0000"+ - "\u0000\u0000\u0421\u0422\u0005r\u0000\u0000\u0422\u0423\u0005e\u0000\u0000"+ - "\u0423\u0424\u0005q\u0000\u0000\u0424\u0425\u0005u\u0000\u0000\u0425\u0426"+ - "\u0005i\u0000\u0000\u0426\u0427\u0005r\u0000\u0000\u0427\u0428\u0005e"+ - "\u0000\u0000\u0428\u0109\u0001\u0000\u0000\u0000\u0429\u042a\u0005m\u0000"+ - "\u0000\u042a\u042b\u0005o\u0000\u0000\u042b\u042c\u0005d\u0000\u0000\u042c"+ - "\u042d\u0005u\u0000\u0000\u042d\u042e\u0005l\u0000\u0000\u042e\u042f\u0005"+ - "e\u0000\u0000\u042f\u010b\u0001\u0000\u0000\u0000\u0430\u0431\u0005d\u0000"+ - "\u0000\u0431\u0432\u0005e\u0000\u0000\u0432\u0433\u0005c\u0000\u0000\u0433"+ - "\u0434\u0005l\u0000\u0000\u0434\u0435\u0005a\u0000\u0000\u0435\u0436\u0005"+ - "r\u0000\u0000\u0436\u0437\u0005e\u0000\u0000\u0437\u010d\u0001\u0000\u0000"+ - "\u0000\u0438\u0439\u0005a\u0000\u0000\u0439\u043a\u0005b\u0000\u0000\u043a"+ - "\u043b\u0005s\u0000\u0000\u043b\u043c\u0005t\u0000\u0000\u043c\u043d\u0005"+ - "r\u0000\u0000\u043d\u043e\u0005a\u0000\u0000\u043e\u043f\u0005c\u0000"+ - "\u0000\u043f\u0440\u0005t\u0000\u0000\u0440\u010f\u0001\u0000\u0000\u0000"+ - "\u0441\u0442\u0005i\u0000\u0000\u0442\u0443\u0005s\u0000\u0000\u0443\u0111"+ - "\u0001\u0000\u0000\u0000\u0444\u0445\u0005@\u0000\u0000\u0445\u0113\u0001"+ - "\u0000\u0000\u0000\u0446\u044a\u0003\u014a\u00a4\u0000\u0447\u0449\u0003"+ - "\u0148\u00a3\u0000\u0448\u0447\u0001\u0000\u0000\u0000\u0449\u044c\u0001"+ - "\u0000\u0000\u0000\u044a\u0448\u0001\u0000\u0000\u0000\u044a\u044b\u0001"+ - "\u0000\u0000\u0000\u044b\u0115\u0001\u0000\u0000\u0000\u044c\u044a\u0001"+ - "\u0000\u0000\u0000\u044d\u0451\u0005\"\u0000\u0000\u044e\u0450\u0003\u012c"+ - "\u0095\u0000\u044f\u044e\u0001\u0000\u0000\u0000\u0450\u0453\u0001\u0000"+ - "\u0000\u0000\u0451\u044f\u0001\u0000\u0000\u0000\u0451\u0452\u0001\u0000"+ - "\u0000\u0000\u0452\u0454\u0001\u0000\u0000\u0000\u0453\u0451\u0001\u0000"+ - "\u0000\u0000\u0454\u045e\u0005\"\u0000\u0000\u0455\u0459\u0005\'\u0000"+ - "\u0000\u0456\u0458\u0003\u012e\u0096\u0000\u0457\u0456\u0001\u0000\u0000"+ - "\u0000\u0458\u045b\u0001\u0000\u0000\u0000\u0459\u0457\u0001\u0000\u0000"+ - "\u0000\u0459\u045a\u0001\u0000\u0000\u0000\u045a\u045c\u0001\u0000\u0000"+ - "\u0000\u045b\u0459\u0001\u0000\u0000\u0000\u045c\u045e\u0005\'\u0000\u0000"+ - "\u045d\u044d\u0001\u0000\u0000\u0000\u045d\u0455\u0001\u0000\u0000\u0000"+ - "\u045e\u045f\u0001\u0000\u0000\u0000\u045f\u0460\u0006\u008a\u0004\u0000"+ - "\u0460\u0117\u0001\u0000\u0000\u0000\u0461\u0462\u0005`\u0000\u0000\u0462"+ - "\u0463\u0006\u008b\u0005\u0000\u0463\u0464\u0001\u0000\u0000\u0000\u0464"+ - "\u0465\u0006\u008b\u0006\u0000\u0465\u0119\u0001\u0000\u0000\u0000\u0466"+ - "\u0468\u0007\u000b\u0000\u0000\u0467\u0466\u0001\u0000\u0000\u0000\u0468"+ - "\u0469\u0001\u0000\u0000\u0000\u0469\u0467\u0001\u0000\u0000\u0000\u0469"+ - "\u046a\u0001\u0000\u0000\u0000\u046a\u046b\u0001\u0000\u0000\u0000\u046b"+ - "\u046c\u0006\u008c\u0000\u0000\u046c\u011b\u0001\u0000\u0000\u0000\u046d"+ - "\u046e\u0007\u0000\u0000\u0000\u046e\u046f\u0001\u0000\u0000\u0000\u046f"+ - "\u0470\u0006\u008d\u0000\u0000\u0470\u011d\u0001\u0000\u0000\u0000\u0471"+ - "\u0472\u0005<\u0000\u0000\u0472\u0473\u0005!\u0000\u0000\u0473\u0474\u0005"+ - "-\u0000\u0000\u0474\u0475\u0005-\u0000\u0000\u0475\u0479\u0001\u0000\u0000"+ - "\u0000\u0476\u0478\t\u0000\u0000\u0000\u0477\u0476\u0001\u0000\u0000\u0000"+ - "\u0478\u047b\u0001\u0000\u0000\u0000\u0479\u047a\u0001\u0000\u0000\u0000"+ - "\u0479\u0477\u0001\u0000\u0000\u0000\u047a\u047c\u0001\u0000\u0000\u0000"+ - "\u047b\u0479\u0001\u0000\u0000\u0000\u047c\u047d\u0005-\u0000\u0000\u047d"+ - "\u047e\u0005-\u0000\u0000\u047e\u047f\u0005>\u0000\u0000\u047f\u0480\u0001"+ - "\u0000\u0000\u0000\u0480\u0481\u0006\u008e\u0000\u0000\u0481\u011f\u0001"+ - "\u0000\u0000\u0000\u0482\u0483\u0005<\u0000\u0000\u0483\u0484\u0005!\u0000"+ - "\u0000\u0484\u0485\u0005[\u0000\u0000\u0485\u0486\u0005C\u0000\u0000\u0486"+ - "\u0487\u0005D\u0000\u0000\u0487\u0488\u0005A\u0000\u0000\u0488\u0489\u0005"+ - "T\u0000\u0000\u0489\u048a\u0005A\u0000\u0000\u048a\u048b\u0005[\u0000"+ - "\u0000\u048b\u048f\u0001\u0000\u0000\u0000\u048c\u048e\t\u0000\u0000\u0000"+ - "\u048d\u048c\u0001\u0000\u0000\u0000\u048e\u0491\u0001\u0000\u0000\u0000"+ - "\u048f\u0490\u0001\u0000\u0000\u0000\u048f\u048d\u0001\u0000\u0000\u0000"+ - "\u0490\u0492\u0001\u0000\u0000\u0000\u0491\u048f\u0001\u0000\u0000\u0000"+ - "\u0492\u0493\u0005]\u0000\u0000\u0493\u0494\u0005]\u0000\u0000\u0494\u0495"+ - "\u0005>\u0000\u0000\u0495\u0496\u0001\u0000\u0000\u0000\u0496\u0497\u0006"+ - "\u008f\u0000\u0000\u0497\u0121\u0001\u0000\u0000\u0000\u0498\u0499\t\u0000"+ - "\u0000\u0000\u0499\u049a\u0001\u0000\u0000\u0000\u049a\u049b\u0006\u0090"+ - "\u0007\u0000\u049b\u0123\u0001\u0000\u0000\u0000\u049c\u049d\u0005\\\u0000"+ - "\u0000\u049d\u049e\t\u0000\u0000\u0000\u049e\u0125\u0001\u0000\u0000\u0000"+ - "\u049f\u04a0\u0005`\u0000\u0000\u04a0\u04a1\u0006\u0092\b\u0000\u04a1"+ - "\u04a2\u0001\u0000\u0000\u0000\u04a2\u04a3\u0006\u0092\t\u0000\u04a3\u04a4"+ - "\u0006\u0092\u0002\u0000\u04a4\u0127\u0001\u0000\u0000\u0000\u04a5\u04a6"+ - "\u0005$\u0000\u0000\u04a6\u04a7\u0005{\u0000\u0000\u04a7\u04a8\u0001\u0000"+ - "\u0000\u0000\u04a8\u04a9\u0006\u0093\n\u0000\u04a9\u04aa\u0001\u0000\u0000"+ - "\u0000\u04aa\u04ab\u0006\u0093\u000b\u0000\u04ab\u0129\u0001\u0000\u0000"+ - "\u0000\u04ac\u04ad\b\f\u0000\u0000\u04ad\u012b\u0001\u0000\u0000\u0000"+ - "\u04ae\u04b3\b\r\u0000\u0000\u04af\u04b0\u0005\\\u0000\u0000\u04b0\u04b3"+ - "\u0003\u0130\u0097\u0000\u04b1\u04b3\u0003\u0140\u009f\u0000\u04b2\u04ae"+ - "\u0001\u0000\u0000\u0000\u04b2\u04af\u0001\u0000\u0000\u0000\u04b2\u04b1"+ - "\u0001\u0000\u0000\u0000\u04b3\u012d\u0001\u0000\u0000\u0000\u04b4\u04b9"+ - "\b\u000e\u0000\u0000\u04b5\u04b6\u0005\\\u0000\u0000\u04b6\u04b9\u0003"+ - "\u0130\u0097\u0000\u04b7\u04b9\u0003\u0140\u009f\u0000\u04b8\u04b4\u0001"+ - "\u0000\u0000\u0000\u04b8\u04b5\u0001\u0000\u0000\u0000\u04b8\u04b7\u0001"+ - "\u0000\u0000\u0000\u04b9\u012f\u0001\u0000\u0000\u0000\u04ba\u04c0\u0003"+ - "\u0132\u0098\u0000\u04bb\u04c0\u00050\u0000\u0000\u04bc\u04c0\u0003\u0134"+ - "\u0099\u0000\u04bd\u04c0\u0003\u0136\u009a\u0000\u04be\u04c0\u0003\u0138"+ - "\u009b\u0000\u04bf\u04ba\u0001\u0000\u0000\u0000\u04bf\u04bb\u0001\u0000"+ - "\u0000\u0000\u04bf\u04bc\u0001\u0000\u0000\u0000\u04bf\u04bd\u0001\u0000"+ - "\u0000\u0000\u04bf\u04be\u0001\u0000\u0000\u0000\u04c0\u0131\u0001\u0000"+ - "\u0000\u0000\u04c1\u04c4\u0003\u013a\u009c\u0000\u04c2\u04c4\u0003\u013c"+ - "\u009d\u0000\u04c3\u04c1\u0001\u0000\u0000\u0000\u04c3\u04c2\u0001\u0000"+ - "\u0000\u0000\u04c4\u0133\u0001\u0000\u0000\u0000\u04c5\u04c6\u0005x\u0000"+ - "\u0000\u04c6\u04c7\u0003\u0142\u00a0\u0000\u04c7\u04c8\u0003\u0142\u00a0"+ - "\u0000\u04c8\u0135\u0001\u0000\u0000\u0000\u04c9\u04ca\u0005u\u0000\u0000"+ - "\u04ca\u04cb\u0003\u0142\u00a0\u0000\u04cb\u04cc\u0003\u0142\u00a0\u0000"+ - "\u04cc\u04cd\u0003\u0142\u00a0\u0000\u04cd\u04ce\u0003\u0142\u00a0\u0000"+ - "\u04ce\u04da\u0001\u0000\u0000\u0000\u04cf\u04d0\u0005u\u0000\u0000\u04d0"+ - "\u04d1\u0005{\u0000\u0000\u04d1\u04d3\u0003\u0142\u00a0\u0000\u04d2\u04d4"+ - "\u0003\u0142\u00a0\u0000\u04d3\u04d2\u0001\u0000\u0000\u0000\u04d4\u04d5"+ - "\u0001\u0000\u0000\u0000\u04d5\u04d3\u0001\u0000\u0000\u0000\u04d5\u04d6"+ - "\u0001\u0000\u0000\u0000\u04d6\u04d7\u0001\u0000\u0000\u0000\u04d7\u04d8"+ - "\u0005}\u0000\u0000\u04d8\u04da\u0001\u0000\u0000\u0000\u04d9\u04c9\u0001"+ - "\u0000\u0000\u0000\u04d9\u04cf\u0001\u0000\u0000\u0000\u04da\u0137\u0001"+ - "\u0000\u0000\u0000\u04db\u04dc\u0005u\u0000\u0000\u04dc\u04de\u0005{\u0000"+ - "\u0000\u04dd\u04df\u0003\u0142\u00a0\u0000\u04de\u04dd\u0001\u0000\u0000"+ - "\u0000\u04df\u04e0\u0001\u0000\u0000\u0000\u04e0\u04de\u0001\u0000\u0000"+ - "\u0000\u04e0\u04e1\u0001\u0000\u0000\u0000\u04e1\u04e2\u0001\u0000\u0000"+ - "\u0000\u04e2\u04e3\u0005}\u0000\u0000\u04e3\u0139\u0001\u0000\u0000\u0000"+ - "\u04e4\u04e5\u0007\u000f\u0000\u0000\u04e5\u013b\u0001\u0000\u0000\u0000"+ - "\u04e6\u04e7\b\u0010\u0000\u0000\u04e7\u013d\u0001\u0000\u0000\u0000\u04e8"+ - "\u04eb\u0003\u013a\u009c\u0000\u04e9\u04eb\u0007\u0011\u0000\u0000\u04ea"+ - "\u04e8\u0001\u0000\u0000\u0000\u04ea\u04e9\u0001\u0000\u0000\u0000\u04eb"+ - "\u013f\u0001\u0000\u0000\u0000\u04ec\u04ee\u0005\\\u0000\u0000\u04ed\u04ef"+ - "\u0007\u0000\u0000\u0000\u04ee\u04ed\u0001\u0000\u0000\u0000\u04ef\u04f0"+ - "\u0001\u0000\u0000\u0000\u04f0\u04ee\u0001\u0000\u0000\u0000\u04f0\u04f1"+ - "\u0001\u0000\u0000\u0000\u04f1\u0141\u0001\u0000\u0000\u0000\u04f2\u04f3"+ - "\u0007\u0012\u0000\u0000\u04f3\u0143\u0001\u0000\u0000\u0000\u04f4\u04fd"+ - "\u00050\u0000\u0000\u04f5\u04f9\u0007\u0013\u0000\u0000\u04f6\u04f8\u0007"+ - "\u0002\u0000\u0000\u04f7\u04f6\u0001\u0000\u0000\u0000\u04f8\u04fb\u0001"+ - "\u0000\u0000\u0000\u04f9\u04f7\u0001\u0000\u0000\u0000\u04f9\u04fa\u0001"+ - "\u0000\u0000\u0000\u04fa\u04fd\u0001\u0000\u0000\u0000\u04fb\u04f9\u0001"+ - "\u0000\u0000\u0000\u04fc\u04f4\u0001\u0000\u0000\u0000\u04fc\u04f5\u0001"+ - "\u0000\u0000\u0000\u04fd\u0145\u0001\u0000\u0000\u0000\u04fe\u0500\u0007"+ - "\u0014\u0000\u0000\u04ff\u0501\u0007\u0015\u0000\u0000\u0500\u04ff\u0001"+ - "\u0000\u0000\u0000\u0500\u0501\u0001\u0000\u0000\u0000\u0501\u0503\u0001"+ - "\u0000\u0000\u0000\u0502\u0504\u0007\u0002\u0000\u0000\u0503\u0502\u0001"+ - "\u0000\u0000\u0000\u0504\u0505\u0001\u0000\u0000\u0000\u0505\u0503\u0001"+ - "\u0000\u0000\u0000\u0505\u0506\u0001\u0000\u0000\u0000\u0506\u0147\u0001"+ - "\u0000\u0000\u0000\u0507\u050a\u0003\u014a\u00a4\u0000\u0508\u050a\u0007"+ - "\u0016\u0000\u0000\u0509\u0507\u0001\u0000\u0000\u0000\u0509\u0508\u0001"+ - "\u0000\u0000\u0000\u050a\u0149\u0001\u0000\u0000\u0000\u050b\u050f\u0007"+ - "\u0017\u0000\u0000\u050c\u050d\u0005\\\u0000\u0000\u050d\u050f\u0003\u0136"+ - "\u009a\u0000\u050e\u050b\u0001\u0000\u0000\u0000\u050e\u050c\u0001\u0000"+ - "\u0000\u0000\u050f\u014b\u0001\u0000\u0000\u0000\u0510\u051b\b\u0018\u0000"+ - "\u0000\u0511\u051b\u0003\u0152\u00a8\u0000\u0512\u0516\u0005[\u0000\u0000"+ - "\u0513\u0515\u0003\u0150\u00a7\u0000\u0514\u0513\u0001\u0000\u0000\u0000"+ - "\u0515\u0518\u0001\u0000\u0000\u0000\u0516\u0514\u0001\u0000\u0000\u0000"+ - "\u0516\u0517\u0001\u0000\u0000\u0000\u0517\u0519\u0001\u0000\u0000\u0000"+ - "\u0518\u0516\u0001\u0000\u0000\u0000\u0519\u051b\u0005]\u0000\u0000\u051a"+ - "\u0510\u0001\u0000\u0000\u0000\u051a\u0511\u0001\u0000\u0000\u0000\u051a"+ - "\u0512\u0001\u0000\u0000\u0000\u051b\u014d\u0001\u0000\u0000\u0000\u051c"+ - "\u0527\b\u0019\u0000\u0000\u051d\u0527\u0003\u0152\u00a8\u0000\u051e\u0522"+ - "\u0005[\u0000\u0000\u051f\u0521\u0003\u0150\u00a7\u0000\u0520\u051f\u0001"+ - "\u0000\u0000\u0000\u0521\u0524\u0001\u0000\u0000\u0000\u0522\u0520\u0001"+ - "\u0000\u0000\u0000\u0522\u0523\u0001\u0000\u0000\u0000\u0523\u0525\u0001"+ - "\u0000\u0000\u0000\u0524\u0522\u0001\u0000\u0000\u0000\u0525\u0527\u0005"+ - "]\u0000\u0000\u0526\u051c\u0001\u0000\u0000\u0000\u0526\u051d\u0001\u0000"+ - "\u0000\u0000\u0526\u051e\u0001\u0000\u0000\u0000\u0527\u014f\u0001\u0000"+ - "\u0000\u0000\u0528\u052b\b\u001a\u0000\u0000\u0529\u052b\u0003\u0152\u00a8"+ - "\u0000\u052a\u0528\u0001\u0000\u0000\u0000\u052a\u0529\u0001\u0000\u0000"+ - "\u0000\u052b\u0151\u0001\u0000\u0000\u0000\u052c\u052d\u0005\\\u0000\u0000"+ - "\u052d\u052e\b\u0000\u0000\u0000\u052e\u0153\u0001\u0000\u0000\u0000/"+ - "\u0000\u0001\u015a\u0168\u0172\u017a\u0224\u022c\u0230\u0237\u023b\u023f"+ - "\u0241\u0249\u0250\u025a\u0263\u026c\u0277\u0282\u044a\u0451\u0459\u045d"+ - "\u0469\u0479\u048f\u04b2\u04b8\u04bf\u04c3\u04d5\u04d9\u04e0\u04ea\u04f0"+ - "\u04f9\u04fc\u0500\u0505\u0509\u050e\u0516\u051a\u0522\u0526\u052a\f\u0000"+ - "\u0001\u0000\u0001\u0007\u0000\u0004\u0000\u0000\u0001\t\u0001\u0001\u008a"+ - "\u0002\u0001\u008b\u0003\u0005\u0001\u0000\u0000\u0002\u0000\u0001\u0092"+ - "\u0004\u0007\u008c\u0000\u0001\u0093\u0005\u0005\u0000\u0000"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file -- Gitee From 60165a4b1e74301e5b0c654066d817ccb9911922 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:04:17 +0800 Subject: [PATCH 12/26] refacotry ts lexer Signed-off-by: wangshi --- .../antlr/typescript/TypeScriptLexer.java | 1429 +++++++++++++++++ 1 file changed, 1429 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.java new file mode 100644 index 00000000..06e891ac --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.java @@ -0,0 +1,1429 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +// Generated from TypeScriptLexer.g4 by ANTLR 4.13.2 +import org.antlr.v4.runtime.atn.LexerATNSimulator; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) +public class TypeScriptLexer extends TypeScriptLexerBase { + static { RuntimeMetaData.checkVersion("4.13.2", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + MultiLineComment=1, SingleLineComment=2, RegularExpressionLiteral=3, OpenBracket=4, + CloseBracket=5, OpenParen=6, CloseParen=7, OpenBrace=8, TemplateCloseBrace=9, + CloseBrace=10, SemiColon=11, Comma=12, Assign=13, QuestionMark=14, QuestionMarkDot=15, + Colon=16, Ellipsis=17, Dot=18, PlusPlus=19, MinusMinus=20, Plus=21, Minus=22, + BitNot=23, Not=24, Multiply=25, Divide=26, Modulus=27, Power=28, NullCoalesce=29, + Hashtag=30, LeftShiftArithmetic=31, LessThan=32, MoreThan=33, LessThanEquals=34, + GreaterThanEquals=35, Equals_=36, NotEquals=37, IdentityEquals=38, IdentityNotEquals=39, + BitAnd=40, BitXOr=41, BitOr=42, And=43, Or=44, MultiplyAssign=45, DivideAssign=46, + ModulusAssign=47, PlusAssign=48, MinusAssign=49, LeftShiftArithmeticAssign=50, + RightShiftArithmeticAssign=51, RightShiftLogicalAssign=52, BitAndAssign=53, + BitXorAssign=54, BitOrAssign=55, PowerAssign=56, NullishCoalescingAssign=57, + ARROW=58, NullLiteral=59, BooleanLiteral=60, DecimalLiteral=61, HexIntegerLiteral=62, + OctalIntegerLiteral=63, OctalIntegerLiteral2=64, BinaryIntegerLiteral=65, + BigHexIntegerLiteral=66, BigOctalIntegerLiteral=67, BigBinaryIntegerLiteral=68, + BigDecimalIntegerLiteral=69, Break=70, Do=71, Instanceof=72, Typeof=73, + Case=74, Else=75, New=76, Var=77, Catch=78, Finally=79, Return=80, Void=81, + Continue=82, For=83, Switch=84, While=85, Debugger=86, Function_=87, This=88, + With=89, Default=90, If=91, Throw=92, Delete=93, In=94, Try=95, As=96, + From=97, ReadOnly=98, Async=99, Await=100, Yield=101, YieldStar=102, Class=103, + Enum=104, Extends=105, Super=106, Const=107, Export=108, Import=109, Implements=110, + Let=111, Private=112, Public=113, Interface=114, Package=115, Protected=116, + Static=117, Any=118, Number=119, Never=120, Boolean=121, String=122, Unique=123, + Symbol=124, Undefined=125, Object=126, Of=127, KeyOf=128, TypeAlias=129, + Constructor=130, Namespace=131, Require=132, Module=133, Declare=134, + Abstract=135, Is=136, At=137, Identifier=138, StringLiteral=139, BackTick=140, + WhiteSpaces=141, LineTerminator=142, HtmlComment=143, CDataComment=144, + UnexpectedCharacter=145, TemplateStringEscapeAtom=146, TemplateStringStartExpression=147, + TemplateStringAtom=148; + public static final int + ERROR=2; + public static final int + TEMPLATE=1; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", "ERROR" + }; + + public static String[] modeNames = { + "DEFAULT_MODE", "TEMPLATE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", + "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", + "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", + "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", + "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", + "NullCoalesce", "Hashtag", "LeftShiftArithmetic", "LessThan", "MoreThan", + "LessThanEquals", "GreaterThanEquals", "Equals_", "NotEquals", "IdentityEquals", + "IdentityNotEquals", "BitAnd", "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", + "DivideAssign", "ModulusAssign", "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", + "RightShiftArithmeticAssign", "RightShiftLogicalAssign", "BitAndAssign", + "BitXorAssign", "BitOrAssign", "PowerAssign", "NullishCoalescingAssign", + "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", "HexIntegerLiteral", + "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", + "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", + "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", + "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", + "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", + "If", "Throw", "Delete", "In", "Try", "As", "From", "ReadOnly", "Async", + "Await", "Yield", "YieldStar", "Class", "Enum", "Extends", "Super", "Const", + "Export", "Import", "Implements", "Let", "Private", "Public", "Interface", + "Package", "Protected", "Static", "Any", "Number", "Never", "Boolean", + "String", "Unique", "Symbol", "Undefined", "Object", "Of", "KeyOf", "TypeAlias", + "Constructor", "Namespace", "Require", "Module", "Declare", "Abstract", + "Is", "At", "Identifier", "StringLiteral", "BackTick", "WhiteSpaces", + "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", + "TemplateStringEscapeAtom", "BackTickInside", "TemplateStringStartExpression", + "TemplateStringAtom", "DoubleStringCharacter", "SingleStringCharacter", + "EscapeSequence", "CharacterEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence", + "ExtendedUnicodeEscapeSequence", "SingleEscapeCharacter", "NonEscapeCharacter", + "EscapeCharacter", "LineContinuation", "HexDigit", "DecimalIntegerLiteral", + "ExponentPart", "IdentifierPart", "IdentifierStart", "RegularExpressionFirstChar", + "RegularExpressionChar", "RegularExpressionClassChar", "RegularExpressionBackslashSequence" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, null, null, null, "'['", "']'", "'('", "')'", "'{'", null, "'}'", + "';'", "','", "'='", "'?'", "'?.'", "':'", "'...'", "'.'", "'++'", "'--'", + "'+'", "'-'", "'~'", "'!'", "'*'", "'/'", "'%'", "'**'", "'??'", "'#'", + "'<<'", "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'==='", "'!=='", + "'&'", "'^'", "'|'", "'&&'", "'||'", "'*='", "'/='", "'%='", "'+='", + "'-='", "'<<='", "'>>='", "'>>>='", "'&='", "'^='", "'|='", "'**='", + "'??='", "'=>'", "'null'", null, null, null, null, null, null, null, + null, null, null, "'break'", "'do'", "'instanceof'", "'typeof'", "'case'", + "'else'", "'new'", "'var'", "'catch'", "'finally'", "'return'", "'void'", + "'continue'", "'for'", "'switch'", "'while'", "'debugger'", "'function'", + "'this'", "'with'", "'default'", "'if'", "'throw'", "'delete'", "'in'", + "'try'", "'as'", "'from'", "'readonly'", "'async'", "'await'", "'yield'", + "'yield*'", "'class'", "'enum'", "'extends'", "'super'", "'const'", "'export'", + "'import'", "'implements'", "'let'", "'private'", "'public'", "'interface'", + "'package'", "'protected'", "'static'", "'any'", "'number'", "'never'", + "'boolean'", "'string'", "'unique'", "'symbol'", "'undefined'", "'object'", + "'of'", "'keyof'", "'type'", "'constructor'", "'namespace'", "'require'", + "'module'", "'declare'", "'abstract'", "'is'", "'@'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "MultiLineComment", "SingleLineComment", "RegularExpressionLiteral", + "OpenBracket", "CloseBracket", "OpenParen", "CloseParen", "OpenBrace", + "TemplateCloseBrace", "CloseBrace", "SemiColon", "Comma", "Assign", "QuestionMark", + "QuestionMarkDot", "Colon", "Ellipsis", "Dot", "PlusPlus", "MinusMinus", + "Plus", "Minus", "BitNot", "Not", "Multiply", "Divide", "Modulus", "Power", + "NullCoalesce", "Hashtag", "LeftShiftArithmetic", "LessThan", "MoreThan", + "LessThanEquals", "GreaterThanEquals", "Equals_", "NotEquals", "IdentityEquals", + "IdentityNotEquals", "BitAnd", "BitXOr", "BitOr", "And", "Or", "MultiplyAssign", + "DivideAssign", "ModulusAssign", "PlusAssign", "MinusAssign", "LeftShiftArithmeticAssign", + "RightShiftArithmeticAssign", "RightShiftLogicalAssign", "BitAndAssign", + "BitXorAssign", "BitOrAssign", "PowerAssign", "NullishCoalescingAssign", + "ARROW", "NullLiteral", "BooleanLiteral", "DecimalLiteral", "HexIntegerLiteral", + "OctalIntegerLiteral", "OctalIntegerLiteral2", "BinaryIntegerLiteral", + "BigHexIntegerLiteral", "BigOctalIntegerLiteral", "BigBinaryIntegerLiteral", + "BigDecimalIntegerLiteral", "Break", "Do", "Instanceof", "Typeof", "Case", + "Else", "New", "Var", "Catch", "Finally", "Return", "Void", "Continue", + "For", "Switch", "While", "Debugger", "Function_", "This", "With", "Default", + "If", "Throw", "Delete", "In", "Try", "As", "From", "ReadOnly", "Async", + "Await", "Yield", "YieldStar", "Class", "Enum", "Extends", "Super", "Const", + "Export", "Import", "Implements", "Let", "Private", "Public", "Interface", + "Package", "Protected", "Static", "Any", "Number", "Never", "Boolean", + "String", "Unique", "Symbol", "Undefined", "Object", "Of", "KeyOf", "TypeAlias", + "Constructor", "Namespace", "Require", "Module", "Declare", "Abstract", + "Is", "At", "Identifier", "StringLiteral", "BackTick", "WhiteSpaces", + "LineTerminator", "HtmlComment", "CDataComment", "UnexpectedCharacter", + "TemplateStringEscapeAtom", "TemplateStringStartExpression", "TemplateStringAtom" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public TypeScriptLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "TypeScriptLexer.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + @Override + public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { + switch (ruleIndex) { + case 7: + OpenBrace_action((RuleContext)_localctx, actionIndex); + break; + case 9: + CloseBrace_action((RuleContext)_localctx, actionIndex); + break; + case 138: + StringLiteral_action((RuleContext)_localctx, actionIndex); + break; + case 139: + BackTick_action((RuleContext)_localctx, actionIndex); + break; + case 146: + BackTickInside_action((RuleContext)_localctx, actionIndex); + break; + case 147: + TemplateStringStartExpression_action((RuleContext)_localctx, actionIndex); + break; + } + } + private void OpenBrace_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 0: + this.ProcessOpenBrace(); + break; + } + } + private void CloseBrace_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 1: + this.ProcessCloseBrace(); + break; + } + } + private void StringLiteral_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 2: + this.ProcessStringLiteral(); + break; + } + } + private void BackTick_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 3: + this.IncreaseTemplateDepth(); + break; + } + } + private void BackTickInside_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 4: + this.DecreaseTemplateDepth(); + break; + } + } + private void TemplateStringStartExpression_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 5: + this.StartTemplateString(); + break; + } + } + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 2: + return RegularExpressionLiteral_sempred((RuleContext)_localctx, predIndex); + case 8: + return TemplateCloseBrace_sempred((RuleContext)_localctx, predIndex); + case 62: + return OctalIntegerLiteral_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean RegularExpressionLiteral_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return this.IsRegexPossible(); + } + return true; + } + private boolean TemplateCloseBrace_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return this.IsInTemplateString(); + } + return true; + } + private boolean OctalIntegerLiteral_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return !this.IsStrictMode(); + } + return true; + } + + public static final String _serializedATN = + "\u0004\u0000\u0094\u052f\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000"+ + "\u0007\u0000\u0002\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003"+ + "\u0007\u0003\u0002\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006"+ + "\u0007\u0006\u0002\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002"+ + "\n\u0007\n\u0002\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002"+ + "\u000e\u0007\u000e\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002"+ + "\u0011\u0007\u0011\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002"+ + "\u0014\u0007\u0014\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002"+ + "\u0017\u0007\u0017\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002"+ + "\u001a\u0007\u001a\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002"+ + "\u001d\u0007\u001d\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002"+ + " \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002"+ + "%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002"+ + "*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002"+ + "/\u0007/\u00020\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u0002"+ + "4\u00074\u00025\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u0002"+ + "9\u00079\u0002:\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002"+ + ">\u0007>\u0002?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002"+ + "C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002"+ + "H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002"+ + "M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002"+ + "R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002"+ + "W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002"+ + "\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002"+ + "a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002"+ + "f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002"+ + "k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002"+ + "p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002"+ + "u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002"+ + "z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002"+ + "\u007f\u0007\u007f\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002"+ + "\u0082\u0007\u0082\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002"+ + "\u0085\u0007\u0085\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002"+ + "\u0088\u0007\u0088\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002"+ + "\u008b\u0007\u008b\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002"+ + "\u008e\u0007\u008e\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002"+ + "\u0091\u0007\u0091\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002"+ + "\u0094\u0007\u0094\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002"+ + "\u0097\u0007\u0097\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002"+ + "\u009a\u0007\u009a\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002"+ + "\u009d\u0007\u009d\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002"+ + "\u00a0\u0007\u00a0\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002"+ + "\u00a3\u0007\u00a3\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002"+ + "\u00a6\u0007\u00a6\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0001"+ + "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0005\u0000\u0159\b\u0000\n"+ + "\u0000\f\u0000\u015c\t\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+ + "\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0005"+ + "\u0001\u0167\b\u0001\n\u0001\f\u0001\u016a\t\u0001\u0001\u0001\u0001\u0001"+ + "\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002\u0171\b\u0002\n\u0002"+ + "\f\u0002\u0174\t\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002"+ + "\u0179\b\u0002\n\u0002\f\u0002\u017c\t\u0002\u0001\u0003\u0001\u0003\u0001"+ + "\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001"+ + "\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b"+ + "\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001"+ + "\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f"+ + "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011"+ + "\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013"+ + "\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0016"+ + "\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019"+ + "\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b"+ + "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e"+ + "\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001!"+ + "\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001$\u0001"+ + "$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001"+ + "\'\u0001\'\u0001(\u0001(\u0001)\u0001)\u0001*\u0001*\u0001*\u0001+\u0001"+ + "+\u0001+\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001.\u0001.\u0001"+ + ".\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00011\u00011\u00011\u0001"+ + "1\u00012\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u0001"+ + "4\u00014\u00014\u00015\u00015\u00015\u00016\u00016\u00016\u00017\u0001"+ + "7\u00017\u00017\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u0001"+ + ":\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+ + ";\u0001;\u0001;\u0001;\u0003;\u0225\b;\u0001<\u0001<\u0001<\u0001<\u0005"+ + "<\u022b\b<\n<\f<\u022e\t<\u0001<\u0003<\u0231\b<\u0001<\u0001<\u0001<"+ + "\u0005<\u0236\b<\n<\f<\u0239\t<\u0001<\u0003<\u023c\b<\u0001<\u0001<\u0003"+ + "<\u0240\b<\u0003<\u0242\b<\u0001=\u0001=\u0001=\u0001=\u0005=\u0248\b"+ + "=\n=\f=\u024b\t=\u0001>\u0001>\u0004>\u024f\b>\u000b>\f>\u0250\u0001>"+ + "\u0001>\u0001?\u0001?\u0001?\u0001?\u0005?\u0259\b?\n?\f?\u025c\t?\u0001"+ + "@\u0001@\u0001@\u0001@\u0005@\u0262\b@\n@\f@\u0265\t@\u0001A\u0001A\u0001"+ + "A\u0001A\u0005A\u026b\bA\nA\fA\u026e\tA\u0001A\u0001A\u0001B\u0001B\u0001"+ + "B\u0001B\u0005B\u0276\bB\nB\fB\u0279\tB\u0001B\u0001B\u0001C\u0001C\u0001"+ + "C\u0001C\u0005C\u0281\bC\nC\fC\u0284\tC\u0001C\u0001C\u0001D\u0001D\u0001"+ + "D\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001"+ + "G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+ + "G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001"+ + "I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001"+ + "K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001"+ + "M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ + "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001"+ + "P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ + "Q\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001S\u0001"+ + "S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001"+ + "U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001V\u0001V\u0001V\u0001"+ + "V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0001W\u0001"+ + "W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ + "Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001"+ + "[\u0001[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ + "\\\u0001]\u0001]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001"+ + "_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001a\u0001"+ + "a\u0001a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+ + "b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001d\u0001"+ + "d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001"+ + "g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001"+ + "i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ + "j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001l\u0001l\u0001"+ + "l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001n\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ + "q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ + "s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+ + "v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001"+ + "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ + "y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001"+ + "{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001"+ + "|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001"+ + "}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ + "\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080"+ + "\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+ + "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+ + "\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ + "\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ + "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+ + "\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ + "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086"+ + "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+ + "\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088"+ + "\u0001\u0088\u0001\u0089\u0001\u0089\u0005\u0089\u0449\b\u0089\n\u0089"+ + "\f\u0089\u044c\t\u0089\u0001\u008a\u0001\u008a\u0005\u008a\u0450\b\u008a"+ + "\n\u008a\f\u008a\u0453\t\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0005"+ + "\u008a\u0458\b\u008a\n\u008a\f\u008a\u045b\t\u008a\u0001\u008a\u0003\u008a"+ + "\u045e\b\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008c\u0004\u008c\u0468\b\u008c\u000b\u008c"+ + "\f\u008c\u0469\u0001\u008c\u0001\u008c\u0001\u008d\u0001\u008d\u0001\u008d"+ + "\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+ + "\u0001\u008e\u0005\u008e\u0478\b\u008e\n\u008e\f\u008e\u047b\t\u008e\u0001"+ + "\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ + "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ + "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0005\u008f\u048e"+ + "\b\u008f\n\u008f\f\u008f\u0491\t\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+ + "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090"+ + "\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0092\u0001\u0092"+ + "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093"+ + "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0094"+ + "\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0003\u0095"+ + "\u04b3\b\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0003\u0096"+ + "\u04b9\b\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097"+ + "\u0003\u0097\u04c0\b\u0097\u0001\u0098\u0001\u0098\u0003\u0098\u04c4\b"+ + "\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001"+ + "\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+ + "\u009a\u0001\u009a\u0001\u009a\u0004\u009a\u04d4\b\u009a\u000b\u009a\f"+ + "\u009a\u04d5\u0001\u009a\u0001\u009a\u0003\u009a\u04da\b\u009a\u0001\u009b"+ + "\u0001\u009b\u0001\u009b\u0004\u009b\u04df\b\u009b\u000b\u009b\f\u009b"+ + "\u04e0\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009d\u0001"+ + "\u009d\u0001\u009e\u0001\u009e\u0003\u009e\u04eb\b\u009e\u0001\u009f\u0001"+ + "\u009f\u0004\u009f\u04ef\b\u009f\u000b\u009f\f\u009f\u04f0\u0001\u00a0"+ + "\u0001\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0005\u00a1\u04f8\b\u00a1"+ + "\n\u00a1\f\u00a1\u04fb\t\u00a1\u0003\u00a1\u04fd\b\u00a1\u0001\u00a2\u0001"+ + "\u00a2\u0003\u00a2\u0501\b\u00a2\u0001\u00a2\u0004\u00a2\u0504\b\u00a2"+ + "\u000b\u00a2\f\u00a2\u0505\u0001\u00a3\u0001\u00a3\u0003\u00a3\u050a\b"+ + "\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0003\u00a4\u050f\b\u00a4\u0001"+ + "\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0005\u00a5\u0515\b\u00a5\n"+ + "\u00a5\f\u00a5\u0518\t\u00a5\u0001\u00a5\u0003\u00a5\u051b\b\u00a5\u0001"+ + "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0005\u00a6\u0521\b\u00a6\n"+ + "\u00a6\f\u00a6\u0524\t\u00a6\u0001\u00a6\u0003\u00a6\u0527\b\u00a6\u0001"+ + "\u00a7\u0001\u00a7\u0003\u00a7\u052b\b\u00a7\u0001\u00a8\u0001\u00a8\u0001"+ + "\u00a8\u0003\u015a\u0479\u048f\u0000\u00a9\u0002\u0001\u0004\u0002\u0006"+ + "\u0003\b\u0004\n\u0005\f\u0006\u000e\u0007\u0010\b\u0012\t\u0014\n\u0016"+ + "\u000b\u0018\f\u001a\r\u001c\u000e\u001e\u000f \u0010\"\u0011$\u0012&"+ + "\u0013(\u0014*\u0015,\u0016.\u00170\u00182\u00194\u001a6\u001b8\u001c"+ + ":\u001d<\u001e>\u001f@ B!D\"F#H$J%L&N\'P(R)T*V+X,Z-\\.^/`0b1d2f3h4j5l"+ + "6n7p8r9t:v;x~?\u0080@\u0082A\u0084B\u0086C\u0088D\u008aE\u008cF\u008e"+ + "G\u0090H\u0092I\u0094J\u0096K\u0098L\u009aM\u009cN\u009eO\u00a0P\u00a2"+ + "Q\u00a4R\u00a6S\u00a8T\u00aaU\u00acV\u00aeW\u00b0X\u00b2Y\u00b4Z\u00b6"+ + "[\u00b8\\\u00ba]\u00bc^\u00be_\u00c0`\u00c2a\u00c4b\u00c6c\u00c8d\u00ca"+ + "e\u00ccf\u00ceg\u00d0h\u00d2i\u00d4j\u00d6k\u00d8l\u00dam\u00dcn\u00de"+ + "o\u00e0p\u00e2q\u00e4r\u00e6s\u00e8t\u00eau\u00ecv\u00eew\u00f0x\u00f2"+ + "y\u00f4z\u00f6{\u00f8|\u00fa}\u00fc~\u00fe\u007f\u0100\u0080\u0102\u0081"+ + "\u0104\u0082\u0106\u0083\u0108\u0084\u010a\u0085\u010c\u0086\u010e\u0087"+ + "\u0110\u0088\u0112\u0089\u0114\u008a\u0116\u008b\u0118\u008c\u011a\u008d"+ + "\u011c\u008e\u011e\u008f\u0120\u0090\u0122\u0091\u0124\u0092\u0126\u0000"+ + "\u0128\u0093\u012a\u0094\u012c\u0000\u012e\u0000\u0130\u0000\u0132\u0000"+ + "\u0134\u0000\u0136\u0000\u0138\u0000\u013a\u0000\u013c\u0000\u013e\u0000"+ + "\u0140\u0000\u0142\u0000\u0144\u0000\u0146\u0000\u0148\u0000\u014a\u0000"+ + "\u014c\u0000\u014e\u0000\u0150\u0000\u0152\u0000\u0002\u0000\u0001\u001b"+ + "\u0003\u0000\n\n\r\r\u2028\u2029\u0001\u000009\u0002\u000009__\u0002\u0000"+ + "XXxx\u0003\u000009AFaf\u0001\u000007\u0002\u0000OOoo\u0002\u000007__\u0002"+ + "\u0000BBbb\u0001\u000001\u0002\u000001__\u0004\u0000\t\t\u000b\f \u00a0"+ + "\u00a0\u0002\u0000\\\\``\u0004\u0000\n\n\r\r\"\"\\\\\u0004\u0000\n\n\r"+ + "\r\'\'\\\\\t\u0000\"\"\'\'\\\\bbffnnrrttvv\f\u0000\n\n\r\r\"\"\'\'09\\"+ + "\\bbffnnrrtvxx\u0003\u000009uuxx\u0004\u000009AF__af\u0001\u000019\u0002"+ + "\u0000EEee\u0002\u0000++--\u0198\u000009__\u0300\u036f\u0483\u0487\u0591"+ + "\u05bd\u05bf\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05c7\u0610\u061a\u064b"+ + "\u0669\u0670\u0670\u06d6\u06dc\u06df\u06e4\u06e7\u06e8\u06ea\u06ed\u06f0"+ + "\u06f9\u0711\u0711\u0730\u074a\u07a6\u07b0\u07c0\u07c9\u07eb\u07f3\u07fd"+ + "\u07fd\u0816\u0819\u081b\u0823\u0825\u0827\u0829\u082d\u0859\u085b\u0898"+ + "\u089f\u08ca\u08e1\u08e3\u0902\u093a\u093a\u093c\u093c\u0941\u0948\u094d"+ + "\u094d\u0951\u0957\u0962\u0963\u0966\u096f\u0981\u0981\u09bc\u09bc\u09c1"+ + "\u09c4\u09cd\u09cd\u09e2\u09e3\u09e6\u09ef\u09fe\u09fe\u0a01\u0a02\u0a3c"+ + "\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4d\u0a51\u0a51\u0a66\u0a71\u0a75"+ + "\u0a75\u0a81\u0a82\u0abc\u0abc\u0ac1\u0ac5\u0ac7\u0ac8\u0acd\u0acd\u0ae2"+ + "\u0ae3\u0ae6\u0aef\u0afa\u0aff\u0b01\u0b01\u0b3c\u0b3c\u0b3f\u0b3f\u0b41"+ + "\u0b44\u0b4d\u0b4d\u0b55\u0b56\u0b62\u0b63\u0b66\u0b6f\u0b82\u0b82\u0bc0"+ + "\u0bc0\u0bcd\u0bcd\u0be6\u0bef\u0c00\u0c00\u0c04\u0c04\u0c3c\u0c3c\u0c3e"+ + "\u0c40\u0c46\u0c48\u0c4a\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66\u0c6f\u0c81"+ + "\u0c81\u0cbc\u0cbc\u0cbf\u0cbf\u0cc6\u0cc6\u0ccc\u0ccd\u0ce2\u0ce3\u0ce6"+ + "\u0cef\u0d00\u0d01\u0d3b\u0d3c\u0d41\u0d44\u0d4d\u0d4d\u0d62\u0d63\u0d66"+ + "\u0d6f\u0d81\u0d81\u0dca\u0dca\u0dd2\u0dd4\u0dd6\u0dd6\u0de6\u0def\u0e31"+ + "\u0e31\u0e34\u0e3a\u0e47\u0e4e\u0e50\u0e59\u0eb1\u0eb1\u0eb4\u0ebc\u0ec8"+ + "\u0ece\u0ed0\u0ed9\u0f18\u0f19\u0f20\u0f29\u0f35\u0f35\u0f37\u0f37\u0f39"+ + "\u0f39\u0f71\u0f7e\u0f80\u0f84\u0f86\u0f87\u0f8d\u0f97\u0f99\u0fbc\u0fc6"+ + "\u0fc6\u102d\u1030\u1032\u1037\u1039\u103a\u103d\u103e\u1040\u1049\u1058"+ + "\u1059\u105e\u1060\u1071\u1074\u1082\u1082\u1085\u1086\u108d\u108d\u1090"+ + "\u1099\u109d\u109d\u135d\u135f\u1712\u1714\u1732\u1733\u1752\u1753\u1772"+ + "\u1773\u17b4\u17b5\u17b7\u17bd\u17c6\u17c6\u17c9\u17d3\u17dd\u17dd\u17e0"+ + "\u17e9\u180b\u180d\u180f\u1819\u1885\u1886\u18a9\u18a9\u1920\u1922\u1927"+ + "\u1928\u1932\u1932\u1939\u193b\u1946\u194f\u19d0\u19d9\u1a17\u1a18\u1a1b"+ + "\u1a1b\u1a56\u1a56\u1a58\u1a5e\u1a60\u1a60\u1a62\u1a62\u1a65\u1a6c\u1a73"+ + "\u1a7c\u1a7f\u1a89\u1a90\u1a99\u1ab0\u1abd\u1abf\u1ace\u1b00\u1b03\u1b34"+ + "\u1b34\u1b36\u1b3a\u1b3c\u1b3c\u1b42\u1b42\u1b50\u1b59\u1b6b\u1b73\u1b80"+ + "\u1b81\u1ba2\u1ba5\u1ba8\u1ba9\u1bab\u1bad\u1bb0\u1bb9\u1be6\u1be6\u1be8"+ + "\u1be9\u1bed\u1bed\u1bef\u1bf1\u1c2c\u1c33\u1c36\u1c37\u1c40\u1c49\u1c50"+ + "\u1c59\u1cd0\u1cd2\u1cd4\u1ce0\u1ce2\u1ce8\u1ced\u1ced\u1cf4\u1cf4\u1cf8"+ + "\u1cf9\u1dc0\u1dff\u200c\u200d\u203f\u2040\u2054\u2054\u20d0\u20dc\u20e1"+ + "\u20e1\u20e5\u20f0\u2cef\u2cf1\u2d7f\u2d7f\u2de0\u2dff\u302a\u302d\u3099"+ + "\u309a\u8000\ua620\u8000\ua629\u8000\ua66f\u8000\ua66f\u8000\ua674\u8000"+ + "\ua67d\u8000\ua69e\u8000\ua69f\u8000\ua6f0\u8000\ua6f1\u8000\ua802\u8000"+ + "\ua802\u8000\ua806\u8000\ua806\u8000\ua80b\u8000\ua80b\u8000\ua825\u8000"+ + "\ua826\u8000\ua82c\u8000\ua82c\u8000\ua8c4\u8000\ua8c5\u8000\ua8d0\u8000"+ + "\ua8d9\u8000\ua8e0\u8000\ua8f1\u8000\ua8ff\u8000\ua909\u8000\ua926\u8000"+ + "\ua92d\u8000\ua947\u8000\ua951\u8000\ua980\u8000\ua982\u8000\ua9b3\u8000"+ + "\ua9b3\u8000\ua9b6\u8000\ua9b9\u8000\ua9bc\u8000\ua9bd\u8000\ua9d0\u8000"+ + "\ua9d9\u8000\ua9e5\u8000\ua9e5\u8000\ua9f0\u8000\ua9f9\u8000\uaa29\u8000"+ + "\uaa2e\u8000\uaa31\u8000\uaa32\u8000\uaa35\u8000\uaa36\u8000\uaa43\u8000"+ + "\uaa43\u8000\uaa4c\u8000\uaa4c\u8000\uaa50\u8000\uaa59\u8000\uaa7c\u8000"+ + "\uaa7c\u8000\uaab0\u8000\uaab0\u8000\uaab2\u8000\uaab4\u8000\uaab7\u8000"+ + "\uaab8\u8000\uaabe\u8000\uaabf\u8000\uaac1\u8000\uaac1\u8000\uaaec\u8000"+ + "\uaaed\u8000\uaaf6\u8000\uaaf6\u8000\uabe5\u8000\uabe5\u8000\uabe8\u8000"+ + "\uabe8\u8000\uabed\u8000\uabed\u8000\uabf0\u8000\uabf9\u8000\ufb1e\u8000"+ + "\ufb1e\u8000\ufe00\u8000\ufe0f\u8000\ufe20\u8000\ufe2f\u8000\ufe33\u8000"+ + "\ufe34\u8000\ufe4d\u8000\ufe4f\u8000\uff10\u8000\uff19\u8000\uff3f\u8000"+ + "\uff3f\u8001\u01fd\u8001\u01fd\u8001\u02e0\u8001\u02e0\u8001\u0376\u8001"+ + "\u037a\u8001\u04a0\u8001\u04a9\u8001\u0a01\u8001\u0a03\u8001\u0a05\u8001"+ + "\u0a06\u8001\u0a0c\u8001\u0a0f\u8001\u0a38\u8001\u0a3a\u8001\u0a3f\u8001"+ + "\u0a3f\u8001\u0ae5\u8001\u0ae6\u8001\u0d24\u8001\u0d27\u8001\u0d30\u8001"+ + "\u0d39\u8001\u0eab\u8001\u0eac\u8001\u0efd\u8001\u0eff\u8001\u0f46\u8001"+ + "\u0f50\u8001\u0f82\u8001\u0f85\u8001\u1001\u8001\u1001\u8001\u1038\u8001"+ + "\u1046\u8001\u1066\u8001\u1070\u8001\u1073\u8001\u1074\u8001\u107f\u8001"+ + "\u1081\u8001\u10b3\u8001\u10b6\u8001\u10b9\u8001\u10ba\u8001\u10c2\u8001"+ + "\u10c2\u8001\u10f0\u8001\u10f9\u8001\u1100\u8001\u1102\u8001\u1127\u8001"+ + "\u112b\u8001\u112d\u8001\u1134\u8001\u1136\u8001\u113f\u8001\u1173\u8001"+ + "\u1173\u8001\u1180\u8001\u1181\u8001\u11b6\u8001\u11be\u8001\u11c9\u8001"+ + "\u11cc\u8001\u11cf\u8001\u11d9\u8001\u122f\u8001\u1231\u8001\u1234\u8001"+ + "\u1234\u8001\u1236\u8001\u1237\u8001\u123e\u8001\u123e\u8001\u1241\u8001"+ + "\u1241\u8001\u12df\u8001\u12df\u8001\u12e3\u8001\u12ea\u8001\u12f0\u8001"+ + "\u12f9\u8001\u1300\u8001\u1301\u8001\u133b\u8001\u133c\u8001\u1340\u8001"+ + "\u1340\u8001\u1366\u8001\u136c\u8001\u1370\u8001\u1374\u8001\u1438\u8001"+ + "\u143f\u8001\u1442\u8001\u1444\u8001\u1446\u8001\u1446\u8001\u1450\u8001"+ + "\u1459\u8001\u145e\u8001\u145e\u8001\u14b3\u8001\u14b8\u8001\u14ba\u8001"+ + "\u14ba\u8001\u14bf\u8001\u14c0\u8001\u14c2\u8001\u14c3\u8001\u14d0\u8001"+ + "\u14d9\u8001\u15b2\u8001\u15b5\u8001\u15bc\u8001\u15bd\u8001\u15bf\u8001"+ + "\u15c0\u8001\u15dc\u8001\u15dd\u8001\u1633\u8001\u163a\u8001\u163d\u8001"+ + "\u163d\u8001\u163f\u8001\u1640\u8001\u1650\u8001\u1659\u8001\u16ab\u8001"+ + "\u16ab\u8001\u16ad\u8001\u16ad\u8001\u16b0\u8001\u16b5\u8001\u16b7\u8001"+ + "\u16b7\u8001\u16c0\u8001\u16c9\u8001\u171d\u8001\u171f\u8001\u1722\u8001"+ + "\u1725\u8001\u1727\u8001\u172b\u8001\u1730\u8001\u1739\u8001\u182f\u8001"+ + "\u1837\u8001\u1839\u8001\u183a\u8001\u18e0\u8001\u18e9\u8001\u193b\u8001"+ + "\u193c\u8001\u193e\u8001\u193e\u8001\u1943\u8001\u1943\u8001\u1950\u8001"+ + "\u1959\u8001\u19d4\u8001\u19d7\u8001\u19da\u8001\u19db\u8001\u19e0\u8001"+ + "\u19e0\u8001\u1a01\u8001\u1a0a\u8001\u1a33\u8001\u1a38\u8001\u1a3b\u8001"+ + "\u1a3e\u8001\u1a47\u8001\u1a47\u8001\u1a51\u8001\u1a56\u8001\u1a59\u8001"+ + "\u1a5b\u8001\u1a8a\u8001\u1a96\u8001\u1a98\u8001\u1a99\u8001\u1c30\u8001"+ + "\u1c36\u8001\u1c38\u8001\u1c3d\u8001\u1c3f\u8001\u1c3f\u8001\u1c50\u8001"+ + "\u1c59\u8001\u1c92\u8001\u1ca7\u8001\u1caa\u8001\u1cb0\u8001\u1cb2\u8001"+ + "\u1cb3\u8001\u1cb5\u8001\u1cb6\u8001\u1d31\u8001\u1d36\u8001\u1d3a\u8001"+ + "\u1d3a\u8001\u1d3c\u8001\u1d3d\u8001\u1d3f\u8001\u1d45\u8001\u1d47\u8001"+ + "\u1d47\u8001\u1d50\u8001\u1d59\u8001\u1d90\u8001\u1d91\u8001\u1d95\u8001"+ + "\u1d95\u8001\u1d97\u8001\u1d97\u8001\u1da0\u8001\u1da9\u8001\u1ef3\u8001"+ + "\u1ef4\u8001\u1f00\u8001\u1f01\u8001\u1f36\u8001\u1f3a\u8001\u1f40\u8001"+ + "\u1f40\u8001\u1f42\u8001\u1f42\u8001\u1f50\u8001\u1f59\u8001\u3440\u8001"+ + "\u3440\u8001\u3447\u8001\u3455\u8001\u6a60\u8001\u6a69\u8001\u6ac0\u8001"+ + "\u6ac9\u8001\u6af0\u8001\u6af4\u8001\u6b30\u8001\u6b36\u8001\u6b50\u8001"+ + "\u6b59\u8001\u6f4f\u8001\u6f4f\u8001\u6f8f\u8001\u6f92\u8001\u6fe4\u8001"+ + "\u6fe4\u8001\ubc9d\u8001\ubc9e\u8001\ucf00\u8001\ucf2d\u8001\ucf30\u8001"+ + "\ucf46\u8001\ud167\u8001\ud169\u8001\ud17b\u8001\ud182\u8001\ud185\u8001"+ + "\ud18b\u8001\ud1aa\u8001\ud1ad\u8001\ud242\u8001\ud244\u8001\ud7ce\u8001"+ + "\ud7ff\u8001\uda00\u8001\uda36\u8001\uda3b\u8001\uda6c\u8001\uda75\u8001"+ + "\uda75\u8001\uda84\u8001\uda84\u8001\uda9b\u8001\uda9f\u8001\udaa1\u8001"+ + "\udaaf\u8001\ue000\u8001\ue006\u8001\ue008\u8001\ue018\u8001\ue01b\u8001"+ + "\ue021\u8001\ue023\u8001\ue024\u8001\ue026\u8001\ue02a\u8001\ue08f\u8001"+ + "\ue08f\u8001\ue130\u8001\ue136\u8001\ue140\u8001\ue149\u8001\ue2ae\u8001"+ + "\ue2ae\u8001\ue2ec\u8001\ue2f9\u8001\ue4ec\u8001\ue4f9\u8001\ue8d0\u8001"+ + "\ue8d6\u8001\ue944\u8001\ue94a\u8001\ue950\u8001\ue959\u8001\ufbf0\u8001"+ + "\ufbf9\u800e\u0100\u800e\u01ef\u0295\u0000$$AZ__az\u00aa\u00aa\u00b5\u00b5"+ + "\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8\u02c1\u02c6\u02d1\u02e0\u02e4"+ + "\u02ec\u02ec\u02ee\u02ee\u0370\u0374\u0376\u0377\u037a\u037d\u037f\u037f"+ + "\u0386\u0386\u0388\u038a\u038c\u038c\u038e\u03a1\u03a3\u03f5\u03f7\u0481"+ + "\u048a\u052f\u0531\u0556\u0559\u0559\u0560\u0588\u05d0\u05ea\u05ef\u05f2"+ + "\u0620\u064a\u066e\u066f\u0671\u06d3\u06d5\u06d5\u06e5\u06e6\u06ee\u06ef"+ + "\u06fa\u06fc\u06ff\u06ff\u0710\u0710\u0712\u072f\u074d\u07a5\u07b1\u07b1"+ + "\u07ca\u07ea\u07f4\u07f5\u07fa\u07fa\u0800\u0815\u081a\u081a\u0824\u0824"+ + "\u0828\u0828\u0840\u0858\u0860\u086a\u0870\u0887\u0889\u088e\u08a0\u08c9"+ + "\u0904\u0939\u093d\u093d\u0950\u0950\u0958\u0961\u0971\u0980\u0985\u098c"+ + "\u098f\u0990\u0993\u09a8\u09aa\u09b0\u09b2\u09b2\u09b6\u09b9\u09bd\u09bd"+ + "\u09ce\u09ce\u09dc\u09dd\u09df\u09e1\u09f0\u09f1\u09fc\u09fc\u0a05\u0a0a"+ + "\u0a0f\u0a10\u0a13\u0a28\u0a2a\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39"+ + "\u0a59\u0a5c\u0a5e\u0a5e\u0a72\u0a74\u0a85\u0a8d\u0a8f\u0a91\u0a93\u0aa8"+ + "\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5\u0ab9\u0abd\u0abd\u0ad0\u0ad0\u0ae0\u0ae1"+ + "\u0af9\u0af9\u0b05\u0b0c\u0b0f\u0b10\u0b13\u0b28\u0b2a\u0b30\u0b32\u0b33"+ + "\u0b35\u0b39\u0b3d\u0b3d\u0b5c\u0b5d\u0b5f\u0b61\u0b71\u0b71\u0b83\u0b83"+ + "\u0b85\u0b8a\u0b8e\u0b90\u0b92\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e\u0b9f"+ + "\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0bb9\u0bd0\u0bd0\u0c05\u0c0c\u0c0e\u0c10"+ + "\u0c12\u0c28\u0c2a\u0c39\u0c3d\u0c3d\u0c58\u0c5a\u0c5d\u0c5d\u0c60\u0c61"+ + "\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92\u0ca8\u0caa\u0cb3\u0cb5\u0cb9"+ + "\u0cbd\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04\u0d0c\u0d0e\u0d10"+ + "\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54\u0d56\u0d5f\u0d61\u0d7a\u0d7f"+ + "\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd\u0dbd\u0dc0\u0dc6\u0e01\u0e30"+ + "\u0e32\u0e33\u0e40\u0e46\u0e81\u0e82\u0e84\u0e84\u0e86\u0e8a\u0e8c\u0ea3"+ + "\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd\u0ebd\u0ec0\u0ec4\u0ec6\u0ec6"+ + "\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49\u0f6c\u0f88\u0f8c\u1000\u102a"+ + "\u103f\u103f\u1050\u1055\u105a\u105d\u1061\u1061\u1065\u1066\u106e\u1070"+ + "\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7\u10c7\u10cd\u10cd\u10d0\u10fa"+ + "\u10fc\u1248\u124a\u124d\u1250\u1256\u1258\u1258\u125a\u125d\u1260\u1288"+ + "\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8\u12be\u12c0\u12c0\u12c2\u12c5"+ + "\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318\u135a\u1380\u138f\u13a0\u13f5"+ + "\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681\u169a\u16a0\u16ea\u16f1\u16f8"+ + "\u1700\u1711\u171f\u1731\u1740\u1751\u1760\u176c\u176e\u1770\u1780\u17b3"+ + "\u17d7\u17d7\u17dc\u17dc\u1820\u1878\u1880\u1884\u1887\u18a8\u18aa\u18aa"+ + "\u18b0\u18f5\u1900\u191e\u1950\u196d\u1970\u1974\u1980\u19ab\u19b0\u19c9"+ + "\u1a00\u1a16\u1a20\u1a54\u1aa7\u1aa7\u1b05\u1b33\u1b45\u1b4c\u1b83\u1ba0"+ + "\u1bae\u1baf\u1bba\u1be5\u1c00\u1c23\u1c4d\u1c4f\u1c5a\u1c7d\u1c80\u1c88"+ + "\u1c90\u1cba\u1cbd\u1cbf\u1ce9\u1cec\u1cee\u1cf3\u1cf5\u1cf6\u1cfa\u1cfa"+ + "\u1d00\u1dbf\u1e00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48\u1f4d\u1f50\u1f57"+ + "\u1f59\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80\u1fb4\u1fb6\u1fbc"+ + "\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb\u1fe0\u1fec"+ + "\u1ff2\u1ff4\u1ff6\u1ffc\u2071\u2071\u207f\u207f\u2090\u209c\u2102\u2102"+ + "\u2107\u2107\u210a\u2113\u2115\u2115\u2119\u211d\u2124\u2124\u2126\u2126"+ + "\u2128\u2128\u212a\u212d\u212f\u2139\u213c\u213f\u2145\u2149\u214e\u214e"+ + "\u2183\u2184\u2c00\u2ce4\u2ceb\u2cee\u2cf2\u2cf3\u2d00\u2d25\u2d27\u2d27"+ + "\u2d2d\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d80\u2d96\u2da0\u2da6\u2da8\u2dae"+ + "\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6\u2dd8\u2dde"+ + "\u2e2f\u2e2f\u3005\u3006\u3031\u3035\u303b\u303c\u3041\u3096\u309d\u309f"+ + "\u30a1\u30fa\u30fc\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf\u31f0\u31ff"+ + "\u3400\u4dbf\u4e00\u8000\ua48c\u8000\ua4d0\u8000\ua4fd\u8000\ua500\u8000"+ + "\ua60c\u8000\ua610\u8000\ua61f\u8000\ua62a\u8000\ua62b\u8000\ua640\u8000"+ + "\ua66e\u8000\ua67f\u8000\ua69d\u8000\ua6a0\u8000\ua6e5\u8000\ua717\u8000"+ + "\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7ca\u8000\ua7d0\u8000"+ + "\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000\ua7d5\u8000\ua7d9\u8000\ua7f2\u8000"+ + "\ua801\u8000\ua803\u8000\ua805\u8000\ua807\u8000\ua80a\u8000\ua80c\u8000"+ + "\ua822\u8000\ua840\u8000\ua873\u8000\ua882\u8000\ua8b3\u8000\ua8f2\u8000"+ + "\ua8f7\u8000\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua8fe\u8000\ua90a\u8000"+ + "\ua925\u8000\ua930\u8000\ua946\u8000\ua960\u8000\ua97c\u8000\ua984\u8000"+ + "\ua9b2\u8000\ua9cf\u8000\ua9cf\u8000\ua9e0\u8000\ua9e4\u8000\ua9e6\u8000"+ + "\ua9ef\u8000\ua9fa\u8000\ua9fe\u8000\uaa00\u8000\uaa28\u8000\uaa40\u8000"+ + "\uaa42\u8000\uaa44\u8000\uaa4b\u8000\uaa60\u8000\uaa76\u8000\uaa7a\u8000"+ + "\uaa7a\u8000\uaa7e\u8000\uaaaf\u8000\uaab1\u8000\uaab1\u8000\uaab5\u8000"+ + "\uaab6\u8000\uaab9\u8000\uaabd\u8000\uaac0\u8000\uaac0\u8000\uaac2\u8000"+ + "\uaac2\u8000\uaadb\u8000\uaadd\u8000\uaae0\u8000\uaaea\u8000\uaaf2\u8000"+ + "\uaaf4\u8000\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000\uab11\u8000"+ + "\uab16\u8000\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000\uab30\u8000"+ + "\uab5a\u8000\uab5c\u8000\uab69\u8000\uab70\u8000\uabe2\u8000\uac00\u8000"+ + "\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000\ud7cb\u8000\ud7fb\u8000\uf900\u8000"+ + "\ufa6d\u8000\ufa70\u8000\ufad9\u8000\ufb00\u8000\ufb06\u8000\ufb13\u8000"+ + "\ufb17\u8000\ufb1d\u8000\ufb1d\u8000\ufb1f\u8000\ufb28\u8000\ufb2a\u8000"+ + "\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000\ufb40\u8000"+ + "\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000\ufbd3\u8000"+ + "\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000\ufdf0\u8000"+ + "\ufdfb\u8000\ufe70\u8000\ufe74\u8000\ufe76\u8000\ufefc\u8000\uff21\u8000"+ + "\uff3a\u8000\uff41\u8000\uff5a\u8000\uff66\u8000\uffbe\u8000\uffc2\u8000"+ + "\uffc7\u8000\uffca\u8000\uffcf\u8000\uffd2\u8000\uffd7\u8000\uffda\u8000"+ + "\uffdc\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001:\u8001<\u8001"+ + "=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001\u0280\u8001"+ + "\u029c\u8001\u02a0\u8001\u02d0\u8001\u0300\u8001\u031f\u8001\u032d\u8001"+ + "\u0340\u8001\u0342\u8001\u0349\u8001\u0350\u8001\u0375\u8001\u0380\u8001"+ + "\u039d\u8001\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001\u0400\u8001"+ + "\u049d\u8001\u04b0\u8001\u04d3\u8001\u04d8\u8001\u04fb\u8001\u0500\u8001"+ + "\u0527\u8001\u0530\u8001\u0563\u8001\u0570\u8001\u057a\u8001\u057c\u8001"+ + "\u058a\u8001\u058c\u8001\u0592\u8001\u0594\u8001\u0595\u8001\u0597\u8001"+ + "\u05a1\u8001\u05a3\u8001\u05b1\u8001\u05b3\u8001\u05b9\u8001\u05bb\u8001"+ + "\u05bc\u8001\u0600\u8001\u0736\u8001\u0740\u8001\u0755\u8001\u0760\u8001"+ + "\u0767\u8001\u0780\u8001\u0785\u8001\u0787\u8001\u07b0\u8001\u07b2\u8001"+ + "\u07ba\u8001\u0800\u8001\u0805\u8001\u0808\u8001\u0808\u8001\u080a\u8001"+ + "\u0835\u8001\u0837\u8001\u0838\u8001\u083c\u8001\u083c\u8001\u083f\u8001"+ + "\u0855\u8001\u0860\u8001\u0876\u8001\u0880\u8001\u089e\u8001\u08e0\u8001"+ + "\u08f2\u8001\u08f4\u8001\u08f5\u8001\u0900\u8001\u0915\u8001\u0920\u8001"+ + "\u0939\u8001\u0980\u8001\u09b7\u8001\u09be\u8001\u09bf\u8001\u0a00\u8001"+ + "\u0a00\u8001\u0a10\u8001\u0a13\u8001\u0a15\u8001\u0a17\u8001\u0a19\u8001"+ + "\u0a35\u8001\u0a60\u8001\u0a7c\u8001\u0a80\u8001\u0a9c\u8001\u0ac0\u8001"+ + "\u0ac7\u8001\u0ac9\u8001\u0ae4\u8001\u0b00\u8001\u0b35\u8001\u0b40\u8001"+ + "\u0b55\u8001\u0b60\u8001\u0b72\u8001\u0b80\u8001\u0b91\u8001\u0c00\u8001"+ + "\u0c48\u8001\u0c80\u8001\u0cb2\u8001\u0cc0\u8001\u0cf2\u8001\u0d00\u8001"+ + "\u0d23\u8001\u0e80\u8001\u0ea9\u8001\u0eb0\u8001\u0eb1\u8001\u0f00\u8001"+ + "\u0f1c\u8001\u0f27\u8001\u0f27\u8001\u0f30\u8001\u0f45\u8001\u0f70\u8001"+ + "\u0f81\u8001\u0fb0\u8001\u0fc4\u8001\u0fe0\u8001\u0ff6\u8001\u1003\u8001"+ + "\u1037\u8001\u1071\u8001\u1072\u8001\u1075\u8001\u1075\u8001\u1083\u8001"+ + "\u10af\u8001\u10d0\u8001\u10e8\u8001\u1103\u8001\u1126\u8001\u1144\u8001"+ + "\u1144\u8001\u1147\u8001\u1147\u8001\u1150\u8001\u1172\u8001\u1176\u8001"+ + "\u1176\u8001\u1183\u8001\u11b2\u8001\u11c1\u8001\u11c4\u8001\u11da\u8001"+ + "\u11da\u8001\u11dc\u8001\u11dc\u8001\u1200\u8001\u1211\u8001\u1213\u8001"+ + "\u122b\u8001\u123f\u8001\u1240\u8001\u1280\u8001\u1286\u8001\u1288\u8001"+ + "\u1288\u8001\u128a\u8001\u128d\u8001\u128f\u8001\u129d\u8001\u129f\u8001"+ + "\u12a8\u8001\u12b0\u8001\u12de\u8001\u1305\u8001\u130c\u8001\u130f\u8001"+ + "\u1310\u8001\u1313\u8001\u1328\u8001\u132a\u8001\u1330\u8001\u1332\u8001"+ + "\u1333\u8001\u1335\u8001\u1339\u8001\u133d\u8001\u133d\u8001\u1350\u8001"+ + "\u1350\u8001\u135d\u8001\u1361\u8001\u1400\u8001\u1434\u8001\u1447\u8001"+ + "\u144a\u8001\u145f\u8001\u1461\u8001\u1480\u8001\u14af\u8001\u14c4\u8001"+ + "\u14c5\u8001\u14c7\u8001\u14c7\u8001\u1580\u8001\u15ae\u8001\u15d8\u8001"+ + "\u15db\u8001\u1600\u8001\u162f\u8001\u1644\u8001\u1644\u8001\u1680\u8001"+ + "\u16aa\u8001\u16b8\u8001\u16b8\u8001\u1700\u8001\u171a\u8001\u1740\u8001"+ + "\u1746\u8001\u1800\u8001\u182b\u8001\u18a0\u8001\u18df\u8001\u18ff\u8001"+ + "\u1906\u8001\u1909\u8001\u1909\u8001\u190c\u8001\u1913\u8001\u1915\u8001"+ + "\u1916\u8001\u1918\u8001\u192f\u8001\u193f\u8001\u193f\u8001\u1941\u8001"+ + "\u1941\u8001\u19a0\u8001\u19a7\u8001\u19aa\u8001\u19d0\u8001\u19e1\u8001"+ + "\u19e1\u8001\u19e3\u8001\u19e3\u8001\u1a00\u8001\u1a00\u8001\u1a0b\u8001"+ + "\u1a32\u8001\u1a3a\u8001\u1a3a\u8001\u1a50\u8001\u1a50\u8001\u1a5c\u8001"+ + "\u1a89\u8001\u1a9d\u8001\u1a9d\u8001\u1ab0\u8001\u1af8\u8001\u1c00\u8001"+ + "\u1c08\u8001\u1c0a\u8001\u1c2e\u8001\u1c40\u8001\u1c40\u8001\u1c72\u8001"+ + "\u1c8f\u8001\u1d00\u8001\u1d06\u8001\u1d08\u8001\u1d09\u8001\u1d0b\u8001"+ + "\u1d30\u8001\u1d46\u8001\u1d46\u8001\u1d60\u8001\u1d65\u8001\u1d67\u8001"+ + "\u1d68\u8001\u1d6a\u8001\u1d89\u8001\u1d98\u8001\u1d98\u8001\u1ee0\u8001"+ + "\u1ef2\u8001\u1f02\u8001\u1f02\u8001\u1f04\u8001\u1f10\u8001\u1f12\u8001"+ + "\u1f33\u8001\u1fb0\u8001\u1fb0\u8001\u2000\u8001\u2399\u8001\u2480\u8001"+ + "\u2543\u8001\u2f90\u8001\u2ff0\u8001\u3000\u8001\u342f\u8001\u3441\u8001"+ + "\u3446\u8001\u4400\u8001\u4646\u8001\u6800\u8001\u6a38\u8001\u6a40\u8001"+ + "\u6a5e\u8001\u6a70\u8001\u6abe\u8001\u6ad0\u8001\u6aed\u8001\u6b00\u8001"+ + "\u6b2f\u8001\u6b40\u8001\u6b43\u8001\u6b63\u8001\u6b77\u8001\u6b7d\u8001"+ + "\u6b8f\u8001\u6e40\u8001\u6e7f\u8001\u6f00\u8001\u6f4a\u8001\u6f50\u8001"+ + "\u6f50\u8001\u6f93\u8001\u6f9f\u8001\u6fe0\u8001\u6fe1\u8001\u6fe3\u8001"+ + "\u6fe3\u8001\u7000\u8001\u87f7\u8001\u8800\u8001\u8cd5\u8001\u8d00\u8001"+ + "\u8d08\u8001\uaff0\u8001\uaff3\u8001\uaff5\u8001\uaffb\u8001\uaffd\u8001"+ + "\uaffe\u8001\ub000\u8001\ub122\u8001\ub132\u8001\ub132\u8001\ub150\u8001"+ + "\ub152\u8001\ub155\u8001\ub155\u8001\ub164\u8001\ub167\u8001\ub170\u8001"+ + "\ub2fb\u8001\ubc00\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001"+ + "\ubc88\u8001\ubc90\u8001\ubc99\u8001\ud400\u8001\ud454\u8001\ud456\u8001"+ + "\ud49c\u8001\ud49e\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001"+ + "\ud4a6\u8001\ud4a9\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001"+ + "\ud4bb\u8001\ud4bd\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001"+ + "\ud50a\u8001\ud50d\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001"+ + "\ud539\u8001\ud53b\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546\u8001"+ + "\ud546\u8001\ud54a\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001"+ + "\ud6c0\u8001\ud6c2\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001"+ + "\ud714\u8001\ud716\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750\u8001"+ + "\ud76e\u8001\ud770\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001"+ + "\ud7c2\u8001\ud7c4\u8001\ud7cb\u8001\udf00\u8001\udf1e\u8001\udf25\u8001"+ + "\udf2a\u8001\ue030\u8001\ue06d\u8001\ue100\u8001\ue12c\u8001\ue137\u8001"+ + "\ue13d\u8001\ue14e\u8001\ue14e\u8001\ue290\u8001\ue2ad\u8001\ue2c0\u8001"+ + "\ue2eb\u8001\ue4d0\u8001\ue4eb\u8001\ue7e0\u8001\ue7e6\u8001\ue7e8\u8001"+ + "\ue7eb\u8001\ue7ed\u8001\ue7ee\u8001\ue7f0\u8001\ue7fe\u8001\ue800\u8001"+ + "\ue8c4\u8001\ue900\u8001\ue943\u8001\ue94b\u8001\ue94b\u8001\uee00\u8001"+ + "\uee03\u8001\uee05\u8001\uee1f\u8001\uee21\u8001\uee22\u8001\uee24\u8001"+ + "\uee24\u8001\uee27\u8001\uee27\u8001\uee29\u8001\uee32\u8001\uee34\u8001"+ + "\uee37\u8001\uee39\u8001\uee39\u8001\uee3b\u8001\uee3b\u8001\uee42\u8001"+ + "\uee42\u8001\uee47\u8001\uee47\u8001\uee49\u8001\uee49\u8001\uee4b\u8001"+ + "\uee4b\u8001\uee4d\u8001\uee4f\u8001\uee51\u8001\uee52\u8001\uee54\u8001"+ + "\uee54\u8001\uee57\u8001\uee57\u8001\uee59\u8001\uee59\u8001\uee5b\u8001"+ + "\uee5b\u8001\uee5d\u8001\uee5d\u8001\uee5f\u8001\uee5f\u8001\uee61\u8001"+ + "\uee62\u8001\uee64\u8001\uee64\u8001\uee67\u8001\uee6a\u8001\uee6c\u8001"+ + "\uee72\u8001\uee74\u8001\uee77\u8001\uee79\u8001\uee7c\u8001\uee7e\u8001"+ + "\uee7e\u8001\uee80\u8001\uee89\u8001\uee8b\u8001\uee9b\u8001\ueea1\u8001"+ + "\ueea3\u8001\ueea5\u8001\ueea9\u8001\ueeab\u8001\ueebb\u8002\u0000\u8002"+ + "\ua6df\u8002\ua700\u8002\ub739\u8002\ub740\u8002\ub81d\u8002\ub820\u8002"+ + "\ucea1\u8002\uceb0\u8002\uebe0\u8002\uf800\u8002\ufa1d\u8003\u0000\u8003"+ + "\u134a\u8003\u1350\u8003\u23af\u0006\u0000\n\n\r\r**//[\\\u2028\u2029"+ + "\u0005\u0000\n\n\r\r//[\\\u2028\u2029\u0004\u0000\n\n\r\r\\]\u2028\u2029"+ + "\u054e\u0000\u0002\u0001\u0000\u0000\u0000\u0000\u0004\u0001\u0000\u0000"+ + "\u0000\u0000\u0006\u0001\u0000\u0000\u0000\u0000\b\u0001\u0000\u0000\u0000"+ + "\u0000\n\u0001\u0000\u0000\u0000\u0000\f\u0001\u0000\u0000\u0000\u0000"+ + "\u000e\u0001\u0000\u0000\u0000\u0000\u0010\u0001\u0000\u0000\u0000\u0000"+ + "\u0012\u0001\u0000\u0000\u0000\u0000\u0014\u0001\u0000\u0000\u0000\u0000"+ + "\u0016\u0001\u0000\u0000\u0000\u0000\u0018\u0001\u0000\u0000\u0000\u0000"+ + "\u001a\u0001\u0000\u0000\u0000\u0000\u001c\u0001\u0000\u0000\u0000\u0000"+ + "\u001e\u0001\u0000\u0000\u0000\u0000 \u0001\u0000\u0000\u0000\u0000\""+ + "\u0001\u0000\u0000\u0000\u0000$\u0001\u0000\u0000\u0000\u0000&\u0001\u0000"+ + "\u0000\u0000\u0000(\u0001\u0000\u0000\u0000\u0000*\u0001\u0000\u0000\u0000"+ + "\u0000,\u0001\u0000\u0000\u0000\u0000.\u0001\u0000\u0000\u0000\u00000"+ + "\u0001\u0000\u0000\u0000\u00002\u0001\u0000\u0000\u0000\u00004\u0001\u0000"+ + "\u0000\u0000\u00006\u0001\u0000\u0000\u0000\u00008\u0001\u0000\u0000\u0000"+ + "\u0000:\u0001\u0000\u0000\u0000\u0000<\u0001\u0000\u0000\u0000\u0000>"+ + "\u0001\u0000\u0000\u0000\u0000@\u0001\u0000\u0000\u0000\u0000B\u0001\u0000"+ + "\u0000\u0000\u0000D\u0001\u0000\u0000\u0000\u0000F\u0001\u0000\u0000\u0000"+ + "\u0000H\u0001\u0000\u0000\u0000\u0000J\u0001\u0000\u0000\u0000\u0000L"+ + "\u0001\u0000\u0000\u0000\u0000N\u0001\u0000\u0000\u0000\u0000P\u0001\u0000"+ + "\u0000\u0000\u0000R\u0001\u0000\u0000\u0000\u0000T\u0001\u0000\u0000\u0000"+ + "\u0000V\u0001\u0000\u0000\u0000\u0000X\u0001\u0000\u0000\u0000\u0000Z"+ + "\u0001\u0000\u0000\u0000\u0000\\\u0001\u0000\u0000\u0000\u0000^\u0001"+ + "\u0000\u0000\u0000\u0000`\u0001\u0000\u0000\u0000\u0000b\u0001\u0000\u0000"+ + "\u0000\u0000d\u0001\u0000\u0000\u0000\u0000f\u0001\u0000\u0000\u0000\u0000"+ + "h\u0001\u0000\u0000\u0000\u0000j\u0001\u0000\u0000\u0000\u0000l\u0001"+ + "\u0000\u0000\u0000\u0000n\u0001\u0000\u0000\u0000\u0000p\u0001\u0000\u0000"+ + "\u0000\u0000r\u0001\u0000\u0000\u0000\u0000t\u0001\u0000\u0000\u0000\u0000"+ + "v\u0001\u0000\u0000\u0000\u0000x\u0001\u0000\u0000\u0000\u0000z\u0001"+ + "\u0000\u0000\u0000\u0000|\u0001\u0000\u0000\u0000\u0000~\u0001\u0000\u0000"+ + "\u0000\u0000\u0080\u0001\u0000\u0000\u0000\u0000\u0082\u0001\u0000\u0000"+ + "\u0000\u0000\u0084\u0001\u0000\u0000\u0000\u0000\u0086\u0001\u0000\u0000"+ + "\u0000\u0000\u0088\u0001\u0000\u0000\u0000\u0000\u008a\u0001\u0000\u0000"+ + "\u0000\u0000\u008c\u0001\u0000\u0000\u0000\u0000\u008e\u0001\u0000\u0000"+ + "\u0000\u0000\u0090\u0001\u0000\u0000\u0000\u0000\u0092\u0001\u0000\u0000"+ + "\u0000\u0000\u0094\u0001\u0000\u0000\u0000\u0000\u0096\u0001\u0000\u0000"+ + "\u0000\u0000\u0098\u0001\u0000\u0000\u0000\u0000\u009a\u0001\u0000\u0000"+ + "\u0000\u0000\u009c\u0001\u0000\u0000\u0000\u0000\u009e\u0001\u0000\u0000"+ + "\u0000\u0000\u00a0\u0001\u0000\u0000\u0000\u0000\u00a2\u0001\u0000\u0000"+ + "\u0000\u0000\u00a4\u0001\u0000\u0000\u0000\u0000\u00a6\u0001\u0000\u0000"+ + "\u0000\u0000\u00a8\u0001\u0000\u0000\u0000\u0000\u00aa\u0001\u0000\u0000"+ + "\u0000\u0000\u00ac\u0001\u0000\u0000\u0000\u0000\u00ae\u0001\u0000\u0000"+ + "\u0000\u0000\u00b0\u0001\u0000\u0000\u0000\u0000\u00b2\u0001\u0000\u0000"+ + "\u0000\u0000\u00b4\u0001\u0000\u0000\u0000\u0000\u00b6\u0001\u0000\u0000"+ + "\u0000\u0000\u00b8\u0001\u0000\u0000\u0000\u0000\u00ba\u0001\u0000\u0000"+ + "\u0000\u0000\u00bc\u0001\u0000\u0000\u0000\u0000\u00be\u0001\u0000\u0000"+ + "\u0000\u0000\u00c0\u0001\u0000\u0000\u0000\u0000\u00c2\u0001\u0000\u0000"+ + "\u0000\u0000\u00c4\u0001\u0000\u0000\u0000\u0000\u00c6\u0001\u0000\u0000"+ + "\u0000\u0000\u00c8\u0001\u0000\u0000\u0000\u0000\u00ca\u0001\u0000\u0000"+ + "\u0000\u0000\u00cc\u0001\u0000\u0000\u0000\u0000\u00ce\u0001\u0000\u0000"+ + "\u0000\u0000\u00d0\u0001\u0000\u0000\u0000\u0000\u00d2\u0001\u0000\u0000"+ + "\u0000\u0000\u00d4\u0001\u0000\u0000\u0000\u0000\u00d6\u0001\u0000\u0000"+ + "\u0000\u0000\u00d8\u0001\u0000\u0000\u0000\u0000\u00da\u0001\u0000\u0000"+ + "\u0000\u0000\u00dc\u0001\u0000\u0000\u0000\u0000\u00de\u0001\u0000\u0000"+ + "\u0000\u0000\u00e0\u0001\u0000\u0000\u0000\u0000\u00e2\u0001\u0000\u0000"+ + "\u0000\u0000\u00e4\u0001\u0000\u0000\u0000\u0000\u00e6\u0001\u0000\u0000"+ + "\u0000\u0000\u00e8\u0001\u0000\u0000\u0000\u0000\u00ea\u0001\u0000\u0000"+ + "\u0000\u0000\u00ec\u0001\u0000\u0000\u0000\u0000\u00ee\u0001\u0000\u0000"+ + "\u0000\u0000\u00f0\u0001\u0000\u0000\u0000\u0000\u00f2\u0001\u0000\u0000"+ + "\u0000\u0000\u00f4\u0001\u0000\u0000\u0000\u0000\u00f6\u0001\u0000\u0000"+ + "\u0000\u0000\u00f8\u0001\u0000\u0000\u0000\u0000\u00fa\u0001\u0000\u0000"+ + "\u0000\u0000\u00fc\u0001\u0000\u0000\u0000\u0000\u00fe\u0001\u0000\u0000"+ + "\u0000\u0000\u0100\u0001\u0000\u0000\u0000\u0000\u0102\u0001\u0000\u0000"+ + "\u0000\u0000\u0104\u0001\u0000\u0000\u0000\u0000\u0106\u0001\u0000\u0000"+ + "\u0000\u0000\u0108\u0001\u0000\u0000\u0000\u0000\u010a\u0001\u0000\u0000"+ + "\u0000\u0000\u010c\u0001\u0000\u0000\u0000\u0000\u010e\u0001\u0000\u0000"+ + "\u0000\u0000\u0110\u0001\u0000\u0000\u0000\u0000\u0112\u0001\u0000\u0000"+ + "\u0000\u0000\u0114\u0001\u0000\u0000\u0000\u0000\u0116\u0001\u0000\u0000"+ + "\u0000\u0000\u0118\u0001\u0000\u0000\u0000\u0000\u011a\u0001\u0000\u0000"+ + "\u0000\u0000\u011c\u0001\u0000\u0000\u0000\u0000\u011e\u0001\u0000\u0000"+ + "\u0000\u0000\u0120\u0001\u0000\u0000\u0000\u0000\u0122\u0001\u0000\u0000"+ + "\u0000\u0001\u0124\u0001\u0000\u0000\u0000\u0001\u0126\u0001\u0000\u0000"+ + "\u0000\u0001\u0128\u0001\u0000\u0000\u0000\u0001\u012a\u0001\u0000\u0000"+ + "\u0000\u0002\u0154\u0001\u0000\u0000\u0000\u0004\u0162\u0001\u0000\u0000"+ + "\u0000\u0006\u016d\u0001\u0000\u0000\u0000\b\u017d\u0001\u0000\u0000\u0000"+ + "\n\u017f\u0001\u0000\u0000\u0000\f\u0181\u0001\u0000\u0000\u0000\u000e"+ + "\u0183\u0001\u0000\u0000\u0000\u0010\u0185\u0001\u0000\u0000\u0000\u0012"+ + "\u0188\u0001\u0000\u0000\u0000\u0014\u018d\u0001\u0000\u0000\u0000\u0016"+ + "\u0190\u0001\u0000\u0000\u0000\u0018\u0192\u0001\u0000\u0000\u0000\u001a"+ + "\u0194\u0001\u0000\u0000\u0000\u001c\u0196\u0001\u0000\u0000\u0000\u001e"+ + "\u0198\u0001\u0000\u0000\u0000 \u019b\u0001\u0000\u0000\u0000\"\u019d"+ + "\u0001\u0000\u0000\u0000$\u01a1\u0001\u0000\u0000\u0000&\u01a3\u0001\u0000"+ + "\u0000\u0000(\u01a6\u0001\u0000\u0000\u0000*\u01a9\u0001\u0000\u0000\u0000"+ + ",\u01ab\u0001\u0000\u0000\u0000.\u01ad\u0001\u0000\u0000\u00000\u01af"+ + "\u0001\u0000\u0000\u00002\u01b1\u0001\u0000\u0000\u00004\u01b3\u0001\u0000"+ + "\u0000\u00006\u01b5\u0001\u0000\u0000\u00008\u01b7\u0001\u0000\u0000\u0000"+ + ":\u01ba\u0001\u0000\u0000\u0000<\u01bd\u0001\u0000\u0000\u0000>\u01bf"+ + "\u0001\u0000\u0000\u0000@\u01c2\u0001\u0000\u0000\u0000B\u01c4\u0001\u0000"+ + "\u0000\u0000D\u01c6\u0001\u0000\u0000\u0000F\u01c9\u0001\u0000\u0000\u0000"+ + "H\u01cc\u0001\u0000\u0000\u0000J\u01cf\u0001\u0000\u0000\u0000L\u01d2"+ + "\u0001\u0000\u0000\u0000N\u01d6\u0001\u0000\u0000\u0000P\u01da\u0001\u0000"+ + "\u0000\u0000R\u01dc\u0001\u0000\u0000\u0000T\u01de\u0001\u0000\u0000\u0000"+ + "V\u01e0\u0001\u0000\u0000\u0000X\u01e3\u0001\u0000\u0000\u0000Z\u01e6"+ + "\u0001\u0000\u0000\u0000\\\u01e9\u0001\u0000\u0000\u0000^\u01ec\u0001"+ + "\u0000\u0000\u0000`\u01ef\u0001\u0000\u0000\u0000b\u01f2\u0001\u0000\u0000"+ + "\u0000d\u01f5\u0001\u0000\u0000\u0000f\u01f9\u0001\u0000\u0000\u0000h"+ + "\u01fd\u0001\u0000\u0000\u0000j\u0202\u0001\u0000\u0000\u0000l\u0205\u0001"+ + "\u0000\u0000\u0000n\u0208\u0001\u0000\u0000\u0000p\u020b\u0001\u0000\u0000"+ + "\u0000r\u020f\u0001\u0000\u0000\u0000t\u0213\u0001\u0000\u0000\u0000v"+ + "\u0216\u0001\u0000\u0000\u0000x\u0224\u0001\u0000\u0000\u0000z\u0241\u0001"+ + "\u0000\u0000\u0000|\u0243\u0001\u0000\u0000\u0000~\u024c\u0001\u0000\u0000"+ + "\u0000\u0080\u0254\u0001\u0000\u0000\u0000\u0082\u025d\u0001\u0000\u0000"+ + "\u0000\u0084\u0266\u0001\u0000\u0000\u0000\u0086\u0271\u0001\u0000\u0000"+ + "\u0000\u0088\u027c\u0001\u0000\u0000\u0000\u008a\u0287\u0001\u0000\u0000"+ + "\u0000\u008c\u028a\u0001\u0000\u0000\u0000\u008e\u0290\u0001\u0000\u0000"+ + "\u0000\u0090\u0293\u0001\u0000\u0000\u0000\u0092\u029e\u0001\u0000\u0000"+ + "\u0000\u0094\u02a5\u0001\u0000\u0000\u0000\u0096\u02aa\u0001\u0000\u0000"+ + "\u0000\u0098\u02af\u0001\u0000\u0000\u0000\u009a\u02b3\u0001\u0000\u0000"+ + "\u0000\u009c\u02b7\u0001\u0000\u0000\u0000\u009e\u02bd\u0001\u0000\u0000"+ + "\u0000\u00a0\u02c5\u0001\u0000\u0000\u0000\u00a2\u02cc\u0001\u0000\u0000"+ + "\u0000\u00a4\u02d1\u0001\u0000\u0000\u0000\u00a6\u02da\u0001\u0000\u0000"+ + "\u0000\u00a8\u02de\u0001\u0000\u0000\u0000\u00aa\u02e5\u0001\u0000\u0000"+ + "\u0000\u00ac\u02eb\u0001\u0000\u0000\u0000\u00ae\u02f4\u0001\u0000\u0000"+ + "\u0000\u00b0\u02fd\u0001\u0000\u0000\u0000\u00b2\u0302\u0001\u0000\u0000"+ + "\u0000\u00b4\u0307\u0001\u0000\u0000\u0000\u00b6\u030f\u0001\u0000\u0000"+ + "\u0000\u00b8\u0312\u0001\u0000\u0000\u0000\u00ba\u0318\u0001\u0000\u0000"+ + "\u0000\u00bc\u031f\u0001\u0000\u0000\u0000\u00be\u0322\u0001\u0000\u0000"+ + "\u0000\u00c0\u0326\u0001\u0000\u0000\u0000\u00c2\u0329\u0001\u0000\u0000"+ + "\u0000\u00c4\u032e\u0001\u0000\u0000\u0000\u00c6\u0337\u0001\u0000\u0000"+ + "\u0000\u00c8\u033d\u0001\u0000\u0000\u0000\u00ca\u0343\u0001\u0000\u0000"+ + "\u0000\u00cc\u0349\u0001\u0000\u0000\u0000\u00ce\u0350\u0001\u0000\u0000"+ + "\u0000\u00d0\u0356\u0001\u0000\u0000\u0000\u00d2\u035b\u0001\u0000\u0000"+ + "\u0000\u00d4\u0363\u0001\u0000\u0000\u0000\u00d6\u0369\u0001\u0000\u0000"+ + "\u0000\u00d8\u036f\u0001\u0000\u0000\u0000\u00da\u0376\u0001\u0000\u0000"+ + "\u0000\u00dc\u037d\u0001\u0000\u0000\u0000\u00de\u0388\u0001\u0000\u0000"+ + "\u0000\u00e0\u038c\u0001\u0000\u0000\u0000\u00e2\u0394\u0001\u0000\u0000"+ + "\u0000\u00e4\u039b\u0001\u0000\u0000\u0000\u00e6\u03a5\u0001\u0000\u0000"+ + "\u0000\u00e8\u03ad\u0001\u0000\u0000\u0000\u00ea\u03b7\u0001\u0000\u0000"+ + "\u0000\u00ec\u03be\u0001\u0000\u0000\u0000\u00ee\u03c2\u0001\u0000\u0000"+ + "\u0000\u00f0\u03c9\u0001\u0000\u0000\u0000\u00f2\u03cf\u0001\u0000\u0000"+ + "\u0000\u00f4\u03d7\u0001\u0000\u0000\u0000\u00f6\u03de\u0001\u0000\u0000"+ + "\u0000\u00f8\u03e5\u0001\u0000\u0000\u0000\u00fa\u03ec\u0001\u0000\u0000"+ + "\u0000\u00fc\u03f6\u0001\u0000\u0000\u0000\u00fe\u03fd\u0001\u0000\u0000"+ + "\u0000\u0100\u0400\u0001\u0000\u0000\u0000\u0102\u0406\u0001\u0000\u0000"+ + "\u0000\u0104\u040b\u0001\u0000\u0000\u0000\u0106\u0417\u0001\u0000\u0000"+ + "\u0000\u0108\u0421\u0001\u0000\u0000\u0000\u010a\u0429\u0001\u0000\u0000"+ + "\u0000\u010c\u0430\u0001\u0000\u0000\u0000\u010e\u0438\u0001\u0000\u0000"+ + "\u0000\u0110\u0441\u0001\u0000\u0000\u0000\u0112\u0444\u0001\u0000\u0000"+ + "\u0000\u0114\u0446\u0001\u0000\u0000\u0000\u0116\u045d\u0001\u0000\u0000"+ + "\u0000\u0118\u0461\u0001\u0000\u0000\u0000\u011a\u0467\u0001\u0000\u0000"+ + "\u0000\u011c\u046d\u0001\u0000\u0000\u0000\u011e\u0471\u0001\u0000\u0000"+ + "\u0000\u0120\u0482\u0001\u0000\u0000\u0000\u0122\u0498\u0001\u0000\u0000"+ + "\u0000\u0124\u049c\u0001\u0000\u0000\u0000\u0126\u049f\u0001\u0000\u0000"+ + "\u0000\u0128\u04a5\u0001\u0000\u0000\u0000\u012a\u04ac\u0001\u0000\u0000"+ + "\u0000\u012c\u04b2\u0001\u0000\u0000\u0000\u012e\u04b8\u0001\u0000\u0000"+ + "\u0000\u0130\u04bf\u0001\u0000\u0000\u0000\u0132\u04c3\u0001\u0000\u0000"+ + "\u0000\u0134\u04c5\u0001\u0000\u0000\u0000\u0136\u04d9\u0001\u0000\u0000"+ + "\u0000\u0138\u04db\u0001\u0000\u0000\u0000\u013a\u04e4\u0001\u0000\u0000"+ + "\u0000\u013c\u04e6\u0001\u0000\u0000\u0000\u013e\u04ea\u0001\u0000\u0000"+ + "\u0000\u0140\u04ec\u0001\u0000\u0000\u0000\u0142\u04f2\u0001\u0000\u0000"+ + "\u0000\u0144\u04fc\u0001\u0000\u0000\u0000\u0146\u04fe\u0001\u0000\u0000"+ + "\u0000\u0148\u0509\u0001\u0000\u0000\u0000\u014a\u050e\u0001\u0000\u0000"+ + "\u0000\u014c\u051a\u0001\u0000\u0000\u0000\u014e\u0526\u0001\u0000\u0000"+ + "\u0000\u0150\u052a\u0001\u0000\u0000\u0000\u0152\u052c\u0001\u0000\u0000"+ + "\u0000\u0154\u0155\u0005/\u0000\u0000\u0155\u0156\u0005*\u0000\u0000\u0156"+ + "\u015a\u0001\u0000\u0000\u0000\u0157\u0159\t\u0000\u0000\u0000\u0158\u0157"+ + "\u0001\u0000\u0000\u0000\u0159\u015c\u0001\u0000\u0000\u0000\u015a\u015b"+ + "\u0001\u0000\u0000\u0000\u015a\u0158\u0001\u0000\u0000\u0000\u015b\u015d"+ + "\u0001\u0000\u0000\u0000\u015c\u015a\u0001\u0000\u0000\u0000\u015d\u015e"+ + "\u0005*\u0000\u0000\u015e\u015f\u0005/\u0000\u0000\u015f\u0160\u0001\u0000"+ + "\u0000\u0000\u0160\u0161\u0006\u0000\u0000\u0000\u0161\u0003\u0001\u0000"+ + "\u0000\u0000\u0162\u0163\u0005/\u0000\u0000\u0163\u0164\u0005/\u0000\u0000"+ + "\u0164\u0168\u0001\u0000\u0000\u0000\u0165\u0167\b\u0000\u0000\u0000\u0166"+ + "\u0165\u0001\u0000\u0000\u0000\u0167\u016a\u0001\u0000\u0000\u0000\u0168"+ + "\u0166\u0001\u0000\u0000\u0000\u0168\u0169\u0001\u0000\u0000\u0000\u0169"+ + "\u016b\u0001\u0000\u0000\u0000\u016a\u0168\u0001\u0000\u0000\u0000\u016b"+ + "\u016c\u0006\u0001\u0000\u0000\u016c\u0005\u0001\u0000\u0000\u0000\u016d"+ + "\u016e\u0005/\u0000\u0000\u016e\u0172\u0003\u014c\u00a5\u0000\u016f\u0171"+ + "\u0003\u014e\u00a6\u0000\u0170\u016f\u0001\u0000\u0000\u0000\u0171\u0174"+ + "\u0001\u0000\u0000\u0000\u0172\u0170\u0001\u0000\u0000\u0000\u0172\u0173"+ + "\u0001\u0000\u0000\u0000\u0173\u0175\u0001\u0000\u0000\u0000\u0174\u0172"+ + "\u0001\u0000\u0000\u0000\u0175\u0176\u0004\u0002\u0000\u0000\u0176\u017a"+ + "\u0005/\u0000\u0000\u0177\u0179\u0003\u0148\u00a3\u0000\u0178\u0177\u0001"+ + "\u0000\u0000\u0000\u0179\u017c\u0001\u0000\u0000\u0000\u017a\u0178\u0001"+ + "\u0000\u0000\u0000\u017a\u017b\u0001\u0000\u0000\u0000\u017b\u0007\u0001"+ + "\u0000\u0000\u0000\u017c\u017a\u0001\u0000\u0000\u0000\u017d\u017e\u0005"+ + "[\u0000\u0000\u017e\t\u0001\u0000\u0000\u0000\u017f\u0180\u0005]\u0000"+ + "\u0000\u0180\u000b\u0001\u0000\u0000\u0000\u0181\u0182\u0005(\u0000\u0000"+ + "\u0182\r\u0001\u0000\u0000\u0000\u0183\u0184\u0005)\u0000\u0000\u0184"+ + "\u000f\u0001\u0000\u0000\u0000\u0185\u0186\u0005{\u0000\u0000\u0186\u0187"+ + "\u0006\u0007\u0001\u0000\u0187\u0011\u0001\u0000\u0000\u0000\u0188\u0189"+ + "\u0004\b\u0001\u0000\u0189\u018a\u0005}\u0000\u0000\u018a\u018b\u0001"+ + "\u0000\u0000\u0000\u018b\u018c\u0006\b\u0002\u0000\u018c\u0013\u0001\u0000"+ + "\u0000\u0000\u018d\u018e\u0005}\u0000\u0000\u018e\u018f\u0006\t\u0003"+ + "\u0000\u018f\u0015\u0001\u0000\u0000\u0000\u0190\u0191\u0005;\u0000\u0000"+ + "\u0191\u0017\u0001\u0000\u0000\u0000\u0192\u0193\u0005,\u0000\u0000\u0193"+ + "\u0019\u0001\u0000\u0000\u0000\u0194\u0195\u0005=\u0000\u0000\u0195\u001b"+ + "\u0001\u0000\u0000\u0000\u0196\u0197\u0005?\u0000\u0000\u0197\u001d\u0001"+ + "\u0000\u0000\u0000\u0198\u0199\u0005?\u0000\u0000\u0199\u019a\u0005.\u0000"+ + "\u0000\u019a\u001f\u0001\u0000\u0000\u0000\u019b\u019c\u0005:\u0000\u0000"+ + "\u019c!\u0001\u0000\u0000\u0000\u019d\u019e\u0005.\u0000\u0000\u019e\u019f"+ + "\u0005.\u0000\u0000\u019f\u01a0\u0005.\u0000\u0000\u01a0#\u0001\u0000"+ + "\u0000\u0000\u01a1\u01a2\u0005.\u0000\u0000\u01a2%\u0001\u0000\u0000\u0000"+ + "\u01a3\u01a4\u0005+\u0000\u0000\u01a4\u01a5\u0005+\u0000\u0000\u01a5\'"+ + "\u0001\u0000\u0000\u0000\u01a6\u01a7\u0005-\u0000\u0000\u01a7\u01a8\u0005"+ + "-\u0000\u0000\u01a8)\u0001\u0000\u0000\u0000\u01a9\u01aa\u0005+\u0000"+ + "\u0000\u01aa+\u0001\u0000\u0000\u0000\u01ab\u01ac\u0005-\u0000\u0000\u01ac"+ + "-\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005~\u0000\u0000\u01ae/\u0001"+ + "\u0000\u0000\u0000\u01af\u01b0\u0005!\u0000\u0000\u01b01\u0001\u0000\u0000"+ + "\u0000\u01b1\u01b2\u0005*\u0000\u0000\u01b23\u0001\u0000\u0000\u0000\u01b3"+ + "\u01b4\u0005/\u0000\u0000\u01b45\u0001\u0000\u0000\u0000\u01b5\u01b6\u0005"+ + "%\u0000\u0000\u01b67\u0001\u0000\u0000\u0000\u01b7\u01b8\u0005*\u0000"+ + "\u0000\u01b8\u01b9\u0005*\u0000\u0000\u01b99\u0001\u0000\u0000\u0000\u01ba"+ + "\u01bb\u0005?\u0000\u0000\u01bb\u01bc\u0005?\u0000\u0000\u01bc;\u0001"+ + "\u0000\u0000\u0000\u01bd\u01be\u0005#\u0000\u0000\u01be=\u0001\u0000\u0000"+ + "\u0000\u01bf\u01c0\u0005<\u0000\u0000\u01c0\u01c1\u0005<\u0000\u0000\u01c1"+ + "?\u0001\u0000\u0000\u0000\u01c2\u01c3\u0005<\u0000\u0000\u01c3A\u0001"+ + "\u0000\u0000\u0000\u01c4\u01c5\u0005>\u0000\u0000\u01c5C\u0001\u0000\u0000"+ + "\u0000\u01c6\u01c7\u0005<\u0000\u0000\u01c7\u01c8\u0005=\u0000\u0000\u01c8"+ + "E\u0001\u0000\u0000\u0000\u01c9\u01ca\u0005>\u0000\u0000\u01ca\u01cb\u0005"+ + "=\u0000\u0000\u01cbG\u0001\u0000\u0000\u0000\u01cc\u01cd\u0005=\u0000"+ + "\u0000\u01cd\u01ce\u0005=\u0000\u0000\u01ceI\u0001\u0000\u0000\u0000\u01cf"+ + "\u01d0\u0005!\u0000\u0000\u01d0\u01d1\u0005=\u0000\u0000\u01d1K\u0001"+ + "\u0000\u0000\u0000\u01d2\u01d3\u0005=\u0000\u0000\u01d3\u01d4\u0005=\u0000"+ + "\u0000\u01d4\u01d5\u0005=\u0000\u0000\u01d5M\u0001\u0000\u0000\u0000\u01d6"+ + "\u01d7\u0005!\u0000\u0000\u01d7\u01d8\u0005=\u0000\u0000\u01d8\u01d9\u0005"+ + "=\u0000\u0000\u01d9O\u0001\u0000\u0000\u0000\u01da\u01db\u0005&\u0000"+ + "\u0000\u01dbQ\u0001\u0000\u0000\u0000\u01dc\u01dd\u0005^\u0000\u0000\u01dd"+ + "S\u0001\u0000\u0000\u0000\u01de\u01df\u0005|\u0000\u0000\u01dfU\u0001"+ + "\u0000\u0000\u0000\u01e0\u01e1\u0005&\u0000\u0000\u01e1\u01e2\u0005&\u0000"+ + "\u0000\u01e2W\u0001\u0000\u0000\u0000\u01e3\u01e4\u0005|\u0000\u0000\u01e4"+ + "\u01e5\u0005|\u0000\u0000\u01e5Y\u0001\u0000\u0000\u0000\u01e6\u01e7\u0005"+ + "*\u0000\u0000\u01e7\u01e8\u0005=\u0000\u0000\u01e8[\u0001\u0000\u0000"+ + "\u0000\u01e9\u01ea\u0005/\u0000\u0000\u01ea\u01eb\u0005=\u0000\u0000\u01eb"+ + "]\u0001\u0000\u0000\u0000\u01ec\u01ed\u0005%\u0000\u0000\u01ed\u01ee\u0005"+ + "=\u0000\u0000\u01ee_\u0001\u0000\u0000\u0000\u01ef\u01f0\u0005+\u0000"+ + "\u0000\u01f0\u01f1\u0005=\u0000\u0000\u01f1a\u0001\u0000\u0000\u0000\u01f2"+ + "\u01f3\u0005-\u0000\u0000\u01f3\u01f4\u0005=\u0000\u0000\u01f4c\u0001"+ + "\u0000\u0000\u0000\u01f5\u01f6\u0005<\u0000\u0000\u01f6\u01f7\u0005<\u0000"+ + "\u0000\u01f7\u01f8\u0005=\u0000\u0000\u01f8e\u0001\u0000\u0000\u0000\u01f9"+ + "\u01fa\u0005>\u0000\u0000\u01fa\u01fb\u0005>\u0000\u0000\u01fb\u01fc\u0005"+ + "=\u0000\u0000\u01fcg\u0001\u0000\u0000\u0000\u01fd\u01fe\u0005>\u0000"+ + "\u0000\u01fe\u01ff\u0005>\u0000\u0000\u01ff\u0200\u0005>\u0000\u0000\u0200"+ + "\u0201\u0005=\u0000\u0000\u0201i\u0001\u0000\u0000\u0000\u0202\u0203\u0005"+ + "&\u0000\u0000\u0203\u0204\u0005=\u0000\u0000\u0204k\u0001\u0000\u0000"+ + "\u0000\u0205\u0206\u0005^\u0000\u0000\u0206\u0207\u0005=\u0000\u0000\u0207"+ + "m\u0001\u0000\u0000\u0000\u0208\u0209\u0005|\u0000\u0000\u0209\u020a\u0005"+ + "=\u0000\u0000\u020ao\u0001\u0000\u0000\u0000\u020b\u020c\u0005*\u0000"+ + "\u0000\u020c\u020d\u0005*\u0000\u0000\u020d\u020e\u0005=\u0000\u0000\u020e"+ + "q\u0001\u0000\u0000\u0000\u020f\u0210\u0005?\u0000\u0000\u0210\u0211\u0005"+ + "?\u0000\u0000\u0211\u0212\u0005=\u0000\u0000\u0212s\u0001\u0000\u0000"+ + "\u0000\u0213\u0214\u0005=\u0000\u0000\u0214\u0215\u0005>\u0000\u0000\u0215"+ + "u\u0001\u0000\u0000\u0000\u0216\u0217\u0005n\u0000\u0000\u0217\u0218\u0005"+ + "u\u0000\u0000\u0218\u0219\u0005l\u0000\u0000\u0219\u021a\u0005l\u0000"+ + "\u0000\u021aw\u0001\u0000\u0000\u0000\u021b\u021c\u0005t\u0000\u0000\u021c"+ + "\u021d\u0005r\u0000\u0000\u021d\u021e\u0005u\u0000\u0000\u021e\u0225\u0005"+ + "e\u0000\u0000\u021f\u0220\u0005f\u0000\u0000\u0220\u0221\u0005a\u0000"+ + "\u0000\u0221\u0222\u0005l\u0000\u0000\u0222\u0223\u0005s\u0000\u0000\u0223"+ + "\u0225\u0005e\u0000\u0000\u0224\u021b\u0001\u0000\u0000\u0000\u0224\u021f"+ + "\u0001\u0000\u0000\u0000\u0225y\u0001\u0000\u0000\u0000\u0226\u0227\u0003"+ + "\u0144\u00a1\u0000\u0227\u0228\u0005.\u0000\u0000\u0228\u022c\u0007\u0001"+ + "\u0000\u0000\u0229\u022b\u0007\u0002\u0000\u0000\u022a\u0229\u0001\u0000"+ + "\u0000\u0000\u022b\u022e\u0001\u0000\u0000\u0000\u022c\u022a\u0001\u0000"+ + "\u0000\u0000\u022c\u022d\u0001\u0000\u0000\u0000\u022d\u0230\u0001\u0000"+ + "\u0000\u0000\u022e\u022c\u0001\u0000\u0000\u0000\u022f\u0231\u0003\u0146"+ + "\u00a2\u0000\u0230\u022f\u0001\u0000\u0000\u0000\u0230\u0231\u0001\u0000"+ + "\u0000\u0000\u0231\u0242\u0001\u0000\u0000\u0000\u0232\u0233\u0005.\u0000"+ + "\u0000\u0233\u0237\u0007\u0001\u0000\u0000\u0234\u0236\u0007\u0002\u0000"+ + "\u0000\u0235\u0234\u0001\u0000\u0000\u0000\u0236\u0239\u0001\u0000\u0000"+ + "\u0000\u0237\u0235\u0001\u0000\u0000\u0000\u0237\u0238\u0001\u0000\u0000"+ + "\u0000\u0238\u023b\u0001\u0000\u0000\u0000\u0239\u0237\u0001\u0000\u0000"+ + "\u0000\u023a\u023c\u0003\u0146\u00a2\u0000\u023b\u023a\u0001\u0000\u0000"+ + "\u0000\u023b\u023c\u0001\u0000\u0000\u0000\u023c\u0242\u0001\u0000\u0000"+ + "\u0000\u023d\u023f\u0003\u0144\u00a1\u0000\u023e\u0240\u0003\u0146\u00a2"+ + "\u0000\u023f\u023e\u0001\u0000\u0000\u0000\u023f\u0240\u0001\u0000\u0000"+ + "\u0000\u0240\u0242\u0001\u0000\u0000\u0000\u0241\u0226\u0001\u0000\u0000"+ + "\u0000\u0241\u0232\u0001\u0000\u0000\u0000\u0241\u023d\u0001\u0000\u0000"+ + "\u0000\u0242{\u0001\u0000\u0000\u0000\u0243\u0244\u00050\u0000\u0000\u0244"+ + "\u0245\u0007\u0003\u0000\u0000\u0245\u0249\u0007\u0004\u0000\u0000\u0246"+ + "\u0248\u0003\u0142\u00a0\u0000\u0247\u0246\u0001\u0000\u0000\u0000\u0248"+ + "\u024b\u0001\u0000\u0000\u0000\u0249\u0247\u0001\u0000\u0000\u0000\u0249"+ + "\u024a\u0001\u0000\u0000\u0000\u024a}\u0001\u0000\u0000\u0000\u024b\u0249"+ + "\u0001\u0000\u0000\u0000\u024c\u024e\u00050\u0000\u0000\u024d\u024f\u0007"+ + "\u0005\u0000\u0000\u024e\u024d\u0001\u0000\u0000\u0000\u024f\u0250\u0001"+ + "\u0000\u0000\u0000\u0250\u024e\u0001\u0000\u0000\u0000\u0250\u0251\u0001"+ + "\u0000\u0000\u0000\u0251\u0252\u0001\u0000\u0000\u0000\u0252\u0253\u0004"+ + ">\u0002\u0000\u0253\u007f\u0001\u0000\u0000\u0000\u0254\u0255\u00050\u0000"+ + "\u0000\u0255\u0256\u0007\u0006\u0000\u0000\u0256\u025a\u0007\u0005\u0000"+ + "\u0000\u0257\u0259\u0007\u0007\u0000\u0000\u0258\u0257\u0001\u0000\u0000"+ + "\u0000\u0259\u025c\u0001\u0000\u0000\u0000\u025a\u0258\u0001\u0000\u0000"+ + "\u0000\u025a\u025b\u0001\u0000\u0000\u0000\u025b\u0081\u0001\u0000\u0000"+ + "\u0000\u025c\u025a\u0001\u0000\u0000\u0000\u025d\u025e\u00050\u0000\u0000"+ + "\u025e\u025f\u0007\b\u0000\u0000\u025f\u0263\u0007\t\u0000\u0000\u0260"+ + "\u0262\u0007\n\u0000\u0000\u0261\u0260\u0001\u0000\u0000\u0000\u0262\u0265"+ + "\u0001\u0000\u0000\u0000\u0263\u0261\u0001\u0000\u0000\u0000\u0263\u0264"+ + "\u0001\u0000\u0000\u0000\u0264\u0083\u0001\u0000\u0000\u0000\u0265\u0263"+ + "\u0001\u0000\u0000\u0000\u0266\u0267\u00050\u0000\u0000\u0267\u0268\u0007"+ + "\u0003\u0000\u0000\u0268\u026c\u0007\u0004\u0000\u0000\u0269\u026b\u0003"+ + "\u0142\u00a0\u0000\u026a\u0269\u0001\u0000\u0000\u0000\u026b\u026e\u0001"+ + "\u0000\u0000\u0000\u026c\u026a\u0001\u0000\u0000\u0000\u026c\u026d\u0001"+ + "\u0000\u0000\u0000\u026d\u026f\u0001\u0000\u0000\u0000\u026e\u026c\u0001"+ + "\u0000\u0000\u0000\u026f\u0270\u0005n\u0000\u0000\u0270\u0085\u0001\u0000"+ + "\u0000\u0000\u0271\u0272\u00050\u0000\u0000\u0272\u0273\u0007\u0006\u0000"+ + "\u0000\u0273\u0277\u0007\u0005\u0000\u0000\u0274\u0276\u0007\u0007\u0000"+ + "\u0000\u0275\u0274\u0001\u0000\u0000\u0000\u0276\u0279\u0001\u0000\u0000"+ + "\u0000\u0277\u0275\u0001\u0000\u0000\u0000\u0277\u0278\u0001\u0000\u0000"+ + "\u0000\u0278\u027a\u0001\u0000\u0000\u0000\u0279\u0277\u0001\u0000\u0000"+ + "\u0000\u027a\u027b\u0005n\u0000\u0000\u027b\u0087\u0001\u0000\u0000\u0000"+ + "\u027c\u027d\u00050\u0000\u0000\u027d\u027e\u0007\b\u0000\u0000\u027e"+ + "\u0282\u0007\t\u0000\u0000\u027f\u0281\u0007\n\u0000\u0000\u0280\u027f"+ + "\u0001\u0000\u0000\u0000\u0281\u0284\u0001\u0000\u0000\u0000\u0282\u0280"+ + "\u0001\u0000\u0000\u0000\u0282\u0283\u0001\u0000\u0000\u0000\u0283\u0285"+ + "\u0001\u0000\u0000\u0000\u0284\u0282\u0001\u0000\u0000\u0000\u0285\u0286"+ + "\u0005n\u0000\u0000\u0286\u0089\u0001\u0000\u0000\u0000\u0287\u0288\u0003"+ + "\u0144\u00a1\u0000\u0288\u0289\u0005n\u0000\u0000\u0289\u008b\u0001\u0000"+ + "\u0000\u0000\u028a\u028b\u0005b\u0000\u0000\u028b\u028c\u0005r\u0000\u0000"+ + "\u028c\u028d\u0005e\u0000\u0000\u028d\u028e\u0005a\u0000\u0000\u028e\u028f"+ + "\u0005k\u0000\u0000\u028f\u008d\u0001\u0000\u0000\u0000\u0290\u0291\u0005"+ + "d\u0000\u0000\u0291\u0292\u0005o\u0000\u0000\u0292\u008f\u0001\u0000\u0000"+ + "\u0000\u0293\u0294\u0005i\u0000\u0000\u0294\u0295\u0005n\u0000\u0000\u0295"+ + "\u0296\u0005s\u0000\u0000\u0296\u0297\u0005t\u0000\u0000\u0297\u0298\u0005"+ + "a\u0000\u0000\u0298\u0299\u0005n\u0000\u0000\u0299\u029a\u0005c\u0000"+ + "\u0000\u029a\u029b\u0005e\u0000\u0000\u029b\u029c\u0005o\u0000\u0000\u029c"+ + "\u029d\u0005f\u0000\u0000\u029d\u0091\u0001\u0000\u0000\u0000\u029e\u029f"+ + "\u0005t\u0000\u0000\u029f\u02a0\u0005y\u0000\u0000\u02a0\u02a1\u0005p"+ + "\u0000\u0000\u02a1\u02a2\u0005e\u0000\u0000\u02a2\u02a3\u0005o\u0000\u0000"+ + "\u02a3\u02a4\u0005f\u0000\u0000\u02a4\u0093\u0001\u0000\u0000\u0000\u02a5"+ + "\u02a6\u0005c\u0000\u0000\u02a6\u02a7\u0005a\u0000\u0000\u02a7\u02a8\u0005"+ + "s\u0000\u0000\u02a8\u02a9\u0005e\u0000\u0000\u02a9\u0095\u0001\u0000\u0000"+ + "\u0000\u02aa\u02ab\u0005e\u0000\u0000\u02ab\u02ac\u0005l\u0000\u0000\u02ac"+ + "\u02ad\u0005s\u0000\u0000\u02ad\u02ae\u0005e\u0000\u0000\u02ae\u0097\u0001"+ + "\u0000\u0000\u0000\u02af\u02b0\u0005n\u0000\u0000\u02b0\u02b1\u0005e\u0000"+ + "\u0000\u02b1\u02b2\u0005w\u0000\u0000\u02b2\u0099\u0001\u0000\u0000\u0000"+ + "\u02b3\u02b4\u0005v\u0000\u0000\u02b4\u02b5\u0005a\u0000\u0000\u02b5\u02b6"+ + "\u0005r\u0000\u0000\u02b6\u009b\u0001\u0000\u0000\u0000\u02b7\u02b8\u0005"+ + "c\u0000\u0000\u02b8\u02b9\u0005a\u0000\u0000\u02b9\u02ba\u0005t\u0000"+ + "\u0000\u02ba\u02bb\u0005c\u0000\u0000\u02bb\u02bc\u0005h\u0000\u0000\u02bc"+ + "\u009d\u0001\u0000\u0000\u0000\u02bd\u02be\u0005f\u0000\u0000\u02be\u02bf"+ + "\u0005i\u0000\u0000\u02bf\u02c0\u0005n\u0000\u0000\u02c0\u02c1\u0005a"+ + "\u0000\u0000\u02c1\u02c2\u0005l\u0000\u0000\u02c2\u02c3\u0005l\u0000\u0000"+ + "\u02c3\u02c4\u0005y\u0000\u0000\u02c4\u009f\u0001\u0000\u0000\u0000\u02c5"+ + "\u02c6\u0005r\u0000\u0000\u02c6\u02c7\u0005e\u0000\u0000\u02c7\u02c8\u0005"+ + "t\u0000\u0000\u02c8\u02c9\u0005u\u0000\u0000\u02c9\u02ca\u0005r\u0000"+ + "\u0000\u02ca\u02cb\u0005n\u0000\u0000\u02cb\u00a1\u0001\u0000\u0000\u0000"+ + "\u02cc\u02cd\u0005v\u0000\u0000\u02cd\u02ce\u0005o\u0000\u0000\u02ce\u02cf"+ + "\u0005i\u0000\u0000\u02cf\u02d0\u0005d\u0000\u0000\u02d0\u00a3\u0001\u0000"+ + "\u0000\u0000\u02d1\u02d2\u0005c\u0000\u0000\u02d2\u02d3\u0005o\u0000\u0000"+ + "\u02d3\u02d4\u0005n\u0000\u0000\u02d4\u02d5\u0005t\u0000\u0000\u02d5\u02d6"+ + "\u0005i\u0000\u0000\u02d6\u02d7\u0005n\u0000\u0000\u02d7\u02d8\u0005u"+ + "\u0000\u0000\u02d8\u02d9\u0005e\u0000\u0000\u02d9\u00a5\u0001\u0000\u0000"+ + "\u0000\u02da\u02db\u0005f\u0000\u0000\u02db\u02dc\u0005o\u0000\u0000\u02dc"+ + "\u02dd\u0005r\u0000\u0000\u02dd\u00a7\u0001\u0000\u0000\u0000\u02de\u02df"+ + "\u0005s\u0000\u0000\u02df\u02e0\u0005w\u0000\u0000\u02e0\u02e1\u0005i"+ + "\u0000\u0000\u02e1\u02e2\u0005t\u0000\u0000\u02e2\u02e3\u0005c\u0000\u0000"+ + "\u02e3\u02e4\u0005h\u0000\u0000\u02e4\u00a9\u0001\u0000\u0000\u0000\u02e5"+ + "\u02e6\u0005w\u0000\u0000\u02e6\u02e7\u0005h\u0000\u0000\u02e7\u02e8\u0005"+ + "i\u0000\u0000\u02e8\u02e9\u0005l\u0000\u0000\u02e9\u02ea\u0005e\u0000"+ + "\u0000\u02ea\u00ab\u0001\u0000\u0000\u0000\u02eb\u02ec\u0005d\u0000\u0000"+ + "\u02ec\u02ed\u0005e\u0000\u0000\u02ed\u02ee\u0005b\u0000\u0000\u02ee\u02ef"+ + "\u0005u\u0000\u0000\u02ef\u02f0\u0005g\u0000\u0000\u02f0\u02f1\u0005g"+ + "\u0000\u0000\u02f1\u02f2\u0005e\u0000\u0000\u02f2\u02f3\u0005r\u0000\u0000"+ + "\u02f3\u00ad\u0001\u0000\u0000\u0000\u02f4\u02f5\u0005f\u0000\u0000\u02f5"+ + "\u02f6\u0005u\u0000\u0000\u02f6\u02f7\u0005n\u0000\u0000\u02f7\u02f8\u0005"+ + "c\u0000\u0000\u02f8\u02f9\u0005t\u0000\u0000\u02f9\u02fa\u0005i\u0000"+ + "\u0000\u02fa\u02fb\u0005o\u0000\u0000\u02fb\u02fc\u0005n\u0000\u0000\u02fc"+ + "\u00af\u0001\u0000\u0000\u0000\u02fd\u02fe\u0005t\u0000\u0000\u02fe\u02ff"+ + "\u0005h\u0000\u0000\u02ff\u0300\u0005i\u0000\u0000\u0300\u0301\u0005s"+ + "\u0000\u0000\u0301\u00b1\u0001\u0000\u0000\u0000\u0302\u0303\u0005w\u0000"+ + "\u0000\u0303\u0304\u0005i\u0000\u0000\u0304\u0305\u0005t\u0000\u0000\u0305"+ + "\u0306\u0005h\u0000\u0000\u0306\u00b3\u0001\u0000\u0000\u0000\u0307\u0308"+ + "\u0005d\u0000\u0000\u0308\u0309\u0005e\u0000\u0000\u0309\u030a\u0005f"+ + "\u0000\u0000\u030a\u030b\u0005a\u0000\u0000\u030b\u030c\u0005u\u0000\u0000"+ + "\u030c\u030d\u0005l\u0000\u0000\u030d\u030e\u0005t\u0000\u0000\u030e\u00b5"+ + "\u0001\u0000\u0000\u0000\u030f\u0310\u0005i\u0000\u0000\u0310\u0311\u0005"+ + "f\u0000\u0000\u0311\u00b7\u0001\u0000\u0000\u0000\u0312\u0313\u0005t\u0000"+ + "\u0000\u0313\u0314\u0005h\u0000\u0000\u0314\u0315\u0005r\u0000\u0000\u0315"+ + "\u0316\u0005o\u0000\u0000\u0316\u0317\u0005w\u0000\u0000\u0317\u00b9\u0001"+ + "\u0000\u0000\u0000\u0318\u0319\u0005d\u0000\u0000\u0319\u031a\u0005e\u0000"+ + "\u0000\u031a\u031b\u0005l\u0000\u0000\u031b\u031c\u0005e\u0000\u0000\u031c"+ + "\u031d\u0005t\u0000\u0000\u031d\u031e\u0005e\u0000\u0000\u031e\u00bb\u0001"+ + "\u0000\u0000\u0000\u031f\u0320\u0005i\u0000\u0000\u0320\u0321\u0005n\u0000"+ + "\u0000\u0321\u00bd\u0001\u0000\u0000\u0000\u0322\u0323\u0005t\u0000\u0000"+ + "\u0323\u0324\u0005r\u0000\u0000\u0324\u0325\u0005y\u0000\u0000\u0325\u00bf"+ + "\u0001\u0000\u0000\u0000\u0326\u0327\u0005a\u0000\u0000\u0327\u0328\u0005"+ + "s\u0000\u0000\u0328\u00c1\u0001\u0000\u0000\u0000\u0329\u032a\u0005f\u0000"+ + "\u0000\u032a\u032b\u0005r\u0000\u0000\u032b\u032c\u0005o\u0000\u0000\u032c"+ + "\u032d\u0005m\u0000\u0000\u032d\u00c3\u0001\u0000\u0000\u0000\u032e\u032f"+ + "\u0005r\u0000\u0000\u032f\u0330\u0005e\u0000\u0000\u0330\u0331\u0005a"+ + "\u0000\u0000\u0331\u0332\u0005d\u0000\u0000\u0332\u0333\u0005o\u0000\u0000"+ + "\u0333\u0334\u0005n\u0000\u0000\u0334\u0335\u0005l\u0000\u0000\u0335\u0336"+ + "\u0005y\u0000\u0000\u0336\u00c5\u0001\u0000\u0000\u0000\u0337\u0338\u0005"+ + "a\u0000\u0000\u0338\u0339\u0005s\u0000\u0000\u0339\u033a\u0005y\u0000"+ + "\u0000\u033a\u033b\u0005n\u0000\u0000\u033b\u033c\u0005c\u0000\u0000\u033c"+ + "\u00c7\u0001\u0000\u0000\u0000\u033d\u033e\u0005a\u0000\u0000\u033e\u033f"+ + "\u0005w\u0000\u0000\u033f\u0340\u0005a\u0000\u0000\u0340\u0341\u0005i"+ + "\u0000\u0000\u0341\u0342\u0005t\u0000\u0000\u0342\u00c9\u0001\u0000\u0000"+ + "\u0000\u0343\u0344\u0005y\u0000\u0000\u0344\u0345\u0005i\u0000\u0000\u0345"+ + "\u0346\u0005e\u0000\u0000\u0346\u0347\u0005l\u0000\u0000\u0347\u0348\u0005"+ + "d\u0000\u0000\u0348\u00cb\u0001\u0000\u0000\u0000\u0349\u034a\u0005y\u0000"+ + "\u0000\u034a\u034b\u0005i\u0000\u0000\u034b\u034c\u0005e\u0000\u0000\u034c"+ + "\u034d\u0005l\u0000\u0000\u034d\u034e\u0005d\u0000\u0000\u034e\u034f\u0005"+ + "*\u0000\u0000\u034f\u00cd\u0001\u0000\u0000\u0000\u0350\u0351\u0005c\u0000"+ + "\u0000\u0351\u0352\u0005l\u0000\u0000\u0352\u0353\u0005a\u0000\u0000\u0353"+ + "\u0354\u0005s\u0000\u0000\u0354\u0355\u0005s\u0000\u0000\u0355\u00cf\u0001"+ + "\u0000\u0000\u0000\u0356\u0357\u0005e\u0000\u0000\u0357\u0358\u0005n\u0000"+ + "\u0000\u0358\u0359\u0005u\u0000\u0000\u0359\u035a\u0005m\u0000\u0000\u035a"+ + "\u00d1\u0001\u0000\u0000\u0000\u035b\u035c\u0005e\u0000\u0000\u035c\u035d"+ + "\u0005x\u0000\u0000\u035d\u035e\u0005t\u0000\u0000\u035e\u035f\u0005e"+ + "\u0000\u0000\u035f\u0360\u0005n\u0000\u0000\u0360\u0361\u0005d\u0000\u0000"+ + "\u0361\u0362\u0005s\u0000\u0000\u0362\u00d3\u0001\u0000\u0000\u0000\u0363"+ + "\u0364\u0005s\u0000\u0000\u0364\u0365\u0005u\u0000\u0000\u0365\u0366\u0005"+ + "p\u0000\u0000\u0366\u0367\u0005e\u0000\u0000\u0367\u0368\u0005r\u0000"+ + "\u0000\u0368\u00d5\u0001\u0000\u0000\u0000\u0369\u036a\u0005c\u0000\u0000"+ + "\u036a\u036b\u0005o\u0000\u0000\u036b\u036c\u0005n\u0000\u0000\u036c\u036d"+ + "\u0005s\u0000\u0000\u036d\u036e\u0005t\u0000\u0000\u036e\u00d7\u0001\u0000"+ + "\u0000\u0000\u036f\u0370\u0005e\u0000\u0000\u0370\u0371\u0005x\u0000\u0000"+ + "\u0371\u0372\u0005p\u0000\u0000\u0372\u0373\u0005o\u0000\u0000\u0373\u0374"+ + "\u0005r\u0000\u0000\u0374\u0375\u0005t\u0000\u0000\u0375\u00d9\u0001\u0000"+ + "\u0000\u0000\u0376\u0377\u0005i\u0000\u0000\u0377\u0378\u0005m\u0000\u0000"+ + "\u0378\u0379\u0005p\u0000\u0000\u0379\u037a\u0005o\u0000\u0000\u037a\u037b"+ + "\u0005r\u0000\u0000\u037b\u037c\u0005t\u0000\u0000\u037c\u00db\u0001\u0000"+ + "\u0000\u0000\u037d\u037e\u0005i\u0000\u0000\u037e\u037f\u0005m\u0000\u0000"+ + "\u037f\u0380\u0005p\u0000\u0000\u0380\u0381\u0005l\u0000\u0000\u0381\u0382"+ + "\u0005e\u0000\u0000\u0382\u0383\u0005m\u0000\u0000\u0383\u0384\u0005e"+ + "\u0000\u0000\u0384\u0385\u0005n\u0000\u0000\u0385\u0386\u0005t\u0000\u0000"+ + "\u0386\u0387\u0005s\u0000\u0000\u0387\u00dd\u0001\u0000\u0000\u0000\u0388"+ + "\u0389\u0005l\u0000\u0000\u0389\u038a\u0005e\u0000\u0000\u038a\u038b\u0005"+ + "t\u0000\u0000\u038b\u00df\u0001\u0000\u0000\u0000\u038c\u038d\u0005p\u0000"+ + "\u0000\u038d\u038e\u0005r\u0000\u0000\u038e\u038f\u0005i\u0000\u0000\u038f"+ + "\u0390\u0005v\u0000\u0000\u0390\u0391\u0005a\u0000\u0000\u0391\u0392\u0005"+ + "t\u0000\u0000\u0392\u0393\u0005e\u0000\u0000\u0393\u00e1\u0001\u0000\u0000"+ + "\u0000\u0394\u0395\u0005p\u0000\u0000\u0395\u0396\u0005u\u0000\u0000\u0396"+ + "\u0397\u0005b\u0000\u0000\u0397\u0398\u0005l\u0000\u0000\u0398\u0399\u0005"+ + "i\u0000\u0000\u0399\u039a\u0005c\u0000\u0000\u039a\u00e3\u0001\u0000\u0000"+ + "\u0000\u039b\u039c\u0005i\u0000\u0000\u039c\u039d\u0005n\u0000\u0000\u039d"+ + "\u039e\u0005t\u0000\u0000\u039e\u039f\u0005e\u0000\u0000\u039f\u03a0\u0005"+ + "r\u0000\u0000\u03a0\u03a1\u0005f\u0000\u0000\u03a1\u03a2\u0005a\u0000"+ + "\u0000\u03a2\u03a3\u0005c\u0000\u0000\u03a3\u03a4\u0005e\u0000\u0000\u03a4"+ + "\u00e5\u0001\u0000\u0000\u0000\u03a5\u03a6\u0005p\u0000\u0000\u03a6\u03a7"+ + "\u0005a\u0000\u0000\u03a7\u03a8\u0005c\u0000\u0000\u03a8\u03a9\u0005k"+ + "\u0000\u0000\u03a9\u03aa\u0005a\u0000\u0000\u03aa\u03ab\u0005g\u0000\u0000"+ + "\u03ab\u03ac\u0005e\u0000\u0000\u03ac\u00e7\u0001\u0000\u0000\u0000\u03ad"+ + "\u03ae\u0005p\u0000\u0000\u03ae\u03af\u0005r\u0000\u0000\u03af\u03b0\u0005"+ + "o\u0000\u0000\u03b0\u03b1\u0005t\u0000\u0000\u03b1\u03b2\u0005e\u0000"+ + "\u0000\u03b2\u03b3\u0005c\u0000\u0000\u03b3\u03b4\u0005t\u0000\u0000\u03b4"+ + "\u03b5\u0005e\u0000\u0000\u03b5\u03b6\u0005d\u0000\u0000\u03b6\u00e9\u0001"+ + "\u0000\u0000\u0000\u03b7\u03b8\u0005s\u0000\u0000\u03b8\u03b9\u0005t\u0000"+ + "\u0000\u03b9\u03ba\u0005a\u0000\u0000\u03ba\u03bb\u0005t\u0000\u0000\u03bb"+ + "\u03bc\u0005i\u0000\u0000\u03bc\u03bd\u0005c\u0000\u0000\u03bd\u00eb\u0001"+ + "\u0000\u0000\u0000\u03be\u03bf\u0005a\u0000\u0000\u03bf\u03c0\u0005n\u0000"+ + "\u0000\u03c0\u03c1\u0005y\u0000\u0000\u03c1\u00ed\u0001\u0000\u0000\u0000"+ + "\u03c2\u03c3\u0005n\u0000\u0000\u03c3\u03c4\u0005u\u0000\u0000\u03c4\u03c5"+ + "\u0005m\u0000\u0000\u03c5\u03c6\u0005b\u0000\u0000\u03c6\u03c7\u0005e"+ + "\u0000\u0000\u03c7\u03c8\u0005r\u0000\u0000\u03c8\u00ef\u0001\u0000\u0000"+ + "\u0000\u03c9\u03ca\u0005n\u0000\u0000\u03ca\u03cb\u0005e\u0000\u0000\u03cb"+ + "\u03cc\u0005v\u0000\u0000\u03cc\u03cd\u0005e\u0000\u0000\u03cd\u03ce\u0005"+ + "r\u0000\u0000\u03ce\u00f1\u0001\u0000\u0000\u0000\u03cf\u03d0\u0005b\u0000"+ + "\u0000\u03d0\u03d1\u0005o\u0000\u0000\u03d1\u03d2\u0005o\u0000\u0000\u03d2"+ + "\u03d3\u0005l\u0000\u0000\u03d3\u03d4\u0005e\u0000\u0000\u03d4\u03d5\u0005"+ + "a\u0000\u0000\u03d5\u03d6\u0005n\u0000\u0000\u03d6\u00f3\u0001\u0000\u0000"+ + "\u0000\u03d7\u03d8\u0005s\u0000\u0000\u03d8\u03d9\u0005t\u0000\u0000\u03d9"+ + "\u03da\u0005r\u0000\u0000\u03da\u03db\u0005i\u0000\u0000\u03db\u03dc\u0005"+ + "n\u0000\u0000\u03dc\u03dd\u0005g\u0000\u0000\u03dd\u00f5\u0001\u0000\u0000"+ + "\u0000\u03de\u03df\u0005u\u0000\u0000\u03df\u03e0\u0005n\u0000\u0000\u03e0"+ + "\u03e1\u0005i\u0000\u0000\u03e1\u03e2\u0005q\u0000\u0000\u03e2\u03e3\u0005"+ + "u\u0000\u0000\u03e3\u03e4\u0005e\u0000\u0000\u03e4\u00f7\u0001\u0000\u0000"+ + "\u0000\u03e5\u03e6\u0005s\u0000\u0000\u03e6\u03e7\u0005y\u0000\u0000\u03e7"+ + "\u03e8\u0005m\u0000\u0000\u03e8\u03e9\u0005b\u0000\u0000\u03e9\u03ea\u0005"+ + "o\u0000\u0000\u03ea\u03eb\u0005l\u0000\u0000\u03eb\u00f9\u0001\u0000\u0000"+ + "\u0000\u03ec\u03ed\u0005u\u0000\u0000\u03ed\u03ee\u0005n\u0000\u0000\u03ee"+ + "\u03ef\u0005d\u0000\u0000\u03ef\u03f0\u0005e\u0000\u0000\u03f0\u03f1\u0005"+ + "f\u0000\u0000\u03f1\u03f2\u0005i\u0000\u0000\u03f2\u03f3\u0005n\u0000"+ + "\u0000\u03f3\u03f4\u0005e\u0000\u0000\u03f4\u03f5\u0005d\u0000\u0000\u03f5"+ + "\u00fb\u0001\u0000\u0000\u0000\u03f6\u03f7\u0005o\u0000\u0000\u03f7\u03f8"+ + "\u0005b\u0000\u0000\u03f8\u03f9\u0005j\u0000\u0000\u03f9\u03fa\u0005e"+ + "\u0000\u0000\u03fa\u03fb\u0005c\u0000\u0000\u03fb\u03fc\u0005t\u0000\u0000"+ + "\u03fc\u00fd\u0001\u0000\u0000\u0000\u03fd\u03fe\u0005o\u0000\u0000\u03fe"+ + "\u03ff\u0005f\u0000\u0000\u03ff\u00ff\u0001\u0000\u0000\u0000\u0400\u0401"+ + "\u0005k\u0000\u0000\u0401\u0402\u0005e\u0000\u0000\u0402\u0403\u0005y"+ + "\u0000\u0000\u0403\u0404\u0005o\u0000\u0000\u0404\u0405\u0005f\u0000\u0000"+ + "\u0405\u0101\u0001\u0000\u0000\u0000\u0406\u0407\u0005t\u0000\u0000\u0407"+ + "\u0408\u0005y\u0000\u0000\u0408\u0409\u0005p\u0000\u0000\u0409\u040a\u0005"+ + "e\u0000\u0000\u040a\u0103\u0001\u0000\u0000\u0000\u040b\u040c\u0005c\u0000"+ + "\u0000\u040c\u040d\u0005o\u0000\u0000\u040d\u040e\u0005n\u0000\u0000\u040e"+ + "\u040f\u0005s\u0000\u0000\u040f\u0410\u0005t\u0000\u0000\u0410\u0411\u0005"+ + "r\u0000\u0000\u0411\u0412\u0005u\u0000\u0000\u0412\u0413\u0005c\u0000"+ + "\u0000\u0413\u0414\u0005t\u0000\u0000\u0414\u0415\u0005o\u0000\u0000\u0415"+ + "\u0416\u0005r\u0000\u0000\u0416\u0105\u0001\u0000\u0000\u0000\u0417\u0418"+ + "\u0005n\u0000\u0000\u0418\u0419\u0005a\u0000\u0000\u0419\u041a\u0005m"+ + "\u0000\u0000\u041a\u041b\u0005e\u0000\u0000\u041b\u041c\u0005s\u0000\u0000"+ + "\u041c\u041d\u0005p\u0000\u0000\u041d\u041e\u0005a\u0000\u0000\u041e\u041f"+ + "\u0005c\u0000\u0000\u041f\u0420\u0005e\u0000\u0000\u0420\u0107\u0001\u0000"+ + "\u0000\u0000\u0421\u0422\u0005r\u0000\u0000\u0422\u0423\u0005e\u0000\u0000"+ + "\u0423\u0424\u0005q\u0000\u0000\u0424\u0425\u0005u\u0000\u0000\u0425\u0426"+ + "\u0005i\u0000\u0000\u0426\u0427\u0005r\u0000\u0000\u0427\u0428\u0005e"+ + "\u0000\u0000\u0428\u0109\u0001\u0000\u0000\u0000\u0429\u042a\u0005m\u0000"+ + "\u0000\u042a\u042b\u0005o\u0000\u0000\u042b\u042c\u0005d\u0000\u0000\u042c"+ + "\u042d\u0005u\u0000\u0000\u042d\u042e\u0005l\u0000\u0000\u042e\u042f\u0005"+ + "e\u0000\u0000\u042f\u010b\u0001\u0000\u0000\u0000\u0430\u0431\u0005d\u0000"+ + "\u0000\u0431\u0432\u0005e\u0000\u0000\u0432\u0433\u0005c\u0000\u0000\u0433"+ + "\u0434\u0005l\u0000\u0000\u0434\u0435\u0005a\u0000\u0000\u0435\u0436\u0005"+ + "r\u0000\u0000\u0436\u0437\u0005e\u0000\u0000\u0437\u010d\u0001\u0000\u0000"+ + "\u0000\u0438\u0439\u0005a\u0000\u0000\u0439\u043a\u0005b\u0000\u0000\u043a"+ + "\u043b\u0005s\u0000\u0000\u043b\u043c\u0005t\u0000\u0000\u043c\u043d\u0005"+ + "r\u0000\u0000\u043d\u043e\u0005a\u0000\u0000\u043e\u043f\u0005c\u0000"+ + "\u0000\u043f\u0440\u0005t\u0000\u0000\u0440\u010f\u0001\u0000\u0000\u0000"+ + "\u0441\u0442\u0005i\u0000\u0000\u0442\u0443\u0005s\u0000\u0000\u0443\u0111"+ + "\u0001\u0000\u0000\u0000\u0444\u0445\u0005@\u0000\u0000\u0445\u0113\u0001"+ + "\u0000\u0000\u0000\u0446\u044a\u0003\u014a\u00a4\u0000\u0447\u0449\u0003"+ + "\u0148\u00a3\u0000\u0448\u0447\u0001\u0000\u0000\u0000\u0449\u044c\u0001"+ + "\u0000\u0000\u0000\u044a\u0448\u0001\u0000\u0000\u0000\u044a\u044b\u0001"+ + "\u0000\u0000\u0000\u044b\u0115\u0001\u0000\u0000\u0000\u044c\u044a\u0001"+ + "\u0000\u0000\u0000\u044d\u0451\u0005\"\u0000\u0000\u044e\u0450\u0003\u012c"+ + "\u0095\u0000\u044f\u044e\u0001\u0000\u0000\u0000\u0450\u0453\u0001\u0000"+ + "\u0000\u0000\u0451\u044f\u0001\u0000\u0000\u0000\u0451\u0452\u0001\u0000"+ + "\u0000\u0000\u0452\u0454\u0001\u0000\u0000\u0000\u0453\u0451\u0001\u0000"+ + "\u0000\u0000\u0454\u045e\u0005\"\u0000\u0000\u0455\u0459\u0005\'\u0000"+ + "\u0000\u0456\u0458\u0003\u012e\u0096\u0000\u0457\u0456\u0001\u0000\u0000"+ + "\u0000\u0458\u045b\u0001\u0000\u0000\u0000\u0459\u0457\u0001\u0000\u0000"+ + "\u0000\u0459\u045a\u0001\u0000\u0000\u0000\u045a\u045c\u0001\u0000\u0000"+ + "\u0000\u045b\u0459\u0001\u0000\u0000\u0000\u045c\u045e\u0005\'\u0000\u0000"+ + "\u045d\u044d\u0001\u0000\u0000\u0000\u045d\u0455\u0001\u0000\u0000\u0000"+ + "\u045e\u045f\u0001\u0000\u0000\u0000\u045f\u0460\u0006\u008a\u0004\u0000"+ + "\u0460\u0117\u0001\u0000\u0000\u0000\u0461\u0462\u0005`\u0000\u0000\u0462"+ + "\u0463\u0006\u008b\u0005\u0000\u0463\u0464\u0001\u0000\u0000\u0000\u0464"+ + "\u0465\u0006\u008b\u0006\u0000\u0465\u0119\u0001\u0000\u0000\u0000\u0466"+ + "\u0468\u0007\u000b\u0000\u0000\u0467\u0466\u0001\u0000\u0000\u0000\u0468"+ + "\u0469\u0001\u0000\u0000\u0000\u0469\u0467\u0001\u0000\u0000\u0000\u0469"+ + "\u046a\u0001\u0000\u0000\u0000\u046a\u046b\u0001\u0000\u0000\u0000\u046b"+ + "\u046c\u0006\u008c\u0000\u0000\u046c\u011b\u0001\u0000\u0000\u0000\u046d"+ + "\u046e\u0007\u0000\u0000\u0000\u046e\u046f\u0001\u0000\u0000\u0000\u046f"+ + "\u0470\u0006\u008d\u0000\u0000\u0470\u011d\u0001\u0000\u0000\u0000\u0471"+ + "\u0472\u0005<\u0000\u0000\u0472\u0473\u0005!\u0000\u0000\u0473\u0474\u0005"+ + "-\u0000\u0000\u0474\u0475\u0005-\u0000\u0000\u0475\u0479\u0001\u0000\u0000"+ + "\u0000\u0476\u0478\t\u0000\u0000\u0000\u0477\u0476\u0001\u0000\u0000\u0000"+ + "\u0478\u047b\u0001\u0000\u0000\u0000\u0479\u047a\u0001\u0000\u0000\u0000"+ + "\u0479\u0477\u0001\u0000\u0000\u0000\u047a\u047c\u0001\u0000\u0000\u0000"+ + "\u047b\u0479\u0001\u0000\u0000\u0000\u047c\u047d\u0005-\u0000\u0000\u047d"+ + "\u047e\u0005-\u0000\u0000\u047e\u047f\u0005>\u0000\u0000\u047f\u0480\u0001"+ + "\u0000\u0000\u0000\u0480\u0481\u0006\u008e\u0000\u0000\u0481\u011f\u0001"+ + "\u0000\u0000\u0000\u0482\u0483\u0005<\u0000\u0000\u0483\u0484\u0005!\u0000"+ + "\u0000\u0484\u0485\u0005[\u0000\u0000\u0485\u0486\u0005C\u0000\u0000\u0486"+ + "\u0487\u0005D\u0000\u0000\u0487\u0488\u0005A\u0000\u0000\u0488\u0489\u0005"+ + "T\u0000\u0000\u0489\u048a\u0005A\u0000\u0000\u048a\u048b\u0005[\u0000"+ + "\u0000\u048b\u048f\u0001\u0000\u0000\u0000\u048c\u048e\t\u0000\u0000\u0000"+ + "\u048d\u048c\u0001\u0000\u0000\u0000\u048e\u0491\u0001\u0000\u0000\u0000"+ + "\u048f\u0490\u0001\u0000\u0000\u0000\u048f\u048d\u0001\u0000\u0000\u0000"+ + "\u0490\u0492\u0001\u0000\u0000\u0000\u0491\u048f\u0001\u0000\u0000\u0000"+ + "\u0492\u0493\u0005]\u0000\u0000\u0493\u0494\u0005]\u0000\u0000\u0494\u0495"+ + "\u0005>\u0000\u0000\u0495\u0496\u0001\u0000\u0000\u0000\u0496\u0497\u0006"+ + "\u008f\u0000\u0000\u0497\u0121\u0001\u0000\u0000\u0000\u0498\u0499\t\u0000"+ + "\u0000\u0000\u0499\u049a\u0001\u0000\u0000\u0000\u049a\u049b\u0006\u0090"+ + "\u0007\u0000\u049b\u0123\u0001\u0000\u0000\u0000\u049c\u049d\u0005\\\u0000"+ + "\u0000\u049d\u049e\t\u0000\u0000\u0000\u049e\u0125\u0001\u0000\u0000\u0000"+ + "\u049f\u04a0\u0005`\u0000\u0000\u04a0\u04a1\u0006\u0092\b\u0000\u04a1"+ + "\u04a2\u0001\u0000\u0000\u0000\u04a2\u04a3\u0006\u0092\t\u0000\u04a3\u04a4"+ + "\u0006\u0092\u0002\u0000\u04a4\u0127\u0001\u0000\u0000\u0000\u04a5\u04a6"+ + "\u0005$\u0000\u0000\u04a6\u04a7\u0005{\u0000\u0000\u04a7\u04a8\u0001\u0000"+ + "\u0000\u0000\u04a8\u04a9\u0006\u0093\n\u0000\u04a9\u04aa\u0001\u0000\u0000"+ + "\u0000\u04aa\u04ab\u0006\u0093\u000b\u0000\u04ab\u0129\u0001\u0000\u0000"+ + "\u0000\u04ac\u04ad\b\f\u0000\u0000\u04ad\u012b\u0001\u0000\u0000\u0000"+ + "\u04ae\u04b3\b\r\u0000\u0000\u04af\u04b0\u0005\\\u0000\u0000\u04b0\u04b3"+ + "\u0003\u0130\u0097\u0000\u04b1\u04b3\u0003\u0140\u009f\u0000\u04b2\u04ae"+ + "\u0001\u0000\u0000\u0000\u04b2\u04af\u0001\u0000\u0000\u0000\u04b2\u04b1"+ + "\u0001\u0000\u0000\u0000\u04b3\u012d\u0001\u0000\u0000\u0000\u04b4\u04b9"+ + "\b\u000e\u0000\u0000\u04b5\u04b6\u0005\\\u0000\u0000\u04b6\u04b9\u0003"+ + "\u0130\u0097\u0000\u04b7\u04b9\u0003\u0140\u009f\u0000\u04b8\u04b4\u0001"+ + "\u0000\u0000\u0000\u04b8\u04b5\u0001\u0000\u0000\u0000\u04b8\u04b7\u0001"+ + "\u0000\u0000\u0000\u04b9\u012f\u0001\u0000\u0000\u0000\u04ba\u04c0\u0003"+ + "\u0132\u0098\u0000\u04bb\u04c0\u00050\u0000\u0000\u04bc\u04c0\u0003\u0134"+ + "\u0099\u0000\u04bd\u04c0\u0003\u0136\u009a\u0000\u04be\u04c0\u0003\u0138"+ + "\u009b\u0000\u04bf\u04ba\u0001\u0000\u0000\u0000\u04bf\u04bb\u0001\u0000"+ + "\u0000\u0000\u04bf\u04bc\u0001\u0000\u0000\u0000\u04bf\u04bd\u0001\u0000"+ + "\u0000\u0000\u04bf\u04be\u0001\u0000\u0000\u0000\u04c0\u0131\u0001\u0000"+ + "\u0000\u0000\u04c1\u04c4\u0003\u013a\u009c\u0000\u04c2\u04c4\u0003\u013c"+ + "\u009d\u0000\u04c3\u04c1\u0001\u0000\u0000\u0000\u04c3\u04c2\u0001\u0000"+ + "\u0000\u0000\u04c4\u0133\u0001\u0000\u0000\u0000\u04c5\u04c6\u0005x\u0000"+ + "\u0000\u04c6\u04c7\u0003\u0142\u00a0\u0000\u04c7\u04c8\u0003\u0142\u00a0"+ + "\u0000\u04c8\u0135\u0001\u0000\u0000\u0000\u04c9\u04ca\u0005u\u0000\u0000"+ + "\u04ca\u04cb\u0003\u0142\u00a0\u0000\u04cb\u04cc\u0003\u0142\u00a0\u0000"+ + "\u04cc\u04cd\u0003\u0142\u00a0\u0000\u04cd\u04ce\u0003\u0142\u00a0\u0000"+ + "\u04ce\u04da\u0001\u0000\u0000\u0000\u04cf\u04d0\u0005u\u0000\u0000\u04d0"+ + "\u04d1\u0005{\u0000\u0000\u04d1\u04d3\u0003\u0142\u00a0\u0000\u04d2\u04d4"+ + "\u0003\u0142\u00a0\u0000\u04d3\u04d2\u0001\u0000\u0000\u0000\u04d4\u04d5"+ + "\u0001\u0000\u0000\u0000\u04d5\u04d3\u0001\u0000\u0000\u0000\u04d5\u04d6"+ + "\u0001\u0000\u0000\u0000\u04d6\u04d7\u0001\u0000\u0000\u0000\u04d7\u04d8"+ + "\u0005}\u0000\u0000\u04d8\u04da\u0001\u0000\u0000\u0000\u04d9\u04c9\u0001"+ + "\u0000\u0000\u0000\u04d9\u04cf\u0001\u0000\u0000\u0000\u04da\u0137\u0001"+ + "\u0000\u0000\u0000\u04db\u04dc\u0005u\u0000\u0000\u04dc\u04de\u0005{\u0000"+ + "\u0000\u04dd\u04df\u0003\u0142\u00a0\u0000\u04de\u04dd\u0001\u0000\u0000"+ + "\u0000\u04df\u04e0\u0001\u0000\u0000\u0000\u04e0\u04de\u0001\u0000\u0000"+ + "\u0000\u04e0\u04e1\u0001\u0000\u0000\u0000\u04e1\u04e2\u0001\u0000\u0000"+ + "\u0000\u04e2\u04e3\u0005}\u0000\u0000\u04e3\u0139\u0001\u0000\u0000\u0000"+ + "\u04e4\u04e5\u0007\u000f\u0000\u0000\u04e5\u013b\u0001\u0000\u0000\u0000"+ + "\u04e6\u04e7\b\u0010\u0000\u0000\u04e7\u013d\u0001\u0000\u0000\u0000\u04e8"+ + "\u04eb\u0003\u013a\u009c\u0000\u04e9\u04eb\u0007\u0011\u0000\u0000\u04ea"+ + "\u04e8\u0001\u0000\u0000\u0000\u04ea\u04e9\u0001\u0000\u0000\u0000\u04eb"+ + "\u013f\u0001\u0000\u0000\u0000\u04ec\u04ee\u0005\\\u0000\u0000\u04ed\u04ef"+ + "\u0007\u0000\u0000\u0000\u04ee\u04ed\u0001\u0000\u0000\u0000\u04ef\u04f0"+ + "\u0001\u0000\u0000\u0000\u04f0\u04ee\u0001\u0000\u0000\u0000\u04f0\u04f1"+ + "\u0001\u0000\u0000\u0000\u04f1\u0141\u0001\u0000\u0000\u0000\u04f2\u04f3"+ + "\u0007\u0012\u0000\u0000\u04f3\u0143\u0001\u0000\u0000\u0000\u04f4\u04fd"+ + "\u00050\u0000\u0000\u04f5\u04f9\u0007\u0013\u0000\u0000\u04f6\u04f8\u0007"+ + "\u0002\u0000\u0000\u04f7\u04f6\u0001\u0000\u0000\u0000\u04f8\u04fb\u0001"+ + "\u0000\u0000\u0000\u04f9\u04f7\u0001\u0000\u0000\u0000\u04f9\u04fa\u0001"+ + "\u0000\u0000\u0000\u04fa\u04fd\u0001\u0000\u0000\u0000\u04fb\u04f9\u0001"+ + "\u0000\u0000\u0000\u04fc\u04f4\u0001\u0000\u0000\u0000\u04fc\u04f5\u0001"+ + "\u0000\u0000\u0000\u04fd\u0145\u0001\u0000\u0000\u0000\u04fe\u0500\u0007"+ + "\u0014\u0000\u0000\u04ff\u0501\u0007\u0015\u0000\u0000\u0500\u04ff\u0001"+ + "\u0000\u0000\u0000\u0500\u0501\u0001\u0000\u0000\u0000\u0501\u0503\u0001"+ + "\u0000\u0000\u0000\u0502\u0504\u0007\u0002\u0000\u0000\u0503\u0502\u0001"+ + "\u0000\u0000\u0000\u0504\u0505\u0001\u0000\u0000\u0000\u0505\u0503\u0001"+ + "\u0000\u0000\u0000\u0505\u0506\u0001\u0000\u0000\u0000\u0506\u0147\u0001"+ + "\u0000\u0000\u0000\u0507\u050a\u0003\u014a\u00a4\u0000\u0508\u050a\u0007"+ + "\u0016\u0000\u0000\u0509\u0507\u0001\u0000\u0000\u0000\u0509\u0508\u0001"+ + "\u0000\u0000\u0000\u050a\u0149\u0001\u0000\u0000\u0000\u050b\u050f\u0007"+ + "\u0017\u0000\u0000\u050c\u050d\u0005\\\u0000\u0000\u050d\u050f\u0003\u0136"+ + "\u009a\u0000\u050e\u050b\u0001\u0000\u0000\u0000\u050e\u050c\u0001\u0000"+ + "\u0000\u0000\u050f\u014b\u0001\u0000\u0000\u0000\u0510\u051b\b\u0018\u0000"+ + "\u0000\u0511\u051b\u0003\u0152\u00a8\u0000\u0512\u0516\u0005[\u0000\u0000"+ + "\u0513\u0515\u0003\u0150\u00a7\u0000\u0514\u0513\u0001\u0000\u0000\u0000"+ + "\u0515\u0518\u0001\u0000\u0000\u0000\u0516\u0514\u0001\u0000\u0000\u0000"+ + "\u0516\u0517\u0001\u0000\u0000\u0000\u0517\u0519\u0001\u0000\u0000\u0000"+ + "\u0518\u0516\u0001\u0000\u0000\u0000\u0519\u051b\u0005]\u0000\u0000\u051a"+ + "\u0510\u0001\u0000\u0000\u0000\u051a\u0511\u0001\u0000\u0000\u0000\u051a"+ + "\u0512\u0001\u0000\u0000\u0000\u051b\u014d\u0001\u0000\u0000\u0000\u051c"+ + "\u0527\b\u0019\u0000\u0000\u051d\u0527\u0003\u0152\u00a8\u0000\u051e\u0522"+ + "\u0005[\u0000\u0000\u051f\u0521\u0003\u0150\u00a7\u0000\u0520\u051f\u0001"+ + "\u0000\u0000\u0000\u0521\u0524\u0001\u0000\u0000\u0000\u0522\u0520\u0001"+ + "\u0000\u0000\u0000\u0522\u0523\u0001\u0000\u0000\u0000\u0523\u0525\u0001"+ + "\u0000\u0000\u0000\u0524\u0522\u0001\u0000\u0000\u0000\u0525\u0527\u0005"+ + "]\u0000\u0000\u0526\u051c\u0001\u0000\u0000\u0000\u0526\u051d\u0001\u0000"+ + "\u0000\u0000\u0526\u051e\u0001\u0000\u0000\u0000\u0527\u014f\u0001\u0000"+ + "\u0000\u0000\u0528\u052b\b\u001a\u0000\u0000\u0529\u052b\u0003\u0152\u00a8"+ + "\u0000\u052a\u0528\u0001\u0000\u0000\u0000\u052a\u0529\u0001\u0000\u0000"+ + "\u0000\u052b\u0151\u0001\u0000\u0000\u0000\u052c\u052d\u0005\\\u0000\u0000"+ + "\u052d\u052e\b\u0000\u0000\u0000\u052e\u0153\u0001\u0000\u0000\u0000/"+ + "\u0000\u0001\u015a\u0168\u0172\u017a\u0224\u022c\u0230\u0237\u023b\u023f"+ + "\u0241\u0249\u0250\u025a\u0263\u026c\u0277\u0282\u044a\u0451\u0459\u045d"+ + "\u0469\u0479\u048f\u04b2\u04b8\u04bf\u04c3\u04d5\u04d9\u04e0\u04ea\u04f0"+ + "\u04f9\u04fc\u0500\u0505\u0509\u050e\u0516\u051a\u0522\u0526\u052a\f\u0000"+ + "\u0001\u0000\u0001\u0007\u0000\u0004\u0000\u0000\u0001\t\u0001\u0001\u008a"+ + "\u0002\u0001\u008b\u0003\u0005\u0001\u0000\u0000\u0002\u0000\u0001\u0092"+ + "\u0004\u0007\u008c\u0000\u0001\u0093\u0005\u0005\u0000\u0000"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file -- Gitee From 963c30605116059c463faf09e2ff124d0ce37d0b Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:10:34 +0800 Subject: [PATCH 13/26] refacotry ts lexer Signed-off-by: wangshi --- .../src/main/java/antlr/TypeScriptLexer.g4 | 315 ------------------ 1 file changed, 315 deletions(-) delete mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.g4 diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.g4 b/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.g4 deleted file mode 100644 index b15a8d41..00000000 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/TypeScriptLexer.g4 +++ /dev/null @@ -1,315 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 by Bart Kiers (original author) and Alexandre Vitorelli (contributor -> ported to CSharp) - * Copyright (c) 2017 by Ivan Kochurkin (Positive Technologies): - added ECMAScript 6 support, cleared and transformed to the universal grammar. - * Copyright (c) 2018 by Juan Alvarez (contributor -> ported to Go) - * Copyright (c) 2019 by Andrii Artiushok (contributor -> added TypeScript support) - * Copyright (c) 2024 by Andrew Leppard (www.wegrok.review) - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false -// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine -// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true - -lexer grammar TypeScriptLexer; - -channels { - ERROR -} - -options { - superClass = TypeScriptLexerBase; -} - -MultiLineComment : '/*' .*? '*/' -> channel(HIDDEN); -SingleLineComment : '//' ~[\r\n\u2028\u2029]* -> channel(HIDDEN); -RegularExpressionLiteral: - '/' RegularExpressionFirstChar RegularExpressionChar* {this.IsRegexPossible()}? '/' IdentifierPart* -; - -OpenBracket : '['; -CloseBracket : ']'; -OpenParen : '('; -CloseParen : ')'; -OpenBrace : '{' {this.ProcessOpenBrace();}; -TemplateCloseBrace : {this.IsInTemplateString()}? '}' -> popMode; -CloseBrace : '}' {this.ProcessCloseBrace();}; -SemiColon : ';'; -Comma : ','; -Assign : '='; -QuestionMark : '?'; -QuestionMarkDot : '?.'; -Colon : ':'; -Ellipsis : '...'; -Dot : '.'; -PlusPlus : '++'; -MinusMinus : '--'; -Plus : '+'; -Minus : '-'; -BitNot : '~'; -Not : '!'; -Multiply : '*'; -Divide : '/'; -Modulus : '%'; -Power : '**'; -NullCoalesce : '??'; -Hashtag : '#'; -LeftShiftArithmetic : '<<'; -// We can't match these in the lexer because it would cause issues when parsing -// types like Map> -// RightShiftArithmetic : '>>'; -// RightShiftLogical : '>>>'; -LessThan : '<'; -MoreThan : '>'; -LessThanEquals : '<='; -GreaterThanEquals : '>='; -Equals_ : '=='; -NotEquals : '!='; -IdentityEquals : '==='; -IdentityNotEquals : '!=='; -BitAnd : '&'; -BitXOr : '^'; -BitOr : '|'; -And : '&&'; -Or : '||'; -MultiplyAssign : '*='; -DivideAssign : '/='; -ModulusAssign : '%='; -PlusAssign : '+='; -MinusAssign : '-='; -LeftShiftArithmeticAssign : '<<='; -RightShiftArithmeticAssign : '>>='; -RightShiftLogicalAssign : '>>>='; -BitAndAssign : '&='; -BitXorAssign : '^='; -BitOrAssign : '|='; -PowerAssign : '**='; -NullishCoalescingAssign : '??='; -ARROW : '=>'; - -/// Null Literals - -NullLiteral: 'null'; - -/// Boolean Literals - -BooleanLiteral: 'true' | 'false'; - -/// Numeric Literals - -DecimalLiteral: - DecimalIntegerLiteral '.' [0-9] [0-9_]* ExponentPart? - | '.' [0-9] [0-9_]* ExponentPart? - | DecimalIntegerLiteral ExponentPart? -; - -/// Numeric Literals - -HexIntegerLiteral : '0' [xX] [0-9a-fA-F] HexDigit*; -OctalIntegerLiteral : '0' [0-7]+ {!this.IsStrictMode()}?; -OctalIntegerLiteral2 : '0' [oO] [0-7] [_0-7]*; -BinaryIntegerLiteral : '0' [bB] [01] [_01]*; - -BigHexIntegerLiteral : '0' [xX] [0-9a-fA-F] HexDigit* 'n'; -BigOctalIntegerLiteral : '0' [oO] [0-7] [_0-7]* 'n'; -BigBinaryIntegerLiteral : '0' [bB] [01] [_01]* 'n'; -BigDecimalIntegerLiteral : DecimalIntegerLiteral 'n'; - -/// Keywords - -Break : 'break'; -Do : 'do'; -Instanceof : 'instanceof'; -Typeof : 'typeof'; -Case : 'case'; -Else : 'else'; -New : 'new'; -Var : 'var'; -Catch : 'catch'; -Finally : 'finally'; -Return : 'return'; -Void : 'void'; -Continue : 'continue'; -For : 'for'; -Switch : 'switch'; -While : 'while'; -Debugger : 'debugger'; -Function_ : 'function'; -This : 'this'; -With : 'with'; -Default : 'default'; -If : 'if'; -Throw : 'throw'; -Delete : 'delete'; -In : 'in'; -Try : 'try'; -As : 'as'; -From : 'from'; -ReadOnly : 'readonly'; -Async : 'async'; -Await : 'await'; -Yield : 'yield'; -YieldStar : 'yield*'; - -/// Future Reserved Words - -Class : 'class'; -Enum : 'enum'; -Extends : 'extends'; -Super : 'super'; -Const : 'const'; -Export : 'export'; -Import : 'import'; - -/// The following tokens are also considered to be FutureReservedWords -/// when parsing strict mode - -Implements : 'implements'; -Let : 'let'; -Private : 'private'; -Public : 'public'; -Interface : 'interface'; -Package : 'package'; -Protected : 'protected'; -Static : 'static'; - -//keywords: -Any : 'any'; -Number : 'number'; -Never : 'never'; -Boolean : 'boolean'; -String : 'string'; -Unique : 'unique'; -Symbol : 'symbol'; -Undefined : 'undefined'; -Object : 'object'; - -Of : 'of'; -KeyOf : 'keyof'; - -TypeAlias: 'type'; - -Constructor : 'constructor'; -Namespace : 'namespace'; -Require : 'require'; -Module : 'module'; -Declare : 'declare'; - -Abstract: 'abstract'; - -Is: 'is'; - -// -// Ext.2 Additions to 1.8: Decorators -// -At: '@'; - -/// Identifier Names and Identifiers - -Identifier: IdentifierStart IdentifierPart*; - -/// String Literals -StringLiteral: - ('"' DoubleStringCharacter* '"' | '\'' SingleStringCharacter* '\'') {this.ProcessStringLiteral();} -; - -BackTick: '`' {this.IncreaseTemplateDepth();} -> pushMode(TEMPLATE); - -WhiteSpaces: [\t\u000B\u000C\u0020\u00A0]+ -> channel(HIDDEN); - -LineTerminator: [\r\n\u2028\u2029] -> channel(HIDDEN); - -/// Comments - -HtmlComment : '' -> channel(HIDDEN); -CDataComment : '' -> channel(HIDDEN); -UnexpectedCharacter : . -> channel(ERROR); - -mode TEMPLATE; - -TemplateStringEscapeAtom : '\\' .; -BackTickInside : '`' {this.DecreaseTemplateDepth();} -> type(BackTick), popMode; -TemplateStringStartExpression : '${' {this.StartTemplateString();} -> pushMode(DEFAULT_MODE); -TemplateStringAtom : ~[`\\]; - -// Fragment rules - -fragment DoubleStringCharacter: ~["\\\r\n] | '\\' EscapeSequence | LineContinuation; - -fragment SingleStringCharacter: ~['\\\r\n] | '\\' EscapeSequence | LineContinuation; - -fragment EscapeSequence: - CharacterEscapeSequence - | '0' // no digit ahead! TODO - | HexEscapeSequence - | UnicodeEscapeSequence - | ExtendedUnicodeEscapeSequence -; - -fragment CharacterEscapeSequence: SingleEscapeCharacter | NonEscapeCharacter; - -fragment HexEscapeSequence: 'x' HexDigit HexDigit; - -fragment UnicodeEscapeSequence: - 'u' HexDigit HexDigit HexDigit HexDigit - | 'u' '{' HexDigit HexDigit+ '}' -; - -fragment ExtendedUnicodeEscapeSequence: 'u' '{' HexDigit+ '}'; - -fragment SingleEscapeCharacter: ['"\\bfnrtv]; - -fragment NonEscapeCharacter: ~['"\\bfnrtv0-9xu\r\n]; - -fragment EscapeCharacter: SingleEscapeCharacter | [0-9] | [xu]; - -fragment LineContinuation: '\\' [\r\n\u2028\u2029]+; - -fragment HexDigit: [_0-9a-fA-F]; - -fragment DecimalIntegerLiteral: '0' | [1-9] [0-9_]*; - -fragment ExponentPart: [eE] [+-]? [0-9_]+; - -fragment IdentifierPart: IdentifierStart | [\p{Mn}] | [\p{Nd}] | [\p{Pc}] | '\u200C' | '\u200D'; - -fragment IdentifierStart: [\p{L}] | [$_] | '\\' UnicodeEscapeSequence; - -fragment RegularExpressionFirstChar: - ~[*\r\n\u2028\u2029\\/[] - | RegularExpressionBackslashSequence - | '[' RegularExpressionClassChar* ']' -; - -fragment RegularExpressionChar: - ~[\r\n\u2028\u2029\\/[] - | RegularExpressionBackslashSequence - | '[' RegularExpressionClassChar* ']' -; - -fragment RegularExpressionClassChar: ~[\r\n\u2028\u2029\]\\] | RegularExpressionBackslashSequence; - -fragment RegularExpressionBackslashSequence: '\\' ~[\r\n\u2028\u2029]; \ No newline at end of file -- Gitee From b574d01231dd447b62fe5347a7f5046eca1b86eb Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:10:50 +0800 Subject: [PATCH 14/26] refacotry ts lexer Signed-off-by: wangshi --- .../java/antlr/typescript/TypeScriptLexer.g4 | 315 ++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.g4 diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.g4 b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.g4 new file mode 100644 index 00000000..b15a8d41 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.g4 @@ -0,0 +1,315 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 by Bart Kiers (original author) and Alexandre Vitorelli (contributor -> ported to CSharp) + * Copyright (c) 2017 by Ivan Kochurkin (Positive Technologies): + added ECMAScript 6 support, cleared and transformed to the universal grammar. + * Copyright (c) 2018 by Juan Alvarez (contributor -> ported to Go) + * Copyright (c) 2019 by Andrii Artiushok (contributor -> added TypeScript support) + * Copyright (c) 2024 by Andrew Leppard (www.wegrok.review) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine +// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true + +lexer grammar TypeScriptLexer; + +channels { + ERROR +} + +options { + superClass = TypeScriptLexerBase; +} + +MultiLineComment : '/*' .*? '*/' -> channel(HIDDEN); +SingleLineComment : '//' ~[\r\n\u2028\u2029]* -> channel(HIDDEN); +RegularExpressionLiteral: + '/' RegularExpressionFirstChar RegularExpressionChar* {this.IsRegexPossible()}? '/' IdentifierPart* +; + +OpenBracket : '['; +CloseBracket : ']'; +OpenParen : '('; +CloseParen : ')'; +OpenBrace : '{' {this.ProcessOpenBrace();}; +TemplateCloseBrace : {this.IsInTemplateString()}? '}' -> popMode; +CloseBrace : '}' {this.ProcessCloseBrace();}; +SemiColon : ';'; +Comma : ','; +Assign : '='; +QuestionMark : '?'; +QuestionMarkDot : '?.'; +Colon : ':'; +Ellipsis : '...'; +Dot : '.'; +PlusPlus : '++'; +MinusMinus : '--'; +Plus : '+'; +Minus : '-'; +BitNot : '~'; +Not : '!'; +Multiply : '*'; +Divide : '/'; +Modulus : '%'; +Power : '**'; +NullCoalesce : '??'; +Hashtag : '#'; +LeftShiftArithmetic : '<<'; +// We can't match these in the lexer because it would cause issues when parsing +// types like Map> +// RightShiftArithmetic : '>>'; +// RightShiftLogical : '>>>'; +LessThan : '<'; +MoreThan : '>'; +LessThanEquals : '<='; +GreaterThanEquals : '>='; +Equals_ : '=='; +NotEquals : '!='; +IdentityEquals : '==='; +IdentityNotEquals : '!=='; +BitAnd : '&'; +BitXOr : '^'; +BitOr : '|'; +And : '&&'; +Or : '||'; +MultiplyAssign : '*='; +DivideAssign : '/='; +ModulusAssign : '%='; +PlusAssign : '+='; +MinusAssign : '-='; +LeftShiftArithmeticAssign : '<<='; +RightShiftArithmeticAssign : '>>='; +RightShiftLogicalAssign : '>>>='; +BitAndAssign : '&='; +BitXorAssign : '^='; +BitOrAssign : '|='; +PowerAssign : '**='; +NullishCoalescingAssign : '??='; +ARROW : '=>'; + +/// Null Literals + +NullLiteral: 'null'; + +/// Boolean Literals + +BooleanLiteral: 'true' | 'false'; + +/// Numeric Literals + +DecimalLiteral: + DecimalIntegerLiteral '.' [0-9] [0-9_]* ExponentPart? + | '.' [0-9] [0-9_]* ExponentPart? + | DecimalIntegerLiteral ExponentPart? +; + +/// Numeric Literals + +HexIntegerLiteral : '0' [xX] [0-9a-fA-F] HexDigit*; +OctalIntegerLiteral : '0' [0-7]+ {!this.IsStrictMode()}?; +OctalIntegerLiteral2 : '0' [oO] [0-7] [_0-7]*; +BinaryIntegerLiteral : '0' [bB] [01] [_01]*; + +BigHexIntegerLiteral : '0' [xX] [0-9a-fA-F] HexDigit* 'n'; +BigOctalIntegerLiteral : '0' [oO] [0-7] [_0-7]* 'n'; +BigBinaryIntegerLiteral : '0' [bB] [01] [_01]* 'n'; +BigDecimalIntegerLiteral : DecimalIntegerLiteral 'n'; + +/// Keywords + +Break : 'break'; +Do : 'do'; +Instanceof : 'instanceof'; +Typeof : 'typeof'; +Case : 'case'; +Else : 'else'; +New : 'new'; +Var : 'var'; +Catch : 'catch'; +Finally : 'finally'; +Return : 'return'; +Void : 'void'; +Continue : 'continue'; +For : 'for'; +Switch : 'switch'; +While : 'while'; +Debugger : 'debugger'; +Function_ : 'function'; +This : 'this'; +With : 'with'; +Default : 'default'; +If : 'if'; +Throw : 'throw'; +Delete : 'delete'; +In : 'in'; +Try : 'try'; +As : 'as'; +From : 'from'; +ReadOnly : 'readonly'; +Async : 'async'; +Await : 'await'; +Yield : 'yield'; +YieldStar : 'yield*'; + +/// Future Reserved Words + +Class : 'class'; +Enum : 'enum'; +Extends : 'extends'; +Super : 'super'; +Const : 'const'; +Export : 'export'; +Import : 'import'; + +/// The following tokens are also considered to be FutureReservedWords +/// when parsing strict mode + +Implements : 'implements'; +Let : 'let'; +Private : 'private'; +Public : 'public'; +Interface : 'interface'; +Package : 'package'; +Protected : 'protected'; +Static : 'static'; + +//keywords: +Any : 'any'; +Number : 'number'; +Never : 'never'; +Boolean : 'boolean'; +String : 'string'; +Unique : 'unique'; +Symbol : 'symbol'; +Undefined : 'undefined'; +Object : 'object'; + +Of : 'of'; +KeyOf : 'keyof'; + +TypeAlias: 'type'; + +Constructor : 'constructor'; +Namespace : 'namespace'; +Require : 'require'; +Module : 'module'; +Declare : 'declare'; + +Abstract: 'abstract'; + +Is: 'is'; + +// +// Ext.2 Additions to 1.8: Decorators +// +At: '@'; + +/// Identifier Names and Identifiers + +Identifier: IdentifierStart IdentifierPart*; + +/// String Literals +StringLiteral: + ('"' DoubleStringCharacter* '"' | '\'' SingleStringCharacter* '\'') {this.ProcessStringLiteral();} +; + +BackTick: '`' {this.IncreaseTemplateDepth();} -> pushMode(TEMPLATE); + +WhiteSpaces: [\t\u000B\u000C\u0020\u00A0]+ -> channel(HIDDEN); + +LineTerminator: [\r\n\u2028\u2029] -> channel(HIDDEN); + +/// Comments + +HtmlComment : '' -> channel(HIDDEN); +CDataComment : '' -> channel(HIDDEN); +UnexpectedCharacter : . -> channel(ERROR); + +mode TEMPLATE; + +TemplateStringEscapeAtom : '\\' .; +BackTickInside : '`' {this.DecreaseTemplateDepth();} -> type(BackTick), popMode; +TemplateStringStartExpression : '${' {this.StartTemplateString();} -> pushMode(DEFAULT_MODE); +TemplateStringAtom : ~[`\\]; + +// Fragment rules + +fragment DoubleStringCharacter: ~["\\\r\n] | '\\' EscapeSequence | LineContinuation; + +fragment SingleStringCharacter: ~['\\\r\n] | '\\' EscapeSequence | LineContinuation; + +fragment EscapeSequence: + CharacterEscapeSequence + | '0' // no digit ahead! TODO + | HexEscapeSequence + | UnicodeEscapeSequence + | ExtendedUnicodeEscapeSequence +; + +fragment CharacterEscapeSequence: SingleEscapeCharacter | NonEscapeCharacter; + +fragment HexEscapeSequence: 'x' HexDigit HexDigit; + +fragment UnicodeEscapeSequence: + 'u' HexDigit HexDigit HexDigit HexDigit + | 'u' '{' HexDigit HexDigit+ '}' +; + +fragment ExtendedUnicodeEscapeSequence: 'u' '{' HexDigit+ '}'; + +fragment SingleEscapeCharacter: ['"\\bfnrtv]; + +fragment NonEscapeCharacter: ~['"\\bfnrtv0-9xu\r\n]; + +fragment EscapeCharacter: SingleEscapeCharacter | [0-9] | [xu]; + +fragment LineContinuation: '\\' [\r\n\u2028\u2029]+; + +fragment HexDigit: [_0-9a-fA-F]; + +fragment DecimalIntegerLiteral: '0' | [1-9] [0-9_]*; + +fragment ExponentPart: [eE] [+-]? [0-9_]+; + +fragment IdentifierPart: IdentifierStart | [\p{Mn}] | [\p{Nd}] | [\p{Pc}] | '\u200C' | '\u200D'; + +fragment IdentifierStart: [\p{L}] | [$_] | '\\' UnicodeEscapeSequence; + +fragment RegularExpressionFirstChar: + ~[*\r\n\u2028\u2029\\/[] + | RegularExpressionBackslashSequence + | '[' RegularExpressionClassChar* ']' +; + +fragment RegularExpressionChar: + ~[\r\n\u2028\u2029\\/[] + | RegularExpressionBackslashSequence + | '[' RegularExpressionClassChar* ']' +; + +fragment RegularExpressionClassChar: ~[\r\n\u2028\u2029\]\\] | RegularExpressionBackslashSequence; + +fragment RegularExpressionBackslashSequence: '\\' ~[\r\n\u2028\u2029]; \ No newline at end of file -- Gitee From 2acfd21f8270fe73b72125ba321a8c9e0b770a3c Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:13:04 +0800 Subject: [PATCH 15/26] refatory ts lexer Signed-off-by: wangshi --- .../antlr/typescript/TypeScriptLexer.tokens | 271 +++++ .../antlr/typescript/TypeScriptLexerBase.java | 180 ++++ .../java/antlr/typescript/TypeScriptParser.g4 | 984 ++++++++++++++++++ 3 files changed, 1435 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.tokens create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexerBase.java create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.g4 diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.tokens b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.tokens new file mode 100644 index 00000000..18922f93 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexer.tokens @@ -0,0 +1,271 @@ +MultiLineComment=1 +SingleLineComment=2 +RegularExpressionLiteral=3 +OpenBracket=4 +CloseBracket=5 +OpenParen=6 +CloseParen=7 +OpenBrace=8 +TemplateCloseBrace=9 +CloseBrace=10 +SemiColon=11 +Comma=12 +Assign=13 +QuestionMark=14 +QuestionMarkDot=15 +Colon=16 +Ellipsis=17 +Dot=18 +PlusPlus=19 +MinusMinus=20 +Plus=21 +Minus=22 +BitNot=23 +Not=24 +Multiply=25 +Divide=26 +Modulus=27 +Power=28 +NullCoalesce=29 +Hashtag=30 +LeftShiftArithmetic=31 +LessThan=32 +MoreThan=33 +LessThanEquals=34 +GreaterThanEquals=35 +Equals_=36 +NotEquals=37 +IdentityEquals=38 +IdentityNotEquals=39 +BitAnd=40 +BitXOr=41 +BitOr=42 +And=43 +Or=44 +MultiplyAssign=45 +DivideAssign=46 +ModulusAssign=47 +PlusAssign=48 +MinusAssign=49 +LeftShiftArithmeticAssign=50 +RightShiftArithmeticAssign=51 +RightShiftLogicalAssign=52 +BitAndAssign=53 +BitXorAssign=54 +BitOrAssign=55 +PowerAssign=56 +NullishCoalescingAssign=57 +ARROW=58 +NullLiteral=59 +BooleanLiteral=60 +DecimalLiteral=61 +HexIntegerLiteral=62 +OctalIntegerLiteral=63 +OctalIntegerLiteral2=64 +BinaryIntegerLiteral=65 +BigHexIntegerLiteral=66 +BigOctalIntegerLiteral=67 +BigBinaryIntegerLiteral=68 +BigDecimalIntegerLiteral=69 +Break=70 +Do=71 +Instanceof=72 +Typeof=73 +Case=74 +Else=75 +New=76 +Var=77 +Catch=78 +Finally=79 +Return=80 +Void=81 +Continue=82 +For=83 +Switch=84 +While=85 +Debugger=86 +Function_=87 +This=88 +With=89 +Default=90 +If=91 +Throw=92 +Delete=93 +In=94 +Try=95 +As=96 +From=97 +ReadOnly=98 +Async=99 +Await=100 +Yield=101 +YieldStar=102 +Class=103 +Enum=104 +Extends=105 +Super=106 +Const=107 +Export=108 +Import=109 +Implements=110 +Let=111 +Private=112 +Public=113 +Interface=114 +Package=115 +Protected=116 +Static=117 +Any=118 +Number=119 +Never=120 +Boolean=121 +String=122 +Unique=123 +Symbol=124 +Undefined=125 +Object=126 +Of=127 +KeyOf=128 +TypeAlias=129 +Constructor=130 +Namespace=131 +Require=132 +Module=133 +Declare=134 +Abstract=135 +Is=136 +At=137 +Identifier=138 +StringLiteral=139 +BackTick=140 +WhiteSpaces=141 +LineTerminator=142 +HtmlComment=143 +CDataComment=144 +UnexpectedCharacter=145 +TemplateStringEscapeAtom=146 +TemplateStringStartExpression=147 +TemplateStringAtom=148 +'['=4 +']'=5 +'('=6 +')'=7 +'{'=8 +'}'=10 +';'=11 +','=12 +'='=13 +'?'=14 +'?.'=15 +':'=16 +'...'=17 +'.'=18 +'++'=19 +'--'=20 +'+'=21 +'-'=22 +'~'=23 +'!'=24 +'*'=25 +'/'=26 +'%'=27 +'**'=28 +'??'=29 +'#'=30 +'<<'=31 +'<'=32 +'>'=33 +'<='=34 +'>='=35 +'=='=36 +'!='=37 +'==='=38 +'!=='=39 +'&'=40 +'^'=41 +'|'=42 +'&&'=43 +'||'=44 +'*='=45 +'/='=46 +'%='=47 +'+='=48 +'-='=49 +'<<='=50 +'>>='=51 +'>>>='=52 +'&='=53 +'^='=54 +'|='=55 +'**='=56 +'??='=57 +'=>'=58 +'null'=59 +'break'=70 +'do'=71 +'instanceof'=72 +'typeof'=73 +'case'=74 +'else'=75 +'new'=76 +'var'=77 +'catch'=78 +'finally'=79 +'return'=80 +'void'=81 +'continue'=82 +'for'=83 +'switch'=84 +'while'=85 +'debugger'=86 +'function'=87 +'this'=88 +'with'=89 +'default'=90 +'if'=91 +'throw'=92 +'delete'=93 +'in'=94 +'try'=95 +'as'=96 +'from'=97 +'readonly'=98 +'async'=99 +'await'=100 +'yield'=101 +'yield*'=102 +'class'=103 +'enum'=104 +'extends'=105 +'super'=106 +'const'=107 +'export'=108 +'import'=109 +'implements'=110 +'let'=111 +'private'=112 +'public'=113 +'interface'=114 +'package'=115 +'protected'=116 +'static'=117 +'any'=118 +'number'=119 +'never'=120 +'boolean'=121 +'string'=122 +'unique'=123 +'symbol'=124 +'undefined'=125 +'object'=126 +'of'=127 +'keyof'=128 +'type'=129 +'constructor'=130 +'namespace'=131 +'require'=132 +'module'=133 +'declare'=134 +'abstract'=135 +'is'=136 +'@'=137 diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexerBase.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexerBase.java new file mode 100644 index 00000000..fc156d28 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptLexerBase.java @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +import org.antlr.v4.runtime.*; + +import java.util.ArrayDeque; +import java.util.Deque; + +/** + * All lexer methods that used in grammar (IsStrictMode) + * should start with Upper Case Char similar to Lexer rules. + */ +public abstract class TypeScriptLexerBase extends Lexer +{ + /** + * Stores values of nested modes. By default mode is strict or + * defined externally (useStrictDefault) + */ + private final Deque scopeStrictModes = new ArrayDeque<>(); + + private Token lastToken = null; + /** + * Default value of strict mode + * Can be defined externally by setUseStrictDefault + */ + private boolean useStrictDefault = false; + /** + * Current value of strict mode + * Can be defined during parsing, see StringFunctions.js and StringGlobal.js samples + */ + private boolean useStrictCurrent = false; + /** + * Keeps track of the current depth of nested template string backticks. + * E.g. after the X in: + * + * `${a ? `${X + * + * templateDepth will be 2. This variable is needed to determine if a `}` is a + * plain CloseBrace, or one that closes an expression inside a template string. + */ + private int templateDepth = 0; + + /** + * Keeps track of the depth of open- and close-braces. Used for expressions like: + * + * `${[1, 2, 3].map(x => { return x * 2;}).join("")}` + * + * where the '}' from `return x * 2;}` should not become a `TemplateCloseBrace` + * token but rather a `CloseBrace` token. + */ + private int bracesDepth = 0; + + public TypeScriptLexerBase(CharStream input) { + super(input); + } + + public boolean getStrictDefault() { + return useStrictDefault; + } + + public void setUseStrictDefault(boolean value) { + useStrictDefault = value; + useStrictCurrent = value; + } + + public boolean IsStrictMode() { + return useStrictCurrent; + } + + public void StartTemplateString() { + this.bracesDepth = 0; + } + + public boolean IsInTemplateString() { + return this.templateDepth > 0 && this.bracesDepth == 0; + } + + /** + * Return the next token from the character stream and records this last + * token in case it resides on the default channel. This recorded token + * is used to determine when the lexer could possibly match a regex + * literal. Also changes scopeStrictModes stack if tokenize special + * string 'use strict'; + * + * @return the next token from the character stream. + */ + @Override + public Token nextToken() { + Token next = super.nextToken(); + + if (next.getChannel() == Token.DEFAULT_CHANNEL) { + // Keep track of the last token on the default channel. + this.lastToken = next; + } + + return next; + } + + protected void ProcessOpenBrace() + { + bracesDepth++; + useStrictCurrent = scopeStrictModes.size() > 0 && scopeStrictModes.peek() ? true : useStrictDefault; + scopeStrictModes.push(useStrictCurrent); + } + + protected void ProcessCloseBrace() + { + bracesDepth--; + useStrictCurrent = scopeStrictModes.size() > 0 ? scopeStrictModes.pop() : useStrictDefault; + } + + protected void ProcessStringLiteral() + { + if (lastToken == null || lastToken.getType() == TypeScriptLexer.OpenBrace) + { + String text = getText(); + if (text.equals("\"use strict\"") || text.equals("'use strict'")) + { + if (scopeStrictModes.size() > 0) + scopeStrictModes.pop(); + useStrictCurrent = true; + scopeStrictModes.push(useStrictCurrent); + } + } + } + + protected void IncreaseTemplateDepth() { + this.templateDepth++; + } + + protected void DecreaseTemplateDepth() { + this.templateDepth--; + } + + /** + * Returns {@code true} if the lexer can match a regex literal. + */ + protected boolean IsRegexPossible() { + + if (this.lastToken == null) { + // No token has been produced yet: at the start of the input, + // no division is possible, so a regex literal _is_ possible. + return true; + } + + switch (this.lastToken.getType()) { + case TypeScriptLexer.Identifier: + case TypeScriptLexer.NullLiteral: + case TypeScriptLexer.BooleanLiteral: + case TypeScriptLexer.This: + case TypeScriptLexer.CloseBracket: + case TypeScriptLexer.CloseParen: + case TypeScriptLexer.OctalIntegerLiteral: + case TypeScriptLexer.DecimalLiteral: + case TypeScriptLexer.HexIntegerLiteral: + case TypeScriptLexer.StringLiteral: + case TypeScriptLexer.PlusPlus: + case TypeScriptLexer.MinusMinus: + // After any of the tokens above, no regex literal can follow. + return false; + default: + // In all other cases, a regex literal _is_ possible. + return true; + } + } +} \ No newline at end of file diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.g4 b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.g4 new file mode 100644 index 00000000..4331162f --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.g4 @@ -0,0 +1,984 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 by Bart Kiers (original author) and Alexandre Vitorelli (contributor -> ported to CSharp) + * Copyright (c) 2017 by Ivan Kochurkin (Positive Technologies): + added ECMAScript 6 support, cleared and transformed to the universal grammar. + * Copyright (c) 2018 by Juan Alvarez (contributor -> ported to Go) + * Copyright (c) 2019 by Andrii Artiushok (contributor -> added TypeScript support) + * Copyright (c) 2024 by Andrew Leppard (www.wegrok.review) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +parser grammar TypeScriptParser; + +options { + tokenVocab = TypeScriptLexer; + superClass = TypeScriptParserBase; +} + +// SupportSyntax + +initializer + : '=' singleExpression + ; + +bindingPattern + : (arrayLiteral | objectLiteral) + ; + +// TypeScript SPart +// A.1 Types +typeParameters + : '<' typeParameterList? '>' + ; + +typeParameterList + : typeParameter (',' typeParameter)* + ; + +typeParameter + : identifier constraint? + | identifier '=' typeArgument + | typeParameters + ; + +constraint + : 'extends' type_ + ; + +typeArguments + : '<' typeArgumentList? '>' + ; + +typeArgumentList + : typeArgument (',' typeArgument)* + ; + +typeArgument + : type_ + ; + +// Union and intersection types can have a leading '|' or '&' +// See https://github.com/microsoft/TypeScript/pull/12386 +type_ + : ('|' | '&')? unionOrIntersectionOrPrimaryType + | functionType + | constructorType + | typeGeneric + ; + +unionOrIntersectionOrPrimaryType + : unionOrIntersectionOrPrimaryType '|' unionOrIntersectionOrPrimaryType # Union + | unionOrIntersectionOrPrimaryType '&' unionOrIntersectionOrPrimaryType # Intersection + | primaryType # Primary + ; + +primaryType + : '(' type_ ')' # ParenthesizedPrimType + | predefinedType # PredefinedPrimType + | typeReference # ReferencePrimType + | objectType # ObjectPrimType + | primaryType {this.notLineTerminator()}? '[' primaryType? ']' # ArrayPrimType + | '[' tupleElementTypes ']' # TuplePrimType + | typeQuery # QueryPrimType + | This # ThisPrimType + | typeReference Is primaryType # RedefinitionOfType + | KeyOf primaryType # KeyOfType + ; + +predefinedType + : Any + | NullLiteral + | Number + | DecimalLiteral + | Boolean + | BooleanLiteral + | String + | StringLiteral + | Unique? Symbol + | Never + | Undefined + | Object + | Void + ; + +typeReference + : typeName typeGeneric? + ; + +typeGeneric + : '<' typeArgumentList typeGeneric?'>' + ; + +typeName + : identifier + | namespaceName + ; + +objectType + : '{' typeBody? '}' + ; + +typeBody + : typeMemberList (SemiColon | ',')? + ; + +typeMemberList + : typeMember ((SemiColon | ',') typeMember)* + ; + +typeMember + : propertySignatur + | callSignature + | constructSignature + | indexSignature + | methodSignature ('=>' type_)? + ; + +arrayType + : primaryType {this.notLineTerminator()}? '[' ']' + ; + +tupleType + : '[' tupleElementTypes ']' + ; + +// Tuples can have a trailing comma. See https://github.com/Microsoft/TypeScript/issues/28893 +tupleElementTypes + : type_ (',' type_)* ','? + ; + +functionType + : typeParameters? '(' parameterList? ')' '=>' type_ + ; + +constructorType + : 'new' typeParameters? '(' parameterList? ')' '=>' type_ + ; + +typeQuery + : 'typeof' typeQueryExpression + ; + +typeQueryExpression + : identifier + | (identifierName '.')+ identifierName + ; + +propertySignatur + : ReadOnly? propertyName '?'? typeAnnotation? ('=>' type_)? + ; + +typeAnnotation + : ':' type_ + ; + +callSignature + : typeParameters? '(' parameterList? ')' typeAnnotation? + ; + +// Function parameter list can have a trailing comma. +// See https://github.com/Microsoft/TypeScript/issues/16152 +parameterList + : restParameter + | parameter (',' parameter)* (',' restParameter)? ','? + ; + +requiredParameterList + : requiredParameter (',' requiredParameter)* + ; + +parameter + : requiredParameter + | optionalParameter + ; + +optionalParameter + : decoratorList? ( + accessibilityModifier? identifierOrPattern ( + '?' typeAnnotation? + | typeAnnotation? initializer + ) + ) + ; + +restParameter + : '...' singleExpression typeAnnotation? + ; + +requiredParameter + : decoratorList? accessibilityModifier? identifierOrPattern typeAnnotation? + ; + +accessibilityModifier + : Public + | Private + | Protected + ; + +identifierOrPattern + : identifierName + | bindingPattern + ; + +constructSignature + : 'new' typeParameters? '(' parameterList? ')' typeAnnotation? + ; + +indexSignature + : '[' identifier ':' (Number | String) ']' typeAnnotation + ; + +methodSignature + : propertyName '?'? callSignature + ; + +typeAliasDeclaration + : Export? 'type' identifier typeParameters? '=' type_ eos + ; + +constructorDeclaration + : accessibilityModifier? Constructor '(' formalParameterList? ')' ( + ('{' functionBody '}') + | SemiColon + )? + ; + +// A.5 Interface + +interfaceDeclaration + : Export? Declare? Interface identifier typeParameters? interfaceExtendsClause? objectType SemiColon? + ; + +interfaceExtendsClause + : Extends classOrInterfaceTypeList + ; + +classOrInterfaceTypeList + : typeReference (',' typeReference)* + ; + +// A.7 Interface + +enumDeclaration + : Const? Enum identifier '{' enumBody? '}' + ; + +enumBody + : enumMemberList ','? + ; + +enumMemberList + : enumMember (',' enumMember)* + ; + +enumMember + : propertyName ('=' singleExpression)? + ; + +// A.8 Namespaces + +namespaceDeclaration + : Declare? Namespace namespaceName '{' statementList? '}' + ; + +namespaceName + : identifier ('.'+ identifier)* + ; + +importAliasDeclaration + : identifier '=' namespaceName SemiColon + ; + +// Ext.2 Additions to 1.8: Decorators + +decoratorList + : decorator+ + ; + +decorator + : '@' (decoratorMemberExpression | decoratorCallExpression) + ; + +decoratorMemberExpression + : identifier + | decoratorMemberExpression '.' identifierName + | '(' singleExpression ')' + ; + +decoratorCallExpression + : decoratorMemberExpression arguments + ; + +// ECMAPart +program + : sourceElements? EOF + ; + +sourceElement + : Export? statement + ; + +statement + : block + | variableStatement + | importStatement + | exportStatement + | emptyStatement_ + | abstractDeclaration //ADDED + | classDeclaration + | functionDeclaration + | expressionStatement + | interfaceDeclaration //ADDED + | namespaceDeclaration //ADDED + | ifStatement + | iterationStatement + | continueStatement + | breakStatement + | returnStatement + | yieldStatement + | withStatement + | labelledStatement + | switchStatement + | throwStatement + | tryStatement + | debuggerStatement + | arrowFunctionDeclaration + | generatorFunctionDeclaration + | typeAliasDeclaration //ADDED + | enumDeclaration //ADDED + | Export statement + ; + +block + : '{' statementList? '}' + ; + +statementList + : statement+ + ; + +abstractDeclaration + : Abstract (identifier callSignature | variableStatement) eos + ; + +importStatement + : Import importFromBlock + ; + +importFromBlock + : importDefault? (importNamespace | importModuleItems) importFrom eos + | StringLiteral eos + ; + +importModuleItems + : '{' (importAliasName ',')* (importAliasName ','?)? '}' + ; + +importAliasName + : moduleExportName (As importedBinding)? + ; + +moduleExportName + : identifierName + | StringLiteral + ; + +// yield and await are permitted as BindingIdentifier in the grammar +importedBinding + : Identifier + | Yield + | Await + ; + +importDefault + : aliasName ',' + ; + +importNamespace + : ('*' | identifierName) (As identifierName)? + ; + +importFrom + : From StringLiteral + ; + +aliasName + : identifierName (As identifierName)? + ; + +exportStatement + : Export Default? (exportFromBlock | declaration) eos # ExportDeclaration + | Export Default singleExpression eos # ExportDefaultDeclaration + ; + +exportFromBlock + : importNamespace importFrom eos + | exportModuleItems importFrom? eos + ; + +exportModuleItems + : '{' (exportAliasName ',')* (exportAliasName ','?)? '}' + ; + +exportAliasName + : moduleExportName (As moduleExportName)? + ; + +declaration + : variableStatement + | classDeclaration + | functionDeclaration + ; + +variableStatement + : bindingPattern typeAnnotation? initializer SemiColon? + | accessibilityModifier? varModifier? ReadOnly? variableDeclarationList SemiColon? + | Declare varModifier? variableDeclarationList SemiColon? + ; + +variableDeclarationList + : variableDeclaration (',' variableDeclaration)* + ; + +variableDeclaration + : (identifierOrKeyWord | arrayLiteral | objectLiteral) typeAnnotation? singleExpression? ( + '=' typeParameters? singleExpression + )? // ECMAScript 6: Array & Object Matching + ; + +emptyStatement_ + : SemiColon + ; + +expressionStatement + : {this.notOpenBraceAndNotFunctionAndNotInterface()}? expressionSequence SemiColon? + ; + +ifStatement + : If '(' expressionSequence ')' statement (Else statement)? + ; + +iterationStatement + : Do statement While '(' expressionSequence ')' eos # DoStatement + | While '(' expressionSequence ')' statement # WhileStatement + | For '(' expressionSequence? SemiColon expressionSequence? SemiColon expressionSequence? ')' statement # ForStatement + | For '(' varModifier variableDeclarationList SemiColon expressionSequence? SemiColon expressionSequence? ')' statement # ForVarStatement + | For '(' singleExpression In expressionSequence ')' statement # ForInStatement + | For '(' varModifier variableDeclaration In expressionSequence ')' statement # ForVarInStatement + | For Await? '(' singleExpression identifier {this.p("of")}? expressionSequence (As type_)? ')' statement # ForOfStatement + | For Await? '(' varModifier variableDeclaration identifier {this.p("of")}? expressionSequence (As type_)? ')' statement # ForVarOfStatement + ; + +varModifier + : Var + | Let + | Const + ; + +continueStatement + : Continue ({this.notLineTerminator()}? identifier)? eos + ; + +breakStatement + : Break ({this.notLineTerminator()}? identifier)? eos + ; + +returnStatement + : Return ({this.notLineTerminator()}? expressionSequence)? eos + ; + +yieldStatement + : (Yield | YieldStar) ({this.notLineTerminator()}? expressionSequence)? eos + ; + +withStatement + : With '(' expressionSequence ')' statement + ; + +switchStatement + : Switch '(' expressionSequence ')' caseBlock + ; + +caseBlock + : '{' caseClauses? (defaultClause caseClauses?)? '}' + ; + +caseClauses + : caseClause+ + ; + +caseClause + : Case expressionSequence ':' statementList? + ; + +defaultClause + : Default ':' statementList? + ; + +labelledStatement + : identifier ':' statement + ; + +throwStatement + : Throw {this.notLineTerminator()}? expressionSequence eos + ; + +tryStatement + : Try block (catchProduction finallyProduction? | finallyProduction) + ; + +catchProduction + : Catch ('(' identifier typeAnnotation? ')')? block + ; + +finallyProduction + : Finally block + ; + +debuggerStatement + : Debugger eos + ; + +functionDeclaration + : Async? Function_ '*'? identifier callSignature (('{' functionBody '}') | SemiColon) + ; + +//Ovveride ECMA +classDeclaration + : decoratorList? (Export Default?)? Abstract? Class identifier typeParameters? classHeritage classTail + ; + +classHeritage + : classExtendsClause? implementsClause? + ; + +classTail + : '{' classElement* '}' + ; + +classExtendsClause + : Extends typeReference + ; + +implementsClause + : Implements classOrInterfaceTypeList + ; + +// Classes modified +classElement + : constructorDeclaration + | decoratorList? propertyMemberDeclaration + | indexMemberDeclaration + | statement + ; + +propertyMemberDeclaration + : propertyMemberBase propertyName '?'? typeAnnotation? initializer? SemiColon # PropertyDeclarationExpression + | propertyMemberBase propertyName callSignature (('{' functionBody '}') | SemiColon) # MethodDeclarationExpression + | propertyMemberBase (getAccessor | setAccessor) # GetterSetterDeclarationExpression + | abstractDeclaration # AbstractMemberDeclaration + ; + +propertyMemberBase + : accessibilityModifier? Async? Static? ReadOnly? + ; + +indexMemberDeclaration + : indexSignature SemiColon + ; + +generatorMethod + : (Async {this.notLineTerminator()}?)? '*'? propertyName '(' formalParameterList? ')' '{' functionBody '}' + ; + +generatorFunctionDeclaration + : Async? Function_ '*' identifier? '(' formalParameterList? ')' '{' functionBody '}' + ; + +generatorBlock + : '{' generatorDefinition (',' generatorDefinition)* ','? '}' + ; + +generatorDefinition + : '*' iteratorDefinition + ; + +iteratorBlock + : '{' iteratorDefinition (',' iteratorDefinition)* ','? '}' + ; + +iteratorDefinition + : '[' singleExpression ']' '(' formalParameterList? ')' '{' functionBody '}' + ; + +classElementName + : propertyName + | privateIdentifier + ; + +privateIdentifier + : '#' identifierName + ; + +formalParameterList + : formalParameterArg (',' formalParameterArg)* (',' lastFormalParameterArg)? ','? + | lastFormalParameterArg + | arrayLiteral // ECMAScript 6: Parameter Context Matching + | objectLiteral (':' formalParameterList)? // ECMAScript 6: Parameter Context Matching + ; + +formalParameterArg + : decorator? accessibilityModifier? assignable '?'? typeAnnotation? ( + '=' singleExpression + )? // ECMAScript 6: Initialization + ; + +lastFormalParameterArg // ECMAScript 6: Rest Parameter + : Ellipsis identifier typeAnnotation? + ; + +functionBody + : sourceElements? + ; + +sourceElements + : sourceElement+ + ; + +arrayLiteral + : ('[' elementList ']') + ; + +// JavaScript supports arrasys like [,,1,2,,]. +elementList + : ','* arrayElement? (','+ arrayElement) * ','* // Yes, everything is optional + ; + +arrayElement // ECMAScript 6: Spread Operator + : Ellipsis? (singleExpression | identifier) ','? + ; + +objectLiteral + : '{' (propertyAssignment (',' propertyAssignment)* ','?)? '}' + ; + +// MODIFIED +propertyAssignment + : propertyName (':' | '=') singleExpression # PropertyExpressionAssignment + | '[' singleExpression ']' ':' singleExpression # ComputedPropertyExpressionAssignment + | getAccessor # PropertyGetter + | setAccessor # PropertySetter + | generatorMethod # MethodProperty + | identifierOrKeyWord # PropertyShorthand + | Ellipsis? singleExpression # SpreadOperator + | restParameter # RestParameterInObject + ; + +getAccessor + : getter '(' ')' typeAnnotation? '{' functionBody '}' + ; + +setAccessor + : setter '(' formalParameterList? ')' '{' functionBody '}' + ; + +propertyName + : identifierName + | StringLiteral + | numericLiteral + | '[' singleExpression ']' + ; + +arguments + : '(' (argumentList ','?)? ')' + ; + +argumentList + : argument (',' argument)* + ; + +argument // ECMAScript 6: Spread Operator + : Ellipsis? (singleExpression | identifier) + ; + +expressionSequence + : singleExpression (',' singleExpression)* + ; + +singleExpression + : anonymousFunction # FunctionExpression + | Class identifier? typeParameters? classHeritage classTail # ClassExpression + | singleExpression '?.'? '[' expressionSequence ']' # MemberIndexExpression + | singleExpression '?.' singleExpression # OptionalChainExpression + | singleExpression '!'? '.' '#'? identifierName typeGeneric? # MemberDotExpression + | singleExpression '?'? '.' '#'? identifierName typeGeneric? # MemberDotExpression + // Split to try `new Date()` first, then `new Date`. + | New singleExpression typeArguments? arguments # NewExpression + | New singleExpression typeArguments? # NewExpression + | singleExpression arguments # ArgumentsExpression + | singleExpression {this.notLineTerminator()}? '++' # PostIncrementExpression + | singleExpression {this.notLineTerminator()}? '--' # PostDecreaseExpression + | Delete singleExpression # DeleteExpression + | Void singleExpression # VoidExpression + | Typeof singleExpression # TypeofExpression + | '++' singleExpression # PreIncrementExpression + | '--' singleExpression # PreDecreaseExpression + | '+' singleExpression # UnaryPlusExpression + | '-' singleExpression # UnaryMinusExpression + | '~' singleExpression # BitNotExpression + | '!' singleExpression # NotExpression + | Await singleExpression # AwaitExpression + | singleExpression '**' singleExpression # PowerExpression + | singleExpression ('*' | '/' | '%') singleExpression # MultiplicativeExpression + | singleExpression ('+' | '-') singleExpression # AdditiveExpression + | singleExpression '??' singleExpression # CoalesceExpression + | singleExpression ('<<' | '>' '>' | '>' '>' '>') singleExpression # BitShiftExpression + | singleExpression ('<' | '>' | '<=' | '>=') singleExpression # RelationalExpression + | singleExpression Instanceof singleExpression # InstanceofExpression + | singleExpression In singleExpression # InExpression + | singleExpression ('==' | '!=' | '===' | '!==') singleExpression # EqualityExpression + | singleExpression '&' singleExpression # BitAndExpression + | singleExpression '^' singleExpression # BitXOrExpression + | singleExpression '|' singleExpression # BitOrExpression + | singleExpression '&&' singleExpression # LogicalAndExpression + | singleExpression '||' singleExpression # LogicalOrExpression + | singleExpression '?' singleExpression ':' singleExpression # TernaryExpression + | singleExpression '=' singleExpression # AssignmentExpression + | singleExpression assignmentOperator singleExpression # AssignmentOperatorExpression + | singleExpression templateStringLiteral # TemplateStringExpression // ECMAScript 6 + | iteratorBlock # IteratorsExpression // ECMAScript 6 + | generatorBlock # GeneratorsExpression // ECMAScript 6 + | generatorFunctionDeclaration # GeneratorsFunctionExpression // ECMAScript 6 + | yieldStatement # YieldExpression // ECMAScript 6 + | This # ThisExpression + | identifierName singleExpression? # IdentifierExpression + | Super # SuperExpression + | literal # LiteralExpression + | arrayLiteral # ArrayLiteralExpression + | objectLiteral # ObjectLiteralExpression + | '(' expressionSequence ')' # ParenthesizedExpression + | typeArguments expressionSequence? # GenericTypes + | singleExpression As asExpression # CastAsExpression +// TypeScript v2.0 + | singleExpression '!' # NonNullAssertionExpression + ; + +asExpression + : predefinedType ('[' ']')? + | singleExpression + ; + +assignable + : identifier + | keyword + | arrayLiteral + | objectLiteral + ; + +anonymousFunction + : functionDeclaration + | Async? Function_ '*'? '(' formalParameterList? ')' typeAnnotation? '{' functionBody '}' + | arrowFunctionDeclaration + ; + +arrowFunctionDeclaration + : Async? arrowFunctionParameters typeAnnotation? '=>' arrowFunctionBody + ; + +arrowFunctionParameters + : propertyName + | '(' formalParameterList? ')' + ; + +arrowFunctionBody + : singleExpression + | '{' functionBody '}' + ; + +assignmentOperator + : '*=' + | '/=' + | '%=' + | '+=' + | '-=' + | '<<=' + | '>>=' + | '>>>=' + | '&=' + | '^=' + | '|=' + | '**=' + | '??=' + ; + +literal + : NullLiteral + | BooleanLiteral + | StringLiteral + | templateStringLiteral + | RegularExpressionLiteral + | numericLiteral + | bigintLiteral + ; + +templateStringLiteral + : BackTick templateStringAtom* BackTick + ; + +templateStringAtom + : TemplateStringAtom + | TemplateStringStartExpression singleExpression TemplateCloseBrace + | TemplateStringEscapeAtom + ; + +numericLiteral + : DecimalLiteral + | HexIntegerLiteral + | OctalIntegerLiteral + | OctalIntegerLiteral2 + | BinaryIntegerLiteral + ; + +bigintLiteral + : BigDecimalIntegerLiteral + | BigHexIntegerLiteral + | BigOctalIntegerLiteral + | BigBinaryIntegerLiteral + ; + +getter + : {this.n("get")}? identifier classElementName + ; + +setter + : {this.n("set")}? identifier classElementName + ; + +identifierName + : identifier + | reservedWord + ; + +identifier + : Identifier + | Async + | As + | From + | Yield + | Of + | Any + | Any + | Number + | Boolean + | String + | Unique + | Symbol + | Never + | Undefined + | Object + | KeyOf + | TypeAlias + | Constructor + | Namespace + | Abstract + ; + +identifierOrKeyWord + : identifier + | TypeAlias + | Require + ; + +reservedWord + : keyword + | NullLiteral + | BooleanLiteral + ; + +keyword + : Break + | Do + | Instanceof + | Typeof + | Case + | Else + | New + | Var + | Catch + | Finally + | Return + | Void + | Continue + | For + | Switch + | While + | Debugger + | Function_ + | This + | With + | Default + | If + | Throw + | Delete + | In + | Try + | Class + | Enum + | Extends + | Super + | Const + | Export + | Import + | Implements + | Let + | Private + | Public + | Interface + | Package + | Protected + | Static + | Yield + | Async + | Await + | ReadOnly + | From + | As + | Require + | TypeAlias + | String + | Boolean + | Number + | Module + ; + +eos + : SemiColon + | EOF + | {this.lineTerminatorAhead()}? + | {this.closeBrace()}? + ; \ No newline at end of file -- Gitee From f85acd23da7625a65f4bae7d140bb124f10b134b Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:13:45 +0800 Subject: [PATCH 16/26] refatory ts parser Signed-off-by: wangshi --- .../antlr/typescript/TypeScriptParser.tokens | 271 ++++++++++++++++++ .../typescript/TypeScriptParserBase.java | 137 +++++++++ 2 files changed, 408 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.tokens create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBase.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.tokens b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.tokens new file mode 100644 index 00000000..18922f93 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParser.tokens @@ -0,0 +1,271 @@ +MultiLineComment=1 +SingleLineComment=2 +RegularExpressionLiteral=3 +OpenBracket=4 +CloseBracket=5 +OpenParen=6 +CloseParen=7 +OpenBrace=8 +TemplateCloseBrace=9 +CloseBrace=10 +SemiColon=11 +Comma=12 +Assign=13 +QuestionMark=14 +QuestionMarkDot=15 +Colon=16 +Ellipsis=17 +Dot=18 +PlusPlus=19 +MinusMinus=20 +Plus=21 +Minus=22 +BitNot=23 +Not=24 +Multiply=25 +Divide=26 +Modulus=27 +Power=28 +NullCoalesce=29 +Hashtag=30 +LeftShiftArithmetic=31 +LessThan=32 +MoreThan=33 +LessThanEquals=34 +GreaterThanEquals=35 +Equals_=36 +NotEquals=37 +IdentityEquals=38 +IdentityNotEquals=39 +BitAnd=40 +BitXOr=41 +BitOr=42 +And=43 +Or=44 +MultiplyAssign=45 +DivideAssign=46 +ModulusAssign=47 +PlusAssign=48 +MinusAssign=49 +LeftShiftArithmeticAssign=50 +RightShiftArithmeticAssign=51 +RightShiftLogicalAssign=52 +BitAndAssign=53 +BitXorAssign=54 +BitOrAssign=55 +PowerAssign=56 +NullishCoalescingAssign=57 +ARROW=58 +NullLiteral=59 +BooleanLiteral=60 +DecimalLiteral=61 +HexIntegerLiteral=62 +OctalIntegerLiteral=63 +OctalIntegerLiteral2=64 +BinaryIntegerLiteral=65 +BigHexIntegerLiteral=66 +BigOctalIntegerLiteral=67 +BigBinaryIntegerLiteral=68 +BigDecimalIntegerLiteral=69 +Break=70 +Do=71 +Instanceof=72 +Typeof=73 +Case=74 +Else=75 +New=76 +Var=77 +Catch=78 +Finally=79 +Return=80 +Void=81 +Continue=82 +For=83 +Switch=84 +While=85 +Debugger=86 +Function_=87 +This=88 +With=89 +Default=90 +If=91 +Throw=92 +Delete=93 +In=94 +Try=95 +As=96 +From=97 +ReadOnly=98 +Async=99 +Await=100 +Yield=101 +YieldStar=102 +Class=103 +Enum=104 +Extends=105 +Super=106 +Const=107 +Export=108 +Import=109 +Implements=110 +Let=111 +Private=112 +Public=113 +Interface=114 +Package=115 +Protected=116 +Static=117 +Any=118 +Number=119 +Never=120 +Boolean=121 +String=122 +Unique=123 +Symbol=124 +Undefined=125 +Object=126 +Of=127 +KeyOf=128 +TypeAlias=129 +Constructor=130 +Namespace=131 +Require=132 +Module=133 +Declare=134 +Abstract=135 +Is=136 +At=137 +Identifier=138 +StringLiteral=139 +BackTick=140 +WhiteSpaces=141 +LineTerminator=142 +HtmlComment=143 +CDataComment=144 +UnexpectedCharacter=145 +TemplateStringEscapeAtom=146 +TemplateStringStartExpression=147 +TemplateStringAtom=148 +'['=4 +']'=5 +'('=6 +')'=7 +'{'=8 +'}'=10 +';'=11 +','=12 +'='=13 +'?'=14 +'?.'=15 +':'=16 +'...'=17 +'.'=18 +'++'=19 +'--'=20 +'+'=21 +'-'=22 +'~'=23 +'!'=24 +'*'=25 +'/'=26 +'%'=27 +'**'=28 +'??'=29 +'#'=30 +'<<'=31 +'<'=32 +'>'=33 +'<='=34 +'>='=35 +'=='=36 +'!='=37 +'==='=38 +'!=='=39 +'&'=40 +'^'=41 +'|'=42 +'&&'=43 +'||'=44 +'*='=45 +'/='=46 +'%='=47 +'+='=48 +'-='=49 +'<<='=50 +'>>='=51 +'>>>='=52 +'&='=53 +'^='=54 +'|='=55 +'**='=56 +'??='=57 +'=>'=58 +'null'=59 +'break'=70 +'do'=71 +'instanceof'=72 +'typeof'=73 +'case'=74 +'else'=75 +'new'=76 +'var'=77 +'catch'=78 +'finally'=79 +'return'=80 +'void'=81 +'continue'=82 +'for'=83 +'switch'=84 +'while'=85 +'debugger'=86 +'function'=87 +'this'=88 +'with'=89 +'default'=90 +'if'=91 +'throw'=92 +'delete'=93 +'in'=94 +'try'=95 +'as'=96 +'from'=97 +'readonly'=98 +'async'=99 +'await'=100 +'yield'=101 +'yield*'=102 +'class'=103 +'enum'=104 +'extends'=105 +'super'=106 +'const'=107 +'export'=108 +'import'=109 +'implements'=110 +'let'=111 +'private'=112 +'public'=113 +'interface'=114 +'package'=115 +'protected'=116 +'static'=117 +'any'=118 +'number'=119 +'never'=120 +'boolean'=121 +'string'=122 +'unique'=123 +'symbol'=124 +'undefined'=125 +'object'=126 +'of'=127 +'keyof'=128 +'type'=129 +'constructor'=130 +'namespace'=131 +'require'=132 +'module'=133 +'declare'=134 +'abstract'=135 +'is'=136 +'@'=137 diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBase.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBase.java new file mode 100644 index 00000000..686c9f3b --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBase.java @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +import org.antlr.v4.runtime.*; + +/** + * All parser methods that used in grammar (p, prev, notLineTerminator, etc.) + * should start with lower case char similar to parser rules. + */ +public abstract class TypeScriptParserBase extends Parser +{ + public TypeScriptParserBase(TokenStream input) { + super(input); + } + + /** + * Short form for prev(String str) + */ + protected boolean p(String str) { + return prev(str); + } + + /** + * Whether the previous token value equals to @param str + */ + protected boolean prev(String str) { + return _input.LT(-1).getText().equals(str); + } + + /** + * Short form for next(String str) + */ + protected boolean n(String str) { + return next(str); + } + + /** + * Whether the next token value equals to @param str + */ + protected boolean next(String str) { + return _input.LT(1).getText().equals(str); + } + + protected boolean notLineTerminator() { + return !here(TypeScriptParser.LineTerminator); + } + + protected boolean notOpenBraceAndNotFunctionAndNotInterface() { + int nextTokenType = _input.LT(1).getType(); + return nextTokenType != TypeScriptParser.OpenBrace && nextTokenType != TypeScriptParser.Function_ + && nextTokenType != TypeScriptParser.Interface; + } + + protected boolean closeBrace() { + return _input.LT(1).getType() == TypeScriptParser.CloseBrace; + } + + /** + * Returns {@code true} iff on the current index of the parser's + * token stream a token of the given {@code type} exists on the + * {@code HIDDEN} channel. + * + * @param type + * the type of the token on the {@code HIDDEN} channel + * to check. + * + * @return {@code true} iff on the current index of the parser's + * token stream a token of the given {@code type} exists on the + * {@code HIDDEN} channel. + */ + private boolean here(final int type) { + + // Get the token ahead of the current index. + int possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 1; + Token ahead = _input.get(possibleIndexEosToken); + + // Check if the token resides on the HIDDEN channel and if it's of the + // provided type. + return (ahead.getChannel() == Lexer.HIDDEN) && (ahead.getType() == type); + } + + /** + * Returns {@code true} iff on the current index of the parser's + * token stream a token exists on the {@code HIDDEN} channel which + * either is a line terminator, or is a multi line comment that + * contains a line terminator. + * + * @return {@code true} iff on the current index of the parser's + * token stream a token exists on the {@code HIDDEN} channel which + * either is a line terminator, or is a multi line comment that + * contains a line terminator. + */ + protected boolean lineTerminatorAhead() { + + // Get the token ahead of the current index. + int possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 1; + Token ahead = _input.get(possibleIndexEosToken); + + if (ahead.getChannel() != Lexer.HIDDEN) { + // We're only interested in tokens on the HIDDEN channel. + return false; + } + + if (ahead.getType() == TypeScriptParser.LineTerminator) { + // There is definitely a line terminator ahead. + return true; + } + + if (ahead.getType() == TypeScriptParser.WhiteSpaces) { + // Get the token ahead of the current whitespaces. + possibleIndexEosToken = this.getCurrentToken().getTokenIndex() - 2; + ahead = _input.get(possibleIndexEosToken); + } + + // Get the token's text and type. + String text = ahead.getText(); + int type = ahead.getType(); + + // Check if the token is, or contains a line terminator. + return (type == TypeScriptParser.MultiLineComment && (text.contains("\r") || text.contains("\n"))) || + (type == TypeScriptParser.LineTerminator); + } +} \ No newline at end of file -- Gitee From 6230359a245077a27f93317abbee1eb8ad785ac3 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:14:13 +0800 Subject: [PATCH 17/26] refatory ts parser visitor Signed-off-by: wangshi --- .../TypeScriptParserBaseVisitor.java | 1688 +++++++++++++++++ 1 file changed, 1688 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseVisitor.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseVisitor.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseVisitor.java new file mode 100644 index 00000000..5da5229a --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseVisitor.java @@ -0,0 +1,1688 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript;// Generated from TypeScriptParser.g4 by ANTLR 4.13.2 +import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; + +/** + * This class provides an empty implementation of {@link TypeScriptParserVisitor}, + * which can be extended to create a visitor which only needs to handle a subset + * of the available methods. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +@SuppressWarnings("CheckReturnValue") +public class TypeScriptParserBaseVisitor extends AbstractParseTreeVisitor implements TypeScriptParserVisitor { + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInitializer(TypeScriptParser.InitializerContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBindingPattern(TypeScriptParser.BindingPatternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeParameters(TypeScriptParser.TypeParametersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeParameterList(TypeScriptParser.TypeParameterListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeParameter(TypeScriptParser.TypeParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConstraint(TypeScriptParser.ConstraintContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeArguments(TypeScriptParser.TypeArgumentsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeArgumentList(TypeScriptParser.TypeArgumentListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeArgument(TypeScriptParser.TypeArgumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitType_(TypeScriptParser.Type_Context ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIntersection(TypeScriptParser.IntersectionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrimary(TypeScriptParser.PrimaryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnion(TypeScriptParser.UnionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRedefinitionOfType(TypeScriptParser.RedefinitionOfTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPredefinedPrimType(TypeScriptParser.PredefinedPrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrayPrimType(TypeScriptParser.ArrayPrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParenthesizedPrimType(TypeScriptParser.ParenthesizedPrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitThisPrimType(TypeScriptParser.ThisPrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTuplePrimType(TypeScriptParser.TuplePrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKeyOfType(TypeScriptParser.KeyOfTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitObjectPrimType(TypeScriptParser.ObjectPrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReferencePrimType(TypeScriptParser.ReferencePrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitQueryPrimType(TypeScriptParser.QueryPrimTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPredefinedType(TypeScriptParser.PredefinedTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeReference(TypeScriptParser.TypeReferenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeGeneric(TypeScriptParser.TypeGenericContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeName(TypeScriptParser.TypeNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitObjectType(TypeScriptParser.ObjectTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeBody(TypeScriptParser.TypeBodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeMemberList(TypeScriptParser.TypeMemberListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeMember(TypeScriptParser.TypeMemberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrayType(TypeScriptParser.ArrayTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTupleType(TypeScriptParser.TupleTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTupleElementTypes(TypeScriptParser.TupleElementTypesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunctionType(TypeScriptParser.FunctionTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConstructorType(TypeScriptParser.ConstructorTypeContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeQuery(TypeScriptParser.TypeQueryContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeQueryExpression(TypeScriptParser.TypeQueryExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertySignatur(TypeScriptParser.PropertySignaturContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeAnnotation(TypeScriptParser.TypeAnnotationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCallSignature(TypeScriptParser.CallSignatureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParameterList(TypeScriptParser.ParameterListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRequiredParameterList(TypeScriptParser.RequiredParameterListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParameter(TypeScriptParser.ParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOptionalParameter(TypeScriptParser.OptionalParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRestParameter(TypeScriptParser.RestParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRequiredParameter(TypeScriptParser.RequiredParameterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAccessibilityModifier(TypeScriptParser.AccessibilityModifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifierOrPattern(TypeScriptParser.IdentifierOrPatternContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConstructSignature(TypeScriptParser.ConstructSignatureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIndexSignature(TypeScriptParser.IndexSignatureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMethodSignature(TypeScriptParser.MethodSignatureContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInterfaceExtendsClause(TypeScriptParser.InterfaceExtendsClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassOrInterfaceTypeList(TypeScriptParser.ClassOrInterfaceTypeListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnumBody(TypeScriptParser.EnumBodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnumMemberList(TypeScriptParser.EnumMemberListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEnumMember(TypeScriptParser.EnumMemberContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNamespaceName(TypeScriptParser.NamespaceNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportAliasDeclaration(TypeScriptParser.ImportAliasDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDecoratorList(TypeScriptParser.DecoratorListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDecorator(TypeScriptParser.DecoratorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDecoratorMemberExpression(TypeScriptParser.DecoratorMemberExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDecoratorCallExpression(TypeScriptParser.DecoratorCallExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitProgram(TypeScriptParser.ProgramContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSourceElement(TypeScriptParser.SourceElementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatement(TypeScriptParser.StatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBlock(TypeScriptParser.BlockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitStatementList(TypeScriptParser.StatementListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportStatement(TypeScriptParser.ImportStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportFromBlock(TypeScriptParser.ImportFromBlockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportModuleItems(TypeScriptParser.ImportModuleItemsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportAliasName(TypeScriptParser.ImportAliasNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitModuleExportName(TypeScriptParser.ModuleExportNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportedBinding(TypeScriptParser.ImportedBindingContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportDefault(TypeScriptParser.ImportDefaultContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportNamespace(TypeScriptParser.ImportNamespaceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImportFrom(TypeScriptParser.ImportFromContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAliasName(TypeScriptParser.AliasNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExportDefaultDeclaration(TypeScriptParser.ExportDefaultDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExportFromBlock(TypeScriptParser.ExportFromBlockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExportModuleItems(TypeScriptParser.ExportModuleItemsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExportAliasName(TypeScriptParser.ExportAliasNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeclaration(TypeScriptParser.DeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVariableStatement(TypeScriptParser.VariableStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVariableDeclarationList(TypeScriptParser.VariableDeclarationListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEmptyStatement_(TypeScriptParser.EmptyStatement_Context ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpressionStatement(TypeScriptParser.ExpressionStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIfStatement(TypeScriptParser.IfStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDoStatement(TypeScriptParser.DoStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWhileStatement(TypeScriptParser.WhileStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForStatement(TypeScriptParser.ForStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForVarStatement(TypeScriptParser.ForVarStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForInStatement(TypeScriptParser.ForInStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForVarInStatement(TypeScriptParser.ForVarInStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForOfStatement(TypeScriptParser.ForOfStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitForVarOfStatement(TypeScriptParser.ForVarOfStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVarModifier(TypeScriptParser.VarModifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitContinueStatement(TypeScriptParser.ContinueStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBreakStatement(TypeScriptParser.BreakStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReturnStatement(TypeScriptParser.ReturnStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitYieldStatement(TypeScriptParser.YieldStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitWithStatement(TypeScriptParser.WithStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSwitchStatement(TypeScriptParser.SwitchStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCaseBlock(TypeScriptParser.CaseBlockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCaseClauses(TypeScriptParser.CaseClausesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCaseClause(TypeScriptParser.CaseClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDefaultClause(TypeScriptParser.DefaultClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLabelledStatement(TypeScriptParser.LabelledStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitThrowStatement(TypeScriptParser.ThrowStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTryStatement(TypeScriptParser.TryStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCatchProduction(TypeScriptParser.CatchProductionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFinallyProduction(TypeScriptParser.FinallyProductionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDebuggerStatement(TypeScriptParser.DebuggerStatementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassHeritage(TypeScriptParser.ClassHeritageContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassTail(TypeScriptParser.ClassTailContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassExtendsClause(TypeScriptParser.ClassExtendsClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitImplementsClause(TypeScriptParser.ImplementsClauseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassElement(TypeScriptParser.ClassElementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetterSetterDeclarationExpression(TypeScriptParser.GetterSetterDeclarationExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAbstractMemberDeclaration(TypeScriptParser.AbstractMemberDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertyMemberBase(TypeScriptParser.PropertyMemberBaseContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIndexMemberDeclaration(TypeScriptParser.IndexMemberDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneratorMethod(TypeScriptParser.GeneratorMethodContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneratorFunctionDeclaration(TypeScriptParser.GeneratorFunctionDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneratorBlock(TypeScriptParser.GeneratorBlockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneratorDefinition(TypeScriptParser.GeneratorDefinitionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIteratorBlock(TypeScriptParser.IteratorBlockContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIteratorDefinition(TypeScriptParser.IteratorDefinitionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassElementName(TypeScriptParser.ClassElementNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPrivateIdentifier(TypeScriptParser.PrivateIdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFormalParameterList(TypeScriptParser.FormalParameterListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFormalParameterArg(TypeScriptParser.FormalParameterArgContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLastFormalParameterArg(TypeScriptParser.LastFormalParameterArgContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunctionBody(TypeScriptParser.FunctionBodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSourceElements(TypeScriptParser.SourceElementsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrayLiteral(TypeScriptParser.ArrayLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitElementList(TypeScriptParser.ElementListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrayElement(TypeScriptParser.ArrayElementContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitObjectLiteral(TypeScriptParser.ObjectLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertyExpressionAssignment(TypeScriptParser.PropertyExpressionAssignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitComputedPropertyExpressionAssignment(TypeScriptParser.ComputedPropertyExpressionAssignmentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertyGetter(TypeScriptParser.PropertyGetterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertySetter(TypeScriptParser.PropertySetterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMethodProperty(TypeScriptParser.MethodPropertyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertyShorthand(TypeScriptParser.PropertyShorthandContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSpreadOperator(TypeScriptParser.SpreadOperatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRestParameterInObject(TypeScriptParser.RestParameterInObjectContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetAccessor(TypeScriptParser.GetAccessorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetAccessor(TypeScriptParser.SetAccessorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPropertyName(TypeScriptParser.PropertyNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArguments(TypeScriptParser.ArgumentsContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArgumentList(TypeScriptParser.ArgumentListContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArgument(TypeScriptParser.ArgumentContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExpressionSequence(TypeScriptParser.ExpressionSequenceContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTemplateStringExpression(TypeScriptParser.TemplateStringExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneratorsExpression(TypeScriptParser.GeneratorsExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPowerExpression(TypeScriptParser.PowerExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInExpression(TypeScriptParser.InExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGenericTypes(TypeScriptParser.GenericTypesContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitOptionalChainExpression(TypeScriptParser.OptionalChainExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArgumentsExpression(TypeScriptParser.ArgumentsExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitThisExpression(TypeScriptParser.ThisExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTypeofExpression(TypeScriptParser.TypeofExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGeneratorsFunctionExpression(TypeScriptParser.GeneratorsFunctionExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEqualityExpression(TypeScriptParser.EqualityExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBitXOrExpression(TypeScriptParser.BitXOrExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCastAsExpression(TypeScriptParser.CastAsExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMultiplicativeExpression(TypeScriptParser.MultiplicativeExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBitShiftExpression(TypeScriptParser.BitShiftExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAdditiveExpression(TypeScriptParser.AdditiveExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitRelationalExpression(TypeScriptParser.RelationalExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBitNotExpression(TypeScriptParser.BitNotExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNewExpression(TypeScriptParser.NewExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLiteralExpression(TypeScriptParser.LiteralExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrayLiteralExpression(TypeScriptParser.ArrayLiteralExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMemberDotExpression(TypeScriptParser.MemberDotExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitMemberIndexExpression(TypeScriptParser.MemberIndexExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBitAndExpression(TypeScriptParser.BitAndExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBitOrExpression(TypeScriptParser.BitOrExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAssignmentOperatorExpression(TypeScriptParser.AssignmentOperatorExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitVoidExpression(TypeScriptParser.VoidExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTernaryExpression(TypeScriptParser.TernaryExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLogicalAndExpression(TypeScriptParser.LogicalAndExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPreIncrementExpression(TypeScriptParser.PreIncrementExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitObjectLiteralExpression(TypeScriptParser.ObjectLiteralExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLogicalOrExpression(TypeScriptParser.LogicalOrExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNonNullAssertionExpression(TypeScriptParser.NonNullAssertionExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNotExpression(TypeScriptParser.NotExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPreDecreaseExpression(TypeScriptParser.PreDecreaseExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAwaitExpression(TypeScriptParser.AwaitExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitFunctionExpression(TypeScriptParser.FunctionExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnaryMinusExpression(TypeScriptParser.UnaryMinusExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAssignmentExpression(TypeScriptParser.AssignmentExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPostDecreaseExpression(TypeScriptParser.PostDecreaseExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitInstanceofExpression(TypeScriptParser.InstanceofExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitUnaryPlusExpression(TypeScriptParser.UnaryPlusExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitDeleteExpression(TypeScriptParser.DeleteExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIteratorsExpression(TypeScriptParser.IteratorsExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSuperExpression(TypeScriptParser.SuperExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitParenthesizedExpression(TypeScriptParser.ParenthesizedExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitPostIncrementExpression(TypeScriptParser.PostIncrementExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitYieldExpression(TypeScriptParser.YieldExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitClassExpression(TypeScriptParser.ClassExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifierExpression(TypeScriptParser.IdentifierExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitCoalesceExpression(TypeScriptParser.CoalesceExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAsExpression(TypeScriptParser.AsExpressionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAssignable(TypeScriptParser.AssignableContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAnonymousFunction(TypeScriptParser.AnonymousFunctionContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrowFunctionDeclaration(TypeScriptParser.ArrowFunctionDeclarationContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrowFunctionParameters(TypeScriptParser.ArrowFunctionParametersContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitArrowFunctionBody(TypeScriptParser.ArrowFunctionBodyContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitAssignmentOperator(TypeScriptParser.AssignmentOperatorContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitLiteral(TypeScriptParser.LiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTemplateStringLiteral(TypeScriptParser.TemplateStringLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitTemplateStringAtom(TypeScriptParser.TemplateStringAtomContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitNumericLiteral(TypeScriptParser.NumericLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitBigintLiteral(TypeScriptParser.BigintLiteralContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitGetter(TypeScriptParser.GetterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitSetter(TypeScriptParser.SetterContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifierName(TypeScriptParser.IdentifierNameContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifier(TypeScriptParser.IdentifierContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitIdentifierOrKeyWord(TypeScriptParser.IdentifierOrKeyWordContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitReservedWord(TypeScriptParser.ReservedWordContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitKeyword(TypeScriptParser.KeywordContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitEos(TypeScriptParser.EosContext ctx) { return visitChildren(ctx); } +} \ No newline at end of file -- Gitee From 18b639112f451b5df2115b20ee311785d43aac47 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:14:37 +0800 Subject: [PATCH 18/26] refatory ts parser visitor Signed-off-by: wangshi --- .../typescript/TypeScriptParserVisitor.java | 1535 +++++++++++++++++ 1 file changed, 1535 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserVisitor.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserVisitor.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserVisitor.java new file mode 100644 index 00000000..260c10c5 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserVisitor.java @@ -0,0 +1,1535 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript;// Generated from TypeScriptParser.g4 by ANTLR 4.13.2 +import org.antlr.v4.runtime.tree.ParseTreeVisitor; + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by {@link TypeScriptParser}. + * + * @param The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public interface TypeScriptParserVisitor extends ParseTreeVisitor { + /** + * Visit a parse tree produced by {@link TypeScriptParser#initializer}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInitializer(TypeScriptParser.InitializerContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#bindingPattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBindingPattern(TypeScriptParser.BindingPatternContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeParameters}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeParameters(TypeScriptParser.TypeParametersContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeParameterList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeParameterList(TypeScriptParser.TypeParameterListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeParameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeParameter(TypeScriptParser.TypeParameterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#constraint}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConstraint(TypeScriptParser.ConstraintContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeArguments}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeArguments(TypeScriptParser.TypeArgumentsContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeArgumentList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeArgumentList(TypeScriptParser.TypeArgumentListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeArgument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeArgument(TypeScriptParser.TypeArgumentContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#type_}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitType_(TypeScriptParser.Type_Context ctx); + /** + * Visit a parse tree produced by the {@code Intersection} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIntersection(TypeScriptParser.IntersectionContext ctx); + /** + * Visit a parse tree produced by the {@code Primary} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrimary(TypeScriptParser.PrimaryContext ctx); + /** + * Visit a parse tree produced by the {@code Union} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnion(TypeScriptParser.UnionContext ctx); + /** + * Visit a parse tree produced by the {@code RedefinitionOfType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRedefinitionOfType(TypeScriptParser.RedefinitionOfTypeContext ctx); + /** + * Visit a parse tree produced by the {@code PredefinedPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPredefinedPrimType(TypeScriptParser.PredefinedPrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code ArrayPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrayPrimType(TypeScriptParser.ArrayPrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code ParenthesizedPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesizedPrimType(TypeScriptParser.ParenthesizedPrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code ThisPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitThisPrimType(TypeScriptParser.ThisPrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code TuplePrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTuplePrimType(TypeScriptParser.TuplePrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code KeyOfType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKeyOfType(TypeScriptParser.KeyOfTypeContext ctx); + /** + * Visit a parse tree produced by the {@code ObjectPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitObjectPrimType(TypeScriptParser.ObjectPrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code ReferencePrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReferencePrimType(TypeScriptParser.ReferencePrimTypeContext ctx); + /** + * Visit a parse tree produced by the {@code QueryPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitQueryPrimType(TypeScriptParser.QueryPrimTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#predefinedType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPredefinedType(TypeScriptParser.PredefinedTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeReference}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeReference(TypeScriptParser.TypeReferenceContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeGeneric}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeGeneric(TypeScriptParser.TypeGenericContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeName(TypeScriptParser.TypeNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#objectType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitObjectType(TypeScriptParser.ObjectTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeBody}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeBody(TypeScriptParser.TypeBodyContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeMemberList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeMemberList(TypeScriptParser.TypeMemberListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeMember}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeMember(TypeScriptParser.TypeMemberContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arrayType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrayType(TypeScriptParser.ArrayTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#tupleType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTupleType(TypeScriptParser.TupleTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#tupleElementTypes}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTupleElementTypes(TypeScriptParser.TupleElementTypesContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#functionType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunctionType(TypeScriptParser.FunctionTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#constructorType}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConstructorType(TypeScriptParser.ConstructorTypeContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeQuery}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeQuery(TypeScriptParser.TypeQueryContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeQueryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeQueryExpression(TypeScriptParser.TypeQueryExpressionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#propertySignatur}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertySignatur(TypeScriptParser.PropertySignaturContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeAnnotation}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeAnnotation(TypeScriptParser.TypeAnnotationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#callSignature}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCallSignature(TypeScriptParser.CallSignatureContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#parameterList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParameterList(TypeScriptParser.ParameterListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#requiredParameterList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRequiredParameterList(TypeScriptParser.RequiredParameterListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#parameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParameter(TypeScriptParser.ParameterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#optionalParameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOptionalParameter(TypeScriptParser.OptionalParameterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#restParameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRestParameter(TypeScriptParser.RestParameterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#requiredParameter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRequiredParameter(TypeScriptParser.RequiredParameterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#accessibilityModifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAccessibilityModifier(TypeScriptParser.AccessibilityModifierContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#identifierOrPattern}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifierOrPattern(TypeScriptParser.IdentifierOrPatternContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#constructSignature}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConstructSignature(TypeScriptParser.ConstructSignatureContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#indexSignature}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIndexSignature(TypeScriptParser.IndexSignatureContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#methodSignature}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMethodSignature(TypeScriptParser.MethodSignatureContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#typeAliasDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#constructorDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#interfaceDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#interfaceExtendsClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInterfaceExtendsClause(TypeScriptParser.InterfaceExtendsClauseContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classOrInterfaceTypeList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassOrInterfaceTypeList(TypeScriptParser.ClassOrInterfaceTypeListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#enumDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#enumBody}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnumBody(TypeScriptParser.EnumBodyContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#enumMemberList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnumMemberList(TypeScriptParser.EnumMemberListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#enumMember}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEnumMember(TypeScriptParser.EnumMemberContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#namespaceDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#namespaceName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNamespaceName(TypeScriptParser.NamespaceNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importAliasDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportAliasDeclaration(TypeScriptParser.ImportAliasDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#decoratorList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDecoratorList(TypeScriptParser.DecoratorListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#decorator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDecorator(TypeScriptParser.DecoratorContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#decoratorMemberExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDecoratorMemberExpression(TypeScriptParser.DecoratorMemberExpressionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#decoratorCallExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDecoratorCallExpression(TypeScriptParser.DecoratorCallExpressionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#program}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitProgram(TypeScriptParser.ProgramContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#sourceElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSourceElement(TypeScriptParser.SourceElementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatement(TypeScriptParser.StatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#block}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBlock(TypeScriptParser.BlockContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#statementList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatementList(TypeScriptParser.StatementListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#abstractDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportStatement(TypeScriptParser.ImportStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importFromBlock}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportFromBlock(TypeScriptParser.ImportFromBlockContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importModuleItems}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportModuleItems(TypeScriptParser.ImportModuleItemsContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importAliasName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportAliasName(TypeScriptParser.ImportAliasNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#moduleExportName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitModuleExportName(TypeScriptParser.ModuleExportNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importedBinding}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportedBinding(TypeScriptParser.ImportedBindingContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importDefault}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportDefault(TypeScriptParser.ImportDefaultContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importNamespace}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportNamespace(TypeScriptParser.ImportNamespaceContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#importFrom}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImportFrom(TypeScriptParser.ImportFromContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#aliasName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAliasName(TypeScriptParser.AliasNameContext ctx); + /** + * Visit a parse tree produced by the {@code ExportDeclaration} + * labeled alternative in {@link TypeScriptParser#exportStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx); + /** + * Visit a parse tree produced by the {@code ExportDefaultDeclaration} + * labeled alternative in {@link TypeScriptParser#exportStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExportDefaultDeclaration(TypeScriptParser.ExportDefaultDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#exportFromBlock}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExportFromBlock(TypeScriptParser.ExportFromBlockContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#exportModuleItems}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExportModuleItems(TypeScriptParser.ExportModuleItemsContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#exportAliasName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExportAliasName(TypeScriptParser.ExportAliasNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#declaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeclaration(TypeScriptParser.DeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#variableStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVariableStatement(TypeScriptParser.VariableStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#variableDeclarationList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVariableDeclarationList(TypeScriptParser.VariableDeclarationListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#variableDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#emptyStatement_}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEmptyStatement_(TypeScriptParser.EmptyStatement_Context ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#expressionStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpressionStatement(TypeScriptParser.ExpressionStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#ifStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIfStatement(TypeScriptParser.IfStatementContext ctx); + /** + * Visit a parse tree produced by the {@code DoStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDoStatement(TypeScriptParser.DoStatementContext ctx); + /** + * Visit a parse tree produced by the {@code WhileStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWhileStatement(TypeScriptParser.WhileStatementContext ctx); + /** + * Visit a parse tree produced by the {@code ForStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForStatement(TypeScriptParser.ForStatementContext ctx); + /** + * Visit a parse tree produced by the {@code ForVarStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForVarStatement(TypeScriptParser.ForVarStatementContext ctx); + /** + * Visit a parse tree produced by the {@code ForInStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForInStatement(TypeScriptParser.ForInStatementContext ctx); + /** + * Visit a parse tree produced by the {@code ForVarInStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForVarInStatement(TypeScriptParser.ForVarInStatementContext ctx); + /** + * Visit a parse tree produced by the {@code ForOfStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForOfStatement(TypeScriptParser.ForOfStatementContext ctx); + /** + * Visit a parse tree produced by the {@code ForVarOfStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitForVarOfStatement(TypeScriptParser.ForVarOfStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#varModifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVarModifier(TypeScriptParser.VarModifierContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#continueStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitContinueStatement(TypeScriptParser.ContinueStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#breakStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBreakStatement(TypeScriptParser.BreakStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#returnStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReturnStatement(TypeScriptParser.ReturnStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#yieldStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitYieldStatement(TypeScriptParser.YieldStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#withStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitWithStatement(TypeScriptParser.WithStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#switchStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSwitchStatement(TypeScriptParser.SwitchStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#caseBlock}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCaseBlock(TypeScriptParser.CaseBlockContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#caseClauses}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCaseClauses(TypeScriptParser.CaseClausesContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#caseClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCaseClause(TypeScriptParser.CaseClauseContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#defaultClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDefaultClause(TypeScriptParser.DefaultClauseContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#labelledStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLabelledStatement(TypeScriptParser.LabelledStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#throwStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitThrowStatement(TypeScriptParser.ThrowStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#tryStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTryStatement(TypeScriptParser.TryStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#catchProduction}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCatchProduction(TypeScriptParser.CatchProductionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#finallyProduction}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFinallyProduction(TypeScriptParser.FinallyProductionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#debuggerStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDebuggerStatement(TypeScriptParser.DebuggerStatementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#functionDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classHeritage}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassHeritage(TypeScriptParser.ClassHeritageContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classTail}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassTail(TypeScriptParser.ClassTailContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classExtendsClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassExtendsClause(TypeScriptParser.ClassExtendsClauseContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#implementsClause}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitImplementsClause(TypeScriptParser.ImplementsClauseContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassElement(TypeScriptParser.ClassElementContext ctx); + /** + * Visit a parse tree produced by the {@code PropertyDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code MethodDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code GetterSetterDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetterSetterDeclarationExpression(TypeScriptParser.GetterSetterDeclarationExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code AbstractMemberDeclaration} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAbstractMemberDeclaration(TypeScriptParser.AbstractMemberDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#propertyMemberBase}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertyMemberBase(TypeScriptParser.PropertyMemberBaseContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#indexMemberDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIndexMemberDeclaration(TypeScriptParser.IndexMemberDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#generatorMethod}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneratorMethod(TypeScriptParser.GeneratorMethodContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#generatorFunctionDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneratorFunctionDeclaration(TypeScriptParser.GeneratorFunctionDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#generatorBlock}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneratorBlock(TypeScriptParser.GeneratorBlockContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#generatorDefinition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneratorDefinition(TypeScriptParser.GeneratorDefinitionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#iteratorBlock}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIteratorBlock(TypeScriptParser.IteratorBlockContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#iteratorDefinition}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIteratorDefinition(TypeScriptParser.IteratorDefinitionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#classElementName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassElementName(TypeScriptParser.ClassElementNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#privateIdentifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPrivateIdentifier(TypeScriptParser.PrivateIdentifierContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#formalParameterList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFormalParameterList(TypeScriptParser.FormalParameterListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#formalParameterArg}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFormalParameterArg(TypeScriptParser.FormalParameterArgContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#lastFormalParameterArg}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLastFormalParameterArg(TypeScriptParser.LastFormalParameterArgContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#functionBody}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunctionBody(TypeScriptParser.FunctionBodyContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#sourceElements}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSourceElements(TypeScriptParser.SourceElementsContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arrayLiteral}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrayLiteral(TypeScriptParser.ArrayLiteralContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#elementList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitElementList(TypeScriptParser.ElementListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arrayElement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrayElement(TypeScriptParser.ArrayElementContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#objectLiteral}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitObjectLiteral(TypeScriptParser.ObjectLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code PropertyExpressionAssignment} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertyExpressionAssignment(TypeScriptParser.PropertyExpressionAssignmentContext ctx); + /** + * Visit a parse tree produced by the {@code ComputedPropertyExpressionAssignment} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitComputedPropertyExpressionAssignment(TypeScriptParser.ComputedPropertyExpressionAssignmentContext ctx); + /** + * Visit a parse tree produced by the {@code PropertyGetter} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertyGetter(TypeScriptParser.PropertyGetterContext ctx); + /** + * Visit a parse tree produced by the {@code PropertySetter} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertySetter(TypeScriptParser.PropertySetterContext ctx); + /** + * Visit a parse tree produced by the {@code MethodProperty} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMethodProperty(TypeScriptParser.MethodPropertyContext ctx); + /** + * Visit a parse tree produced by the {@code PropertyShorthand} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertyShorthand(TypeScriptParser.PropertyShorthandContext ctx); + /** + * Visit a parse tree produced by the {@code SpreadOperator} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSpreadOperator(TypeScriptParser.SpreadOperatorContext ctx); + /** + * Visit a parse tree produced by the {@code RestParameterInObject} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRestParameterInObject(TypeScriptParser.RestParameterInObjectContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#getAccessor}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetAccessor(TypeScriptParser.GetAccessorContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#setAccessor}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetAccessor(TypeScriptParser.SetAccessorContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#propertyName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPropertyName(TypeScriptParser.PropertyNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arguments}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArguments(TypeScriptParser.ArgumentsContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#argumentList}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArgumentList(TypeScriptParser.ArgumentListContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#argument}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArgument(TypeScriptParser.ArgumentContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#expressionSequence}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExpressionSequence(TypeScriptParser.ExpressionSequenceContext ctx); + /** + * Visit a parse tree produced by the {@code TemplateStringExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTemplateStringExpression(TypeScriptParser.TemplateStringExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code GeneratorsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneratorsExpression(TypeScriptParser.GeneratorsExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code PowerExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPowerExpression(TypeScriptParser.PowerExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code InExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInExpression(TypeScriptParser.InExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code GenericTypes} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGenericTypes(TypeScriptParser.GenericTypesContext ctx); + /** + * Visit a parse tree produced by the {@code OptionalChainExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitOptionalChainExpression(TypeScriptParser.OptionalChainExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code ArgumentsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArgumentsExpression(TypeScriptParser.ArgumentsExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code ThisExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitThisExpression(TypeScriptParser.ThisExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code TypeofExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTypeofExpression(TypeScriptParser.TypeofExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code GeneratorsFunctionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGeneratorsFunctionExpression(TypeScriptParser.GeneratorsFunctionExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code EqualityExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEqualityExpression(TypeScriptParser.EqualityExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code BitXOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBitXOrExpression(TypeScriptParser.BitXOrExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code CastAsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCastAsExpression(TypeScriptParser.CastAsExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code MultiplicativeExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMultiplicativeExpression(TypeScriptParser.MultiplicativeExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code BitShiftExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBitShiftExpression(TypeScriptParser.BitShiftExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code AdditiveExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAdditiveExpression(TypeScriptParser.AdditiveExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code RelationalExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitRelationalExpression(TypeScriptParser.RelationalExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code BitNotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBitNotExpression(TypeScriptParser.BitNotExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code NewExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNewExpression(TypeScriptParser.NewExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code LiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLiteralExpression(TypeScriptParser.LiteralExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code ArrayLiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrayLiteralExpression(TypeScriptParser.ArrayLiteralExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code MemberDotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMemberDotExpression(TypeScriptParser.MemberDotExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code MemberIndexExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitMemberIndexExpression(TypeScriptParser.MemberIndexExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code BitAndExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBitAndExpression(TypeScriptParser.BitAndExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code BitOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBitOrExpression(TypeScriptParser.BitOrExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code AssignmentOperatorExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAssignmentOperatorExpression(TypeScriptParser.AssignmentOperatorExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code VoidExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitVoidExpression(TypeScriptParser.VoidExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code TernaryExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTernaryExpression(TypeScriptParser.TernaryExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code LogicalAndExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLogicalAndExpression(TypeScriptParser.LogicalAndExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code PreIncrementExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPreIncrementExpression(TypeScriptParser.PreIncrementExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code ObjectLiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitObjectLiteralExpression(TypeScriptParser.ObjectLiteralExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code LogicalOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLogicalOrExpression(TypeScriptParser.LogicalOrExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code NonNullAssertionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNonNullAssertionExpression(TypeScriptParser.NonNullAssertionExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code NotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNotExpression(TypeScriptParser.NotExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code PreDecreaseExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPreDecreaseExpression(TypeScriptParser.PreDecreaseExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code AwaitExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAwaitExpression(TypeScriptParser.AwaitExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code FunctionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitFunctionExpression(TypeScriptParser.FunctionExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code UnaryMinusExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnaryMinusExpression(TypeScriptParser.UnaryMinusExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code AssignmentExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAssignmentExpression(TypeScriptParser.AssignmentExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code PostDecreaseExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPostDecreaseExpression(TypeScriptParser.PostDecreaseExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code InstanceofExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInstanceofExpression(TypeScriptParser.InstanceofExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code UnaryPlusExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnaryPlusExpression(TypeScriptParser.UnaryPlusExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code DeleteExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDeleteExpression(TypeScriptParser.DeleteExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code IteratorsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIteratorsExpression(TypeScriptParser.IteratorsExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code SuperExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSuperExpression(TypeScriptParser.SuperExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code ParenthesizedExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesizedExpression(TypeScriptParser.ParenthesizedExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code PostIncrementExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPostIncrementExpression(TypeScriptParser.PostIncrementExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code YieldExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitYieldExpression(TypeScriptParser.YieldExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code ClassExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitClassExpression(TypeScriptParser.ClassExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code IdentifierExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifierExpression(TypeScriptParser.IdentifierExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code CoalesceExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitCoalesceExpression(TypeScriptParser.CoalesceExpressionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#asExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAsExpression(TypeScriptParser.AsExpressionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#assignable}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAssignable(TypeScriptParser.AssignableContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#anonymousFunction}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAnonymousFunction(TypeScriptParser.AnonymousFunctionContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arrowFunctionDeclaration}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrowFunctionDeclaration(TypeScriptParser.ArrowFunctionDeclarationContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arrowFunctionParameters}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrowFunctionParameters(TypeScriptParser.ArrowFunctionParametersContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#arrowFunctionBody}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitArrowFunctionBody(TypeScriptParser.ArrowFunctionBodyContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#assignmentOperator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitAssignmentOperator(TypeScriptParser.AssignmentOperatorContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#literal}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitLiteral(TypeScriptParser.LiteralContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#templateStringLiteral}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTemplateStringLiteral(TypeScriptParser.TemplateStringLiteralContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#templateStringAtom}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTemplateStringAtom(TypeScriptParser.TemplateStringAtomContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#numericLiteral}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNumericLiteral(TypeScriptParser.NumericLiteralContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#bigintLiteral}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBigintLiteral(TypeScriptParser.BigintLiteralContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#getter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitGetter(TypeScriptParser.GetterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#setter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSetter(TypeScriptParser.SetterContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#identifierName}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifierName(TypeScriptParser.IdentifierNameContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifier(TypeScriptParser.IdentifierContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#identifierOrKeyWord}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIdentifierOrKeyWord(TypeScriptParser.IdentifierOrKeyWordContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#reservedWord}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReservedWord(TypeScriptParser.ReservedWordContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#keyword}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitKeyword(TypeScriptParser.KeywordContext ctx); + /** + * Visit a parse tree produced by {@link TypeScriptParser#eos}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitEos(TypeScriptParser.EosContext ctx); +} \ No newline at end of file -- Gitee From 81dbae19d2f049b47b16dac5498e547bff7e955e Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:15:09 +0800 Subject: [PATCH 19/26] refatory ts parser visitor Signed-off-by: wangshi --- .../antlr/typescript/TypeScriptTreeNode.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptTreeNode.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptTreeNode.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptTreeNode.java new file mode 100644 index 00000000..e9886058 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptTreeNode.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript; + +import java.util.ArrayList; +import java.util.List; + +/** + *

类名:该类用于xxx

+ * description typescript parse tree node + * + * @author Administrator + * date 2025-02-28 + * @version 1.0 + * @since 2025-02-28 + */ +public class TypeScriptTreeNode { + private String type; + private String text; + private List children; + + public TypeScriptTreeNode() {} + + public TypeScriptTreeNode(String type, String text) { + this.type = type; + this.text = text; + this.children = new ArrayList<>(); + } + + public void setType(String type) { + this.type = type; + } + + public String getType() { + return type; + } + + public void setText(String text) { + this.text = text; + } + + public String getText() { + return text; + } + + public void setChildren(List children) { + this.children = children; + } + + public List getChildren() { + return children; + } +} -- Gitee From 13ea39f4707dc60db6b0c304dae49c44e24d92d5 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:15:54 +0800 Subject: [PATCH 20/26] refatory ts parser listener Signed-off-by: wangshi --- .../typescript/TypeScriptParserListener.java | 1433 +++++++++++++++++ 1 file changed, 1433 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java new file mode 100644 index 00000000..3ac02f4f --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java @@ -0,0 +1,1433 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript;// Generated from TypeScriptParser.g4 by ANTLR 4.13.2 +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link TypeScriptParser}. + */ +public interface TypeScriptParserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link TypeScriptParser#initializer}. + * @param ctx the parse tree + */ + void enterInitializer(TypeScriptParser.InitializerContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#initializer}. + * @param ctx the parse tree + */ + void exitInitializer(TypeScriptParser.InitializerContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#bindingPattern}. + * @param ctx the parse tree + */ + void enterBindingPattern(TypeScriptParser.BindingPatternContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#bindingPattern}. + * @param ctx the parse tree + */ + void exitBindingPattern(TypeScriptParser.BindingPatternContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeParameters}. + * @param ctx the parse tree + */ + void enterTypeParameters(TypeScriptParser.TypeParametersContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeParameters}. + * @param ctx the parse tree + */ + void exitTypeParameters(TypeScriptParser.TypeParametersContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeParameterList}. + * @param ctx the parse tree + */ + void enterTypeParameterList(TypeScriptParser.TypeParameterListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeParameterList}. + * @param ctx the parse tree + */ + void exitTypeParameterList(TypeScriptParser.TypeParameterListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeParameter}. + * @param ctx the parse tree + */ + void enterTypeParameter(TypeScriptParser.TypeParameterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeParameter}. + * @param ctx the parse tree + */ + void exitTypeParameter(TypeScriptParser.TypeParameterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#constraint}. + * @param ctx the parse tree + */ + void enterConstraint(TypeScriptParser.ConstraintContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#constraint}. + * @param ctx the parse tree + */ + void exitConstraint(TypeScriptParser.ConstraintContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeArguments}. + * @param ctx the parse tree + */ + void enterTypeArguments(TypeScriptParser.TypeArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeArguments}. + * @param ctx the parse tree + */ + void exitTypeArguments(TypeScriptParser.TypeArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeArgumentList}. + * @param ctx the parse tree + */ + void enterTypeArgumentList(TypeScriptParser.TypeArgumentListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeArgumentList}. + * @param ctx the parse tree + */ + void exitTypeArgumentList(TypeScriptParser.TypeArgumentListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeArgument}. + * @param ctx the parse tree + */ + void enterTypeArgument(TypeScriptParser.TypeArgumentContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeArgument}. + * @param ctx the parse tree + */ + void exitTypeArgument(TypeScriptParser.TypeArgumentContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#type_}. + * @param ctx the parse tree + */ + void enterType_(TypeScriptParser.Type_Context ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#type_}. + * @param ctx the parse tree + */ + void exitType_(TypeScriptParser.Type_Context ctx); + /** + * Enter a parse tree produced by the {@code Intersection} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + */ + void enterIntersection(TypeScriptParser.IntersectionContext ctx); + /** + * Exit a parse tree produced by the {@code Intersection} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + */ + void exitIntersection(TypeScriptParser.IntersectionContext ctx); + /** + * Enter a parse tree produced by the {@code Primary} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + */ + void enterPrimary(TypeScriptParser.PrimaryContext ctx); + /** + * Exit a parse tree produced by the {@code Primary} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + */ + void exitPrimary(TypeScriptParser.PrimaryContext ctx); + /** + * Enter a parse tree produced by the {@code Union} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + */ + void enterUnion(TypeScriptParser.UnionContext ctx); + /** + * Exit a parse tree produced by the {@code Union} + * labeled alternative in {@link TypeScriptParser#unionOrIntersectionOrPrimaryType}. + * @param ctx the parse tree + */ + void exitUnion(TypeScriptParser.UnionContext ctx); + /** + * Enter a parse tree produced by the {@code RedefinitionOfType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterRedefinitionOfType(TypeScriptParser.RedefinitionOfTypeContext ctx); + /** + * Exit a parse tree produced by the {@code RedefinitionOfType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitRedefinitionOfType(TypeScriptParser.RedefinitionOfTypeContext ctx); + /** + * Enter a parse tree produced by the {@code PredefinedPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterPredefinedPrimType(TypeScriptParser.PredefinedPrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code PredefinedPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitPredefinedPrimType(TypeScriptParser.PredefinedPrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code ArrayPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterArrayPrimType(TypeScriptParser.ArrayPrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code ArrayPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitArrayPrimType(TypeScriptParser.ArrayPrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code ParenthesizedPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterParenthesizedPrimType(TypeScriptParser.ParenthesizedPrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code ParenthesizedPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitParenthesizedPrimType(TypeScriptParser.ParenthesizedPrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code ThisPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterThisPrimType(TypeScriptParser.ThisPrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code ThisPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitThisPrimType(TypeScriptParser.ThisPrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code TuplePrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterTuplePrimType(TypeScriptParser.TuplePrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code TuplePrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitTuplePrimType(TypeScriptParser.TuplePrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code KeyOfType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterKeyOfType(TypeScriptParser.KeyOfTypeContext ctx); + /** + * Exit a parse tree produced by the {@code KeyOfType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitKeyOfType(TypeScriptParser.KeyOfTypeContext ctx); + /** + * Enter a parse tree produced by the {@code ObjectPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterObjectPrimType(TypeScriptParser.ObjectPrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code ObjectPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitObjectPrimType(TypeScriptParser.ObjectPrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code ReferencePrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterReferencePrimType(TypeScriptParser.ReferencePrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code ReferencePrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitReferencePrimType(TypeScriptParser.ReferencePrimTypeContext ctx); + /** + * Enter a parse tree produced by the {@code QueryPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void enterQueryPrimType(TypeScriptParser.QueryPrimTypeContext ctx); + /** + * Exit a parse tree produced by the {@code QueryPrimType} + * labeled alternative in {@link TypeScriptParser#primaryType}. + * @param ctx the parse tree + */ + void exitQueryPrimType(TypeScriptParser.QueryPrimTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#predefinedType}. + * @param ctx the parse tree + */ + void enterPredefinedType(TypeScriptParser.PredefinedTypeContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#predefinedType}. + * @param ctx the parse tree + */ + void exitPredefinedType(TypeScriptParser.PredefinedTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeReference}. + * @param ctx the parse tree + */ + void enterTypeReference(TypeScriptParser.TypeReferenceContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeReference}. + * @param ctx the parse tree + */ + void exitTypeReference(TypeScriptParser.TypeReferenceContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeGeneric}. + * @param ctx the parse tree + */ + void enterTypeGeneric(TypeScriptParser.TypeGenericContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeGeneric}. + * @param ctx the parse tree + */ + void exitTypeGeneric(TypeScriptParser.TypeGenericContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeName}. + * @param ctx the parse tree + */ + void enterTypeName(TypeScriptParser.TypeNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeName}. + * @param ctx the parse tree + */ + void exitTypeName(TypeScriptParser.TypeNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#objectType}. + * @param ctx the parse tree + */ + void enterObjectType(TypeScriptParser.ObjectTypeContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#objectType}. + * @param ctx the parse tree + */ + void exitObjectType(TypeScriptParser.ObjectTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeBody}. + * @param ctx the parse tree + */ + void enterTypeBody(TypeScriptParser.TypeBodyContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeBody}. + * @param ctx the parse tree + */ + void exitTypeBody(TypeScriptParser.TypeBodyContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeMemberList}. + * @param ctx the parse tree + */ + void enterTypeMemberList(TypeScriptParser.TypeMemberListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeMemberList}. + * @param ctx the parse tree + */ + void exitTypeMemberList(TypeScriptParser.TypeMemberListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeMember}. + * @param ctx the parse tree + */ + void enterTypeMember(TypeScriptParser.TypeMemberContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeMember}. + * @param ctx the parse tree + */ + void exitTypeMember(TypeScriptParser.TypeMemberContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arrayType}. + * @param ctx the parse tree + */ + void enterArrayType(TypeScriptParser.ArrayTypeContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arrayType}. + * @param ctx the parse tree + */ + void exitArrayType(TypeScriptParser.ArrayTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#tupleType}. + * @param ctx the parse tree + */ + void enterTupleType(TypeScriptParser.TupleTypeContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#tupleType}. + * @param ctx the parse tree + */ + void exitTupleType(TypeScriptParser.TupleTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#tupleElementTypes}. + * @param ctx the parse tree + */ + void enterTupleElementTypes(TypeScriptParser.TupleElementTypesContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#tupleElementTypes}. + * @param ctx the parse tree + */ + void exitTupleElementTypes(TypeScriptParser.TupleElementTypesContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#functionType}. + * @param ctx the parse tree + */ + void enterFunctionType(TypeScriptParser.FunctionTypeContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#functionType}. + * @param ctx the parse tree + */ + void exitFunctionType(TypeScriptParser.FunctionTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#constructorType}. + * @param ctx the parse tree + */ + void enterConstructorType(TypeScriptParser.ConstructorTypeContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#constructorType}. + * @param ctx the parse tree + */ + void exitConstructorType(TypeScriptParser.ConstructorTypeContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeQuery}. + * @param ctx the parse tree + */ + void enterTypeQuery(TypeScriptParser.TypeQueryContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeQuery}. + * @param ctx the parse tree + */ + void exitTypeQuery(TypeScriptParser.TypeQueryContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeQueryExpression}. + * @param ctx the parse tree + */ + void enterTypeQueryExpression(TypeScriptParser.TypeQueryExpressionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeQueryExpression}. + * @param ctx the parse tree + */ + void exitTypeQueryExpression(TypeScriptParser.TypeQueryExpressionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#propertySignatur}. + * @param ctx the parse tree + */ + void enterPropertySignatur(TypeScriptParser.PropertySignaturContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#propertySignatur}. + * @param ctx the parse tree + */ + void exitPropertySignatur(TypeScriptParser.PropertySignaturContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeAnnotation}. + * @param ctx the parse tree + */ + void enterTypeAnnotation(TypeScriptParser.TypeAnnotationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeAnnotation}. + * @param ctx the parse tree + */ + void exitTypeAnnotation(TypeScriptParser.TypeAnnotationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#callSignature}. + * @param ctx the parse tree + */ + void enterCallSignature(TypeScriptParser.CallSignatureContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#callSignature}. + * @param ctx the parse tree + */ + void exitCallSignature(TypeScriptParser.CallSignatureContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#parameterList}. + * @param ctx the parse tree + */ + void enterParameterList(TypeScriptParser.ParameterListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#parameterList}. + * @param ctx the parse tree + */ + void exitParameterList(TypeScriptParser.ParameterListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#requiredParameterList}. + * @param ctx the parse tree + */ + void enterRequiredParameterList(TypeScriptParser.RequiredParameterListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#requiredParameterList}. + * @param ctx the parse tree + */ + void exitRequiredParameterList(TypeScriptParser.RequiredParameterListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#parameter}. + * @param ctx the parse tree + */ + void enterParameter(TypeScriptParser.ParameterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#parameter}. + * @param ctx the parse tree + */ + void exitParameter(TypeScriptParser.ParameterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#optionalParameter}. + * @param ctx the parse tree + */ + void enterOptionalParameter(TypeScriptParser.OptionalParameterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#optionalParameter}. + * @param ctx the parse tree + */ + void exitOptionalParameter(TypeScriptParser.OptionalParameterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#restParameter}. + * @param ctx the parse tree + */ + void enterRestParameter(TypeScriptParser.RestParameterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#restParameter}. + * @param ctx the parse tree + */ + void exitRestParameter(TypeScriptParser.RestParameterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#requiredParameter}. + * @param ctx the parse tree + */ + void enterRequiredParameter(TypeScriptParser.RequiredParameterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#requiredParameter}. + * @param ctx the parse tree + */ + void exitRequiredParameter(TypeScriptParser.RequiredParameterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#accessibilityModifier}. + * @param ctx the parse tree + */ + void enterAccessibilityModifier(TypeScriptParser.AccessibilityModifierContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#accessibilityModifier}. + * @param ctx the parse tree + */ + void exitAccessibilityModifier(TypeScriptParser.AccessibilityModifierContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#identifierOrPattern}. + * @param ctx the parse tree + */ + void enterIdentifierOrPattern(TypeScriptParser.IdentifierOrPatternContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#identifierOrPattern}. + * @param ctx the parse tree + */ + void exitIdentifierOrPattern(TypeScriptParser.IdentifierOrPatternContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#constructSignature}. + * @param ctx the parse tree + */ + void enterConstructSignature(TypeScriptParser.ConstructSignatureContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#constructSignature}. + * @param ctx the parse tree + */ + void exitConstructSignature(TypeScriptParser.ConstructSignatureContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#indexSignature}. + * @param ctx the parse tree + */ + void enterIndexSignature(TypeScriptParser.IndexSignatureContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#indexSignature}. + * @param ctx the parse tree + */ + void exitIndexSignature(TypeScriptParser.IndexSignatureContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#methodSignature}. + * @param ctx the parse tree + */ + void enterMethodSignature(TypeScriptParser.MethodSignatureContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#methodSignature}. + * @param ctx the parse tree + */ + void exitMethodSignature(TypeScriptParser.MethodSignatureContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#typeAliasDeclaration}. + * @param ctx the parse tree + */ + void enterTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#typeAliasDeclaration}. + * @param ctx the parse tree + */ + void exitTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#constructorDeclaration}. + * @param ctx the parse tree + */ + void enterConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#constructorDeclaration}. + * @param ctx the parse tree + */ + void exitConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#interfaceDeclaration}. + * @param ctx the parse tree + */ + void enterInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#interfaceDeclaration}. + * @param ctx the parse tree + */ + void exitInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#interfaceExtendsClause}. + * @param ctx the parse tree + */ + void enterInterfaceExtendsClause(TypeScriptParser.InterfaceExtendsClauseContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#interfaceExtendsClause}. + * @param ctx the parse tree + */ + void exitInterfaceExtendsClause(TypeScriptParser.InterfaceExtendsClauseContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classOrInterfaceTypeList}. + * @param ctx the parse tree + */ + void enterClassOrInterfaceTypeList(TypeScriptParser.ClassOrInterfaceTypeListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classOrInterfaceTypeList}. + * @param ctx the parse tree + */ + void exitClassOrInterfaceTypeList(TypeScriptParser.ClassOrInterfaceTypeListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#enumDeclaration}. + * @param ctx the parse tree + */ + void enterEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#enumDeclaration}. + * @param ctx the parse tree + */ + void exitEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#enumBody}. + * @param ctx the parse tree + */ + void enterEnumBody(TypeScriptParser.EnumBodyContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#enumBody}. + * @param ctx the parse tree + */ + void exitEnumBody(TypeScriptParser.EnumBodyContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#enumMemberList}. + * @param ctx the parse tree + */ + void enterEnumMemberList(TypeScriptParser.EnumMemberListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#enumMemberList}. + * @param ctx the parse tree + */ + void exitEnumMemberList(TypeScriptParser.EnumMemberListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#enumMember}. + * @param ctx the parse tree + */ + void enterEnumMember(TypeScriptParser.EnumMemberContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#enumMember}. + * @param ctx the parse tree + */ + void exitEnumMember(TypeScriptParser.EnumMemberContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#namespaceDeclaration}. + * @param ctx the parse tree + */ + void enterNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#namespaceDeclaration}. + * @param ctx the parse tree + */ + void exitNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#namespaceName}. + * @param ctx the parse tree + */ + void enterNamespaceName(TypeScriptParser.NamespaceNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#namespaceName}. + * @param ctx the parse tree + */ + void exitNamespaceName(TypeScriptParser.NamespaceNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importAliasDeclaration}. + * @param ctx the parse tree + */ + void enterImportAliasDeclaration(TypeScriptParser.ImportAliasDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importAliasDeclaration}. + * @param ctx the parse tree + */ + void exitImportAliasDeclaration(TypeScriptParser.ImportAliasDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#decoratorList}. + * @param ctx the parse tree + */ + void enterDecoratorList(TypeScriptParser.DecoratorListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#decoratorList}. + * @param ctx the parse tree + */ + void exitDecoratorList(TypeScriptParser.DecoratorListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#decorator}. + * @param ctx the parse tree + */ + void enterDecorator(TypeScriptParser.DecoratorContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#decorator}. + * @param ctx the parse tree + */ + void exitDecorator(TypeScriptParser.DecoratorContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#decoratorMemberExpression}. + * @param ctx the parse tree + */ + void enterDecoratorMemberExpression(TypeScriptParser.DecoratorMemberExpressionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#decoratorMemberExpression}. + * @param ctx the parse tree + */ + void exitDecoratorMemberExpression(TypeScriptParser.DecoratorMemberExpressionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#decoratorCallExpression}. + * @param ctx the parse tree + */ + void enterDecoratorCallExpression(TypeScriptParser.DecoratorCallExpressionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#decoratorCallExpression}. + * @param ctx the parse tree + */ + void exitDecoratorCallExpression(TypeScriptParser.DecoratorCallExpressionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#program}. + * @param ctx the parse tree + */ + void enterProgram(TypeScriptParser.ProgramContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#program}. + * @param ctx the parse tree + */ + void exitProgram(TypeScriptParser.ProgramContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#sourceElement}. + * @param ctx the parse tree + */ + void enterSourceElement(TypeScriptParser.SourceElementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#sourceElement}. + * @param ctx the parse tree + */ + void exitSourceElement(TypeScriptParser.SourceElementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#statement}. + * @param ctx the parse tree + */ + void enterStatement(TypeScriptParser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#statement}. + * @param ctx the parse tree + */ + void exitStatement(TypeScriptParser.StatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#block}. + * @param ctx the parse tree + */ + void enterBlock(TypeScriptParser.BlockContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#block}. + * @param ctx the parse tree + */ + void exitBlock(TypeScriptParser.BlockContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#statementList}. + * @param ctx the parse tree + */ + void enterStatementList(TypeScriptParser.StatementListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#statementList}. + * @param ctx the parse tree + */ + void exitStatementList(TypeScriptParser.StatementListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#abstractDeclaration}. + * @param ctx the parse tree + */ + void enterAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#abstractDeclaration}. + * @param ctx the parse tree + */ + void exitAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importStatement}. + * @param ctx the parse tree + */ + void enterImportStatement(TypeScriptParser.ImportStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importStatement}. + * @param ctx the parse tree + */ + void exitImportStatement(TypeScriptParser.ImportStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importFromBlock}. + * @param ctx the parse tree + */ + void enterImportFromBlock(TypeScriptParser.ImportFromBlockContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importFromBlock}. + * @param ctx the parse tree + */ + void exitImportFromBlock(TypeScriptParser.ImportFromBlockContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importModuleItems}. + * @param ctx the parse tree + */ + void enterImportModuleItems(TypeScriptParser.ImportModuleItemsContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importModuleItems}. + * @param ctx the parse tree + */ + void exitImportModuleItems(TypeScriptParser.ImportModuleItemsContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importAliasName}. + * @param ctx the parse tree + */ + void enterImportAliasName(TypeScriptParser.ImportAliasNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importAliasName}. + * @param ctx the parse tree + */ + void exitImportAliasName(TypeScriptParser.ImportAliasNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#moduleExportName}. + * @param ctx the parse tree + */ + void enterModuleExportName(TypeScriptParser.ModuleExportNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#moduleExportName}. + * @param ctx the parse tree + */ + void exitModuleExportName(TypeScriptParser.ModuleExportNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importedBinding}. + * @param ctx the parse tree + */ + void enterImportedBinding(TypeScriptParser.ImportedBindingContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importedBinding}. + * @param ctx the parse tree + */ + void exitImportedBinding(TypeScriptParser.ImportedBindingContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importDefault}. + * @param ctx the parse tree + */ + void enterImportDefault(TypeScriptParser.ImportDefaultContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importDefault}. + * @param ctx the parse tree + */ + void exitImportDefault(TypeScriptParser.ImportDefaultContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importNamespace}. + * @param ctx the parse tree + */ + void enterImportNamespace(TypeScriptParser.ImportNamespaceContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importNamespace}. + * @param ctx the parse tree + */ + void exitImportNamespace(TypeScriptParser.ImportNamespaceContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#importFrom}. + * @param ctx the parse tree + */ + void enterImportFrom(TypeScriptParser.ImportFromContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#importFrom}. + * @param ctx the parse tree + */ + void exitImportFrom(TypeScriptParser.ImportFromContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#aliasName}. + * @param ctx the parse tree + */ + void enterAliasName(TypeScriptParser.AliasNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#aliasName}. + * @param ctx the parse tree + */ + void exitAliasName(TypeScriptParser.AliasNameContext ctx); + /** + * Enter a parse tree produced by the {@code ExportDeclaration} + * labeled alternative in {@link TypeScriptParser#exportStatement}. + * @param ctx the parse tree + */ + void enterExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx); + /** + * Exit a parse tree produced by the {@code ExportDeclaration} + * labeled alternative in {@link TypeScriptParser#exportStatement}. + * @param ctx the parse tree + */ + void exitExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx); + /** + * Enter a parse tree produced by the {@code ExportDefaultDeclaration} + * labeled alternative in {@link TypeScriptParser#exportStatement}. + * @param ctx the parse tree + */ + void enterExportDefaultDeclaration(TypeScriptParser.ExportDefaultDeclarationContext ctx); + /** + * Exit a parse tree produced by the {@code ExportDefaultDeclaration} + * labeled alternative in {@link TypeScriptParser#exportStatement}. + * @param ctx the parse tree + */ + void exitExportDefaultDeclaration(TypeScriptParser.ExportDefaultDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#exportFromBlock}. + * @param ctx the parse tree + */ + void enterExportFromBlock(TypeScriptParser.ExportFromBlockContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#exportFromBlock}. + * @param ctx the parse tree + */ + void exitExportFromBlock(TypeScriptParser.ExportFromBlockContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#exportModuleItems}. + * @param ctx the parse tree + */ + void enterExportModuleItems(TypeScriptParser.ExportModuleItemsContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#exportModuleItems}. + * @param ctx the parse tree + */ + void exitExportModuleItems(TypeScriptParser.ExportModuleItemsContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#exportAliasName}. + * @param ctx the parse tree + */ + void enterExportAliasName(TypeScriptParser.ExportAliasNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#exportAliasName}. + * @param ctx the parse tree + */ + void exitExportAliasName(TypeScriptParser.ExportAliasNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#declaration}. + * @param ctx the parse tree + */ + void enterDeclaration(TypeScriptParser.DeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#declaration}. + * @param ctx the parse tree + */ + void exitDeclaration(TypeScriptParser.DeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#variableStatement}. + * @param ctx the parse tree + */ + void enterVariableStatement(TypeScriptParser.VariableStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#variableStatement}. + * @param ctx the parse tree + */ + void exitVariableStatement(TypeScriptParser.VariableStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#variableDeclarationList}. + * @param ctx the parse tree + */ + void enterVariableDeclarationList(TypeScriptParser.VariableDeclarationListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#variableDeclarationList}. + * @param ctx the parse tree + */ + void exitVariableDeclarationList(TypeScriptParser.VariableDeclarationListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#variableDeclaration}. + * @param ctx the parse tree + */ + void enterVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#variableDeclaration}. + * @param ctx the parse tree + */ + void exitVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#emptyStatement_}. + * @param ctx the parse tree + */ + void enterEmptyStatement_(TypeScriptParser.EmptyStatement_Context ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#emptyStatement_}. + * @param ctx the parse tree + */ + void exitEmptyStatement_(TypeScriptParser.EmptyStatement_Context ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#expressionStatement}. + * @param ctx the parse tree + */ + void enterExpressionStatement(TypeScriptParser.ExpressionStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#expressionStatement}. + * @param ctx the parse tree + */ + void exitExpressionStatement(TypeScriptParser.ExpressionStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#ifStatement}. + * @param ctx the parse tree + */ + void enterIfStatement(TypeScriptParser.IfStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#ifStatement}. + * @param ctx the parse tree + */ + void exitIfStatement(TypeScriptParser.IfStatementContext ctx); + /** + * Enter a parse tree produced by the {@code DoStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterDoStatement(TypeScriptParser.DoStatementContext ctx); + /** + * Exit a parse tree produced by the {@code DoStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitDoStatement(TypeScriptParser.DoStatementContext ctx); + /** + * Enter a parse tree produced by the {@code WhileStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterWhileStatement(TypeScriptParser.WhileStatementContext ctx); + /** + * Exit a parse tree produced by the {@code WhileStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitWhileStatement(TypeScriptParser.WhileStatementContext ctx); + /** + * Enter a parse tree produced by the {@code ForStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterForStatement(TypeScriptParser.ForStatementContext ctx); + /** + * Exit a parse tree produced by the {@code ForStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitForStatement(TypeScriptParser.ForStatementContext ctx); + /** + * Enter a parse tree produced by the {@code ForVarStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterForVarStatement(TypeScriptParser.ForVarStatementContext ctx); + /** + * Exit a parse tree produced by the {@code ForVarStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitForVarStatement(TypeScriptParser.ForVarStatementContext ctx); + /** + * Enter a parse tree produced by the {@code ForInStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterForInStatement(TypeScriptParser.ForInStatementContext ctx); + /** + * Exit a parse tree produced by the {@code ForInStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitForInStatement(TypeScriptParser.ForInStatementContext ctx); + /** + * Enter a parse tree produced by the {@code ForVarInStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterForVarInStatement(TypeScriptParser.ForVarInStatementContext ctx); + /** + * Exit a parse tree produced by the {@code ForVarInStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitForVarInStatement(TypeScriptParser.ForVarInStatementContext ctx); + /** + * Enter a parse tree produced by the {@code ForOfStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterForOfStatement(TypeScriptParser.ForOfStatementContext ctx); + /** + * Exit a parse tree produced by the {@code ForOfStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitForOfStatement(TypeScriptParser.ForOfStatementContext ctx); + /** + * Enter a parse tree produced by the {@code ForVarOfStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void enterForVarOfStatement(TypeScriptParser.ForVarOfStatementContext ctx); + /** + * Exit a parse tree produced by the {@code ForVarOfStatement} + * labeled alternative in {@link TypeScriptParser#iterationStatement}. + * @param ctx the parse tree + */ + void exitForVarOfStatement(TypeScriptParser.ForVarOfStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#varModifier}. + * @param ctx the parse tree + */ + void enterVarModifier(TypeScriptParser.VarModifierContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#varModifier}. + * @param ctx the parse tree + */ + void exitVarModifier(TypeScriptParser.VarModifierContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#continueStatement}. + * @param ctx the parse tree + */ + void enterContinueStatement(TypeScriptParser.ContinueStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#continueStatement}. + * @param ctx the parse tree + */ + void exitContinueStatement(TypeScriptParser.ContinueStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#breakStatement}. + * @param ctx the parse tree + */ + void enterBreakStatement(TypeScriptParser.BreakStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#breakStatement}. + * @param ctx the parse tree + */ + void exitBreakStatement(TypeScriptParser.BreakStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#returnStatement}. + * @param ctx the parse tree + */ + void enterReturnStatement(TypeScriptParser.ReturnStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#returnStatement}. + * @param ctx the parse tree + */ + void exitReturnStatement(TypeScriptParser.ReturnStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#yieldStatement}. + * @param ctx the parse tree + */ + void enterYieldStatement(TypeScriptParser.YieldStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#yieldStatement}. + * @param ctx the parse tree + */ + void exitYieldStatement(TypeScriptParser.YieldStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#withStatement}. + * @param ctx the parse tree + */ + void enterWithStatement(TypeScriptParser.WithStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#withStatement}. + * @param ctx the parse tree + */ + void exitWithStatement(TypeScriptParser.WithStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#switchStatement}. + * @param ctx the parse tree + */ + void enterSwitchStatement(TypeScriptParser.SwitchStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#switchStatement}. + * @param ctx the parse tree + */ + void exitSwitchStatement(TypeScriptParser.SwitchStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#caseBlock}. + * @param ctx the parse tree + */ + void enterCaseBlock(TypeScriptParser.CaseBlockContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#caseBlock}. + * @param ctx the parse tree + */ + void exitCaseBlock(TypeScriptParser.CaseBlockContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#caseClauses}. + * @param ctx the parse tree + */ + void enterCaseClauses(TypeScriptParser.CaseClausesContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#caseClauses}. + * @param ctx the parse tree + */ + void exitCaseClauses(TypeScriptParser.CaseClausesContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#caseClause}. + * @param ctx the parse tree + */ + void enterCaseClause(TypeScriptParser.CaseClauseContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#caseClause}. + * @param ctx the parse tree + */ + void exitCaseClause(TypeScriptParser.CaseClauseContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#defaultClause}. + * @param ctx the parse tree + */ + void enterDefaultClause(TypeScriptParser.DefaultClauseContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#defaultClause}. + * @param ctx the parse tree + */ + void exitDefaultClause(TypeScriptParser.DefaultClauseContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#labelledStatement}. + * @param ctx the parse tree + */ + void enterLabelledStatement(TypeScriptParser.LabelledStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#labelledStatement}. + * @param ctx the parse tree + */ + void exitLabelledStatement(TypeScriptParser.LabelledStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#throwStatement}. + * @param ctx the parse tree + */ + void enterThrowStatement(TypeScriptParser.ThrowStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#throwStatement}. + * @param ctx the parse tree + */ + void exitThrowStatement(TypeScriptParser.ThrowStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#tryStatement}. + * @param ctx the parse tree + */ + void enterTryStatement(TypeScriptParser.TryStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#tryStatement}. + * @param ctx the parse tree + */ + void exitTryStatement(TypeScriptParser.TryStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#catchProduction}. + * @param ctx the parse tree + */ + void enterCatchProduction(TypeScriptParser.CatchProductionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#catchProduction}. + * @param ctx the parse tree + */ + void exitCatchProduction(TypeScriptParser.CatchProductionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#finallyProduction}. + * @param ctx the parse tree + */ + void enterFinallyProduction(TypeScriptParser.FinallyProductionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#finallyProduction}. + * @param ctx the parse tree + */ + void exitFinallyProduction(TypeScriptParser.FinallyProductionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#debuggerStatement}. + * @param ctx the parse tree + */ + void enterDebuggerStatement(TypeScriptParser.DebuggerStatementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#debuggerStatement}. + * @param ctx the parse tree + */ + void exitDebuggerStatement(TypeScriptParser.DebuggerStatementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#functionDeclaration}. + * @param ctx the parse tree + */ + void enterFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#functionDeclaration}. + * @param ctx the parse tree + */ + void exitFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classDeclaration}. + * @param ctx the parse tree + */ + void enterClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classDeclaration}. + * @param ctx the parse tree + */ + void exitClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classHeritage}. + * @param ctx the parse tree + */ + void enterClassHeritage(TypeScriptParser.ClassHeritageContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classHeritage}. + * @param ctx the parse tree + */ + void exitClassHeritage(TypeScriptParser.ClassHeritageContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classTail}. + * @param ctx the parse tree + */ + void enterClassTail(TypeScriptParser.ClassTailContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classTail}. + * @param ctx the parse tree + */ + void exitClassTail(TypeScriptParser.ClassTailContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classExtendsClause}. + * @param ctx the parse tree + */ + void enterClassExtendsClause(TypeScriptParser.ClassExtendsClauseContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classExtendsClause}. + * @param ctx the parse tree + */ + void exitClassExtendsClause(TypeScriptParser.ClassExtendsClauseContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#implementsClause}. + * @param ctx the parse tree + */ + void enterImplementsClause(TypeScriptParser.ImplementsClauseContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#implementsClause}. + * @param ctx the parse tree + */ + void exitImplementsClause(TypeScriptParser.ImplementsClauseContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classElement}. + * @param ctx the parse tree + */ + void enterClassElement(TypeScriptParser.ClassElementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classElement}. + * @param ctx the parse tree + */ + void exitClassElement(TypeScriptParser.ClassElementContext ctx); + /** + * Enter a parse tree produced by the {@code PropertyDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void enterPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PropertyDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void exitPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code MethodDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void enterMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code MethodDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void exitMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code GetterSetterDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void enterGetterSetterDeclarationExpression(TypeScriptParser.GetterSetterDeclarationExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code GetterSetterDeclarationExpression} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void exitGetterSetterDeclarationExpression(TypeScriptParser.GetterSetterDeclarationExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code AbstractMemberDeclaration} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void enterAbstractMemberDeclaration(TypeScriptParser.AbstractMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by the {@code AbstractMemberDeclaration} + * labeled alternative in {@link TypeScriptParser#propertyMemberDeclaration}. + * @param ctx the parse tree + */ + void exitAbstractMemberDeclaration(TypeScriptParser.AbstractMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#propertyMemberBase}. + * @param ctx the parse tree + */ + void enterPropertyMemberBase(TypeScriptParser.PropertyMemberBaseContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#propertyMemberBase}. + * @param ctx the parse tree + */ + void exitPropertyMemberBase(TypeScriptParser.PropertyMemberBaseContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#indexMemberDeclaration}. + * @param ctx the parse tree + */ + void enterIndexMemberDeclaration(TypeScriptParser.IndexMemberDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#indexMemberDeclaration}. + * @param ctx the parse tree + */ + void exitIndexMemberDeclaration(TypeScriptParser.IndexMemberDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#generatorMethod}. + * @param ctx the parse tree + */ + void enterGeneratorMethod(TypeScriptParser.GeneratorMethodContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#generatorMethod}. + * @param ctx the parse tree + */ + void exitGeneratorMethod(TypeScriptParser.GeneratorMethodContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#generatorFunctionDeclaration}. + * @param ctx the parse tree + */ + +} \ No newline at end of file -- Gitee From f25e185d05472a041afa7451391fabf6dfce9323 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:16:16 +0800 Subject: [PATCH 21/26] refatory ts parser listener Signed-off-by: wangshi --- .../typescript/TypeScriptParserListener.java | 1135 ++++++++++++++++- 1 file changed, 1134 insertions(+), 1 deletion(-) diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java index 3ac02f4f..5c7e7a7f 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserListener.java @@ -1429,5 +1429,1138 @@ public interface TypeScriptParserListener extends ParseTreeListener { * Enter a parse tree produced by {@link TypeScriptParser#generatorFunctionDeclaration}. * @param ctx the parse tree */ - + void enterGeneratorFunctionDeclaration(TypeScriptParser.GeneratorFunctionDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#generatorFunctionDeclaration}. + * @param ctx the parse tree + */ + void exitGeneratorFunctionDeclaration(TypeScriptParser.GeneratorFunctionDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#generatorBlock}. + * @param ctx the parse tree + */ + void enterGeneratorBlock(TypeScriptParser.GeneratorBlockContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#generatorBlock}. + * @param ctx the parse tree + */ + void exitGeneratorBlock(TypeScriptParser.GeneratorBlockContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#generatorDefinition}. + * @param ctx the parse tree + */ + void enterGeneratorDefinition(TypeScriptParser.GeneratorDefinitionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#generatorDefinition}. + * @param ctx the parse tree + */ + void exitGeneratorDefinition(TypeScriptParser.GeneratorDefinitionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#iteratorBlock}. + * @param ctx the parse tree + */ + void enterIteratorBlock(TypeScriptParser.IteratorBlockContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#iteratorBlock}. + * @param ctx the parse tree + */ + void exitIteratorBlock(TypeScriptParser.IteratorBlockContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#iteratorDefinition}. + * @param ctx the parse tree + */ + void enterIteratorDefinition(TypeScriptParser.IteratorDefinitionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#iteratorDefinition}. + * @param ctx the parse tree + */ + void exitIteratorDefinition(TypeScriptParser.IteratorDefinitionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#classElementName}. + * @param ctx the parse tree + */ + void enterClassElementName(TypeScriptParser.ClassElementNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#classElementName}. + * @param ctx the parse tree + */ + void exitClassElementName(TypeScriptParser.ClassElementNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#privateIdentifier}. + * @param ctx the parse tree + */ + void enterPrivateIdentifier(TypeScriptParser.PrivateIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#privateIdentifier}. + * @param ctx the parse tree + */ + void exitPrivateIdentifier(TypeScriptParser.PrivateIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#formalParameterList}. + * @param ctx the parse tree + */ + void enterFormalParameterList(TypeScriptParser.FormalParameterListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#formalParameterList}. + * @param ctx the parse tree + */ + void exitFormalParameterList(TypeScriptParser.FormalParameterListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#formalParameterArg}. + * @param ctx the parse tree + */ + void enterFormalParameterArg(TypeScriptParser.FormalParameterArgContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#formalParameterArg}. + * @param ctx the parse tree + */ + void exitFormalParameterArg(TypeScriptParser.FormalParameterArgContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#lastFormalParameterArg}. + * @param ctx the parse tree + */ + void enterLastFormalParameterArg(TypeScriptParser.LastFormalParameterArgContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#lastFormalParameterArg}. + * @param ctx the parse tree + */ + void exitLastFormalParameterArg(TypeScriptParser.LastFormalParameterArgContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#functionBody}. + * @param ctx the parse tree + */ + void enterFunctionBody(TypeScriptParser.FunctionBodyContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#functionBody}. + * @param ctx the parse tree + */ + void exitFunctionBody(TypeScriptParser.FunctionBodyContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#sourceElements}. + * @param ctx the parse tree + */ + void enterSourceElements(TypeScriptParser.SourceElementsContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#sourceElements}. + * @param ctx the parse tree + */ + void exitSourceElements(TypeScriptParser.SourceElementsContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arrayLiteral}. + * @param ctx the parse tree + */ + void enterArrayLiteral(TypeScriptParser.ArrayLiteralContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arrayLiteral}. + * @param ctx the parse tree + */ + void exitArrayLiteral(TypeScriptParser.ArrayLiteralContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#elementList}. + * @param ctx the parse tree + */ + void enterElementList(TypeScriptParser.ElementListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#elementList}. + * @param ctx the parse tree + */ + void exitElementList(TypeScriptParser.ElementListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arrayElement}. + * @param ctx the parse tree + */ + void enterArrayElement(TypeScriptParser.ArrayElementContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arrayElement}. + * @param ctx the parse tree + */ + void exitArrayElement(TypeScriptParser.ArrayElementContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#objectLiteral}. + * @param ctx the parse tree + */ + void enterObjectLiteral(TypeScriptParser.ObjectLiteralContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#objectLiteral}. + * @param ctx the parse tree + */ + void exitObjectLiteral(TypeScriptParser.ObjectLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code PropertyExpressionAssignment} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterPropertyExpressionAssignment(TypeScriptParser.PropertyExpressionAssignmentContext ctx); + /** + * Exit a parse tree produced by the {@code PropertyExpressionAssignment} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitPropertyExpressionAssignment(TypeScriptParser.PropertyExpressionAssignmentContext ctx); + /** + * Enter a parse tree produced by the {@code ComputedPropertyExpressionAssignment} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterComputedPropertyExpressionAssignment(TypeScriptParser.ComputedPropertyExpressionAssignmentContext ctx); + /** + * Exit a parse tree produced by the {@code ComputedPropertyExpressionAssignment} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitComputedPropertyExpressionAssignment(TypeScriptParser.ComputedPropertyExpressionAssignmentContext ctx); + /** + * Enter a parse tree produced by the {@code PropertyGetter} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterPropertyGetter(TypeScriptParser.PropertyGetterContext ctx); + /** + * Exit a parse tree produced by the {@code PropertyGetter} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitPropertyGetter(TypeScriptParser.PropertyGetterContext ctx); + /** + * Enter a parse tree produced by the {@code PropertySetter} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterPropertySetter(TypeScriptParser.PropertySetterContext ctx); + /** + * Exit a parse tree produced by the {@code PropertySetter} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitPropertySetter(TypeScriptParser.PropertySetterContext ctx); + /** + * Enter a parse tree produced by the {@code MethodProperty} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterMethodProperty(TypeScriptParser.MethodPropertyContext ctx); + /** + * Exit a parse tree produced by the {@code MethodProperty} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitMethodProperty(TypeScriptParser.MethodPropertyContext ctx); + /** + * Enter a parse tree produced by the {@code PropertyShorthand} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterPropertyShorthand(TypeScriptParser.PropertyShorthandContext ctx); + /** + * Exit a parse tree produced by the {@code PropertyShorthand} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitPropertyShorthand(TypeScriptParser.PropertyShorthandContext ctx); + /** + * Enter a parse tree produced by the {@code SpreadOperator} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterSpreadOperator(TypeScriptParser.SpreadOperatorContext ctx); + /** + * Exit a parse tree produced by the {@code SpreadOperator} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitSpreadOperator(TypeScriptParser.SpreadOperatorContext ctx); + /** + * Enter a parse tree produced by the {@code RestParameterInObject} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void enterRestParameterInObject(TypeScriptParser.RestParameterInObjectContext ctx); + /** + * Exit a parse tree produced by the {@code RestParameterInObject} + * labeled alternative in {@link TypeScriptParser#propertyAssignment}. + * @param ctx the parse tree + */ + void exitRestParameterInObject(TypeScriptParser.RestParameterInObjectContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#getAccessor}. + * @param ctx the parse tree + */ + void enterGetAccessor(TypeScriptParser.GetAccessorContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#getAccessor}. + * @param ctx the parse tree + */ + void exitGetAccessor(TypeScriptParser.GetAccessorContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#setAccessor}. + * @param ctx the parse tree + */ + void enterSetAccessor(TypeScriptParser.SetAccessorContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#setAccessor}. + * @param ctx the parse tree + */ + void exitSetAccessor(TypeScriptParser.SetAccessorContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#propertyName}. + * @param ctx the parse tree + */ + void enterPropertyName(TypeScriptParser.PropertyNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#propertyName}. + * @param ctx the parse tree + */ + void exitPropertyName(TypeScriptParser.PropertyNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arguments}. + * @param ctx the parse tree + */ + void enterArguments(TypeScriptParser.ArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arguments}. + * @param ctx the parse tree + */ + void exitArguments(TypeScriptParser.ArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#argumentList}. + * @param ctx the parse tree + */ + void enterArgumentList(TypeScriptParser.ArgumentListContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#argumentList}. + * @param ctx the parse tree + */ + void exitArgumentList(TypeScriptParser.ArgumentListContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#argument}. + * @param ctx the parse tree + */ + void enterArgument(TypeScriptParser.ArgumentContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#argument}. + * @param ctx the parse tree + */ + void exitArgument(TypeScriptParser.ArgumentContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#expressionSequence}. + * @param ctx the parse tree + */ + void enterExpressionSequence(TypeScriptParser.ExpressionSequenceContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#expressionSequence}. + * @param ctx the parse tree + */ + void exitExpressionSequence(TypeScriptParser.ExpressionSequenceContext ctx); + /** + * Enter a parse tree produced by the {@code TemplateStringExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterTemplateStringExpression(TypeScriptParser.TemplateStringExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code TemplateStringExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitTemplateStringExpression(TypeScriptParser.TemplateStringExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code GeneratorsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterGeneratorsExpression(TypeScriptParser.GeneratorsExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code GeneratorsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitGeneratorsExpression(TypeScriptParser.GeneratorsExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PowerExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterPowerExpression(TypeScriptParser.PowerExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PowerExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitPowerExpression(TypeScriptParser.PowerExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code InExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterInExpression(TypeScriptParser.InExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code InExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitInExpression(TypeScriptParser.InExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code GenericTypes} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterGenericTypes(TypeScriptParser.GenericTypesContext ctx); + /** + * Exit a parse tree produced by the {@code GenericTypes} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitGenericTypes(TypeScriptParser.GenericTypesContext ctx); + /** + * Enter a parse tree produced by the {@code OptionalChainExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterOptionalChainExpression(TypeScriptParser.OptionalChainExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code OptionalChainExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitOptionalChainExpression(TypeScriptParser.OptionalChainExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ArgumentsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterArgumentsExpression(TypeScriptParser.ArgumentsExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ArgumentsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitArgumentsExpression(TypeScriptParser.ArgumentsExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ThisExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterThisExpression(TypeScriptParser.ThisExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ThisExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitThisExpression(TypeScriptParser.ThisExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code TypeofExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterTypeofExpression(TypeScriptParser.TypeofExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code TypeofExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitTypeofExpression(TypeScriptParser.TypeofExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code GeneratorsFunctionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterGeneratorsFunctionExpression(TypeScriptParser.GeneratorsFunctionExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code GeneratorsFunctionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitGeneratorsFunctionExpression(TypeScriptParser.GeneratorsFunctionExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code EqualityExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterEqualityExpression(TypeScriptParser.EqualityExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code EqualityExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitEqualityExpression(TypeScriptParser.EqualityExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BitXOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterBitXOrExpression(TypeScriptParser.BitXOrExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BitXOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitBitXOrExpression(TypeScriptParser.BitXOrExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code CastAsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterCastAsExpression(TypeScriptParser.CastAsExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code CastAsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitCastAsExpression(TypeScriptParser.CastAsExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code MultiplicativeExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterMultiplicativeExpression(TypeScriptParser.MultiplicativeExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code MultiplicativeExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitMultiplicativeExpression(TypeScriptParser.MultiplicativeExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BitShiftExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterBitShiftExpression(TypeScriptParser.BitShiftExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BitShiftExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitBitShiftExpression(TypeScriptParser.BitShiftExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code AdditiveExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterAdditiveExpression(TypeScriptParser.AdditiveExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code AdditiveExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitAdditiveExpression(TypeScriptParser.AdditiveExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code RelationalExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterRelationalExpression(TypeScriptParser.RelationalExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code RelationalExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitRelationalExpression(TypeScriptParser.RelationalExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BitNotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterBitNotExpression(TypeScriptParser.BitNotExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BitNotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitBitNotExpression(TypeScriptParser.BitNotExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code NewExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterNewExpression(TypeScriptParser.NewExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code NewExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitNewExpression(TypeScriptParser.NewExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code LiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterLiteralExpression(TypeScriptParser.LiteralExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code LiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitLiteralExpression(TypeScriptParser.LiteralExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ArrayLiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterArrayLiteralExpression(TypeScriptParser.ArrayLiteralExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ArrayLiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitArrayLiteralExpression(TypeScriptParser.ArrayLiteralExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code MemberDotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterMemberDotExpression(TypeScriptParser.MemberDotExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code MemberDotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitMemberDotExpression(TypeScriptParser.MemberDotExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code MemberIndexExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterMemberIndexExpression(TypeScriptParser.MemberIndexExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code MemberIndexExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitMemberIndexExpression(TypeScriptParser.MemberIndexExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BitAndExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterBitAndExpression(TypeScriptParser.BitAndExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BitAndExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitBitAndExpression(TypeScriptParser.BitAndExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code BitOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterBitOrExpression(TypeScriptParser.BitOrExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code BitOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitBitOrExpression(TypeScriptParser.BitOrExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code AssignmentOperatorExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterAssignmentOperatorExpression(TypeScriptParser.AssignmentOperatorExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code AssignmentOperatorExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitAssignmentOperatorExpression(TypeScriptParser.AssignmentOperatorExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code VoidExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterVoidExpression(TypeScriptParser.VoidExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code VoidExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitVoidExpression(TypeScriptParser.VoidExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code TernaryExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterTernaryExpression(TypeScriptParser.TernaryExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code TernaryExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitTernaryExpression(TypeScriptParser.TernaryExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code LogicalAndExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterLogicalAndExpression(TypeScriptParser.LogicalAndExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code LogicalAndExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitLogicalAndExpression(TypeScriptParser.LogicalAndExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PreIncrementExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterPreIncrementExpression(TypeScriptParser.PreIncrementExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PreIncrementExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitPreIncrementExpression(TypeScriptParser.PreIncrementExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ObjectLiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterObjectLiteralExpression(TypeScriptParser.ObjectLiteralExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ObjectLiteralExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitObjectLiteralExpression(TypeScriptParser.ObjectLiteralExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code LogicalOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterLogicalOrExpression(TypeScriptParser.LogicalOrExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code LogicalOrExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitLogicalOrExpression(TypeScriptParser.LogicalOrExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code NonNullAssertionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterNonNullAssertionExpression(TypeScriptParser.NonNullAssertionExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code NonNullAssertionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitNonNullAssertionExpression(TypeScriptParser.NonNullAssertionExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code NotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterNotExpression(TypeScriptParser.NotExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code NotExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitNotExpression(TypeScriptParser.NotExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PreDecreaseExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterPreDecreaseExpression(TypeScriptParser.PreDecreaseExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PreDecreaseExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitPreDecreaseExpression(TypeScriptParser.PreDecreaseExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code AwaitExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterAwaitExpression(TypeScriptParser.AwaitExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code AwaitExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitAwaitExpression(TypeScriptParser.AwaitExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code FunctionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterFunctionExpression(TypeScriptParser.FunctionExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code FunctionExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitFunctionExpression(TypeScriptParser.FunctionExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code UnaryMinusExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterUnaryMinusExpression(TypeScriptParser.UnaryMinusExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code UnaryMinusExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitUnaryMinusExpression(TypeScriptParser.UnaryMinusExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code AssignmentExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterAssignmentExpression(TypeScriptParser.AssignmentExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code AssignmentExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitAssignmentExpression(TypeScriptParser.AssignmentExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PostDecreaseExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterPostDecreaseExpression(TypeScriptParser.PostDecreaseExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PostDecreaseExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitPostDecreaseExpression(TypeScriptParser.PostDecreaseExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code InstanceofExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterInstanceofExpression(TypeScriptParser.InstanceofExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code InstanceofExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitInstanceofExpression(TypeScriptParser.InstanceofExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code UnaryPlusExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterUnaryPlusExpression(TypeScriptParser.UnaryPlusExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code UnaryPlusExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitUnaryPlusExpression(TypeScriptParser.UnaryPlusExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code DeleteExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterDeleteExpression(TypeScriptParser.DeleteExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code DeleteExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitDeleteExpression(TypeScriptParser.DeleteExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code IteratorsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterIteratorsExpression(TypeScriptParser.IteratorsExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code IteratorsExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitIteratorsExpression(TypeScriptParser.IteratorsExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code SuperExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterSuperExpression(TypeScriptParser.SuperExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code SuperExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitSuperExpression(TypeScriptParser.SuperExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ParenthesizedExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterParenthesizedExpression(TypeScriptParser.ParenthesizedExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ParenthesizedExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitParenthesizedExpression(TypeScriptParser.ParenthesizedExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code PostIncrementExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterPostIncrementExpression(TypeScriptParser.PostIncrementExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code PostIncrementExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitPostIncrementExpression(TypeScriptParser.PostIncrementExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code YieldExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterYieldExpression(TypeScriptParser.YieldExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code YieldExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitYieldExpression(TypeScriptParser.YieldExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code ClassExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterClassExpression(TypeScriptParser.ClassExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code ClassExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitClassExpression(TypeScriptParser.ClassExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code IdentifierExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterIdentifierExpression(TypeScriptParser.IdentifierExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code IdentifierExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitIdentifierExpression(TypeScriptParser.IdentifierExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code CoalesceExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void enterCoalesceExpression(TypeScriptParser.CoalesceExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code CoalesceExpression} + * labeled alternative in {@link TypeScriptParser#singleExpression}. + * @param ctx the parse tree + */ + void exitCoalesceExpression(TypeScriptParser.CoalesceExpressionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#asExpression}. + * @param ctx the parse tree + */ + void enterAsExpression(TypeScriptParser.AsExpressionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#asExpression}. + * @param ctx the parse tree + */ + void exitAsExpression(TypeScriptParser.AsExpressionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#assignable}. + * @param ctx the parse tree + */ + void enterAssignable(TypeScriptParser.AssignableContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#assignable}. + * @param ctx the parse tree + */ + void exitAssignable(TypeScriptParser.AssignableContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#anonymousFunction}. + * @param ctx the parse tree + */ + void enterAnonymousFunction(TypeScriptParser.AnonymousFunctionContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#anonymousFunction}. + * @param ctx the parse tree + */ + void exitAnonymousFunction(TypeScriptParser.AnonymousFunctionContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arrowFunctionDeclaration}. + * @param ctx the parse tree + */ + void enterArrowFunctionDeclaration(TypeScriptParser.ArrowFunctionDeclarationContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arrowFunctionDeclaration}. + * @param ctx the parse tree + */ + void exitArrowFunctionDeclaration(TypeScriptParser.ArrowFunctionDeclarationContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arrowFunctionParameters}. + * @param ctx the parse tree + */ + void enterArrowFunctionParameters(TypeScriptParser.ArrowFunctionParametersContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arrowFunctionParameters}. + * @param ctx the parse tree + */ + void exitArrowFunctionParameters(TypeScriptParser.ArrowFunctionParametersContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#arrowFunctionBody}. + * @param ctx the parse tree + */ + void enterArrowFunctionBody(TypeScriptParser.ArrowFunctionBodyContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#arrowFunctionBody}. + * @param ctx the parse tree + */ + void exitArrowFunctionBody(TypeScriptParser.ArrowFunctionBodyContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#assignmentOperator}. + * @param ctx the parse tree + */ + void enterAssignmentOperator(TypeScriptParser.AssignmentOperatorContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#assignmentOperator}. + * @param ctx the parse tree + */ + void exitAssignmentOperator(TypeScriptParser.AssignmentOperatorContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#literal}. + * @param ctx the parse tree + */ + void enterLiteral(TypeScriptParser.LiteralContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#literal}. + * @param ctx the parse tree + */ + void exitLiteral(TypeScriptParser.LiteralContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#templateStringLiteral}. + * @param ctx the parse tree + */ + void enterTemplateStringLiteral(TypeScriptParser.TemplateStringLiteralContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#templateStringLiteral}. + * @param ctx the parse tree + */ + void exitTemplateStringLiteral(TypeScriptParser.TemplateStringLiteralContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#templateStringAtom}. + * @param ctx the parse tree + */ + void enterTemplateStringAtom(TypeScriptParser.TemplateStringAtomContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#templateStringAtom}. + * @param ctx the parse tree + */ + void exitTemplateStringAtom(TypeScriptParser.TemplateStringAtomContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#numericLiteral}. + * @param ctx the parse tree + */ + void enterNumericLiteral(TypeScriptParser.NumericLiteralContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#numericLiteral}. + * @param ctx the parse tree + */ + void exitNumericLiteral(TypeScriptParser.NumericLiteralContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#bigintLiteral}. + * @param ctx the parse tree + */ + void enterBigintLiteral(TypeScriptParser.BigintLiteralContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#bigintLiteral}. + * @param ctx the parse tree + */ + void exitBigintLiteral(TypeScriptParser.BigintLiteralContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#getter}. + * @param ctx the parse tree + */ + void enterGetter(TypeScriptParser.GetterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#getter}. + * @param ctx the parse tree + */ + void exitGetter(TypeScriptParser.GetterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#setter}. + * @param ctx the parse tree + */ + void enterSetter(TypeScriptParser.SetterContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#setter}. + * @param ctx the parse tree + */ + void exitSetter(TypeScriptParser.SetterContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#identifierName}. + * @param ctx the parse tree + */ + void enterIdentifierName(TypeScriptParser.IdentifierNameContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#identifierName}. + * @param ctx the parse tree + */ + void exitIdentifierName(TypeScriptParser.IdentifierNameContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#identifier}. + * @param ctx the parse tree + */ + void enterIdentifier(TypeScriptParser.IdentifierContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#identifier}. + * @param ctx the parse tree + */ + void exitIdentifier(TypeScriptParser.IdentifierContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#identifierOrKeyWord}. + * @param ctx the parse tree + */ + void enterIdentifierOrKeyWord(TypeScriptParser.IdentifierOrKeyWordContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#identifierOrKeyWord}. + * @param ctx the parse tree + */ + void exitIdentifierOrKeyWord(TypeScriptParser.IdentifierOrKeyWordContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#reservedWord}. + * @param ctx the parse tree + */ + void enterReservedWord(TypeScriptParser.ReservedWordContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#reservedWord}. + * @param ctx the parse tree + */ + void exitReservedWord(TypeScriptParser.ReservedWordContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#keyword}. + * @param ctx the parse tree + */ + void enterKeyword(TypeScriptParser.KeywordContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#keyword}. + * @param ctx the parse tree + */ + void exitKeyword(TypeScriptParser.KeywordContext ctx); + /** + * Enter a parse tree produced by {@link TypeScriptParser#eos}. + * @param ctx the parse tree + */ + void enterEos(TypeScriptParser.EosContext ctx); + /** + * Exit a parse tree produced by {@link TypeScriptParser#eos}. + * @param ctx the parse tree + */ + void exitEos(TypeScriptParser.EosContext ctx); } \ No newline at end of file -- Gitee From d85ee6c88c2d663a7391b7e8d2da3c13ee9b4acd Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:16:49 +0800 Subject: [PATCH 22/26] refatory ts parser base listener Signed-off-by: wangshi --- .../TypeScriptParserBaseListener.java | 1584 +++++++++++++++++ 1 file changed, 1584 insertions(+) create mode 100644 src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java new file mode 100644 index 00000000..01529318 --- /dev/null +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java @@ -0,0 +1,1584 @@ +/* + * Copyright (c) 2025 Shenzhen Kaihong Digital. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package antlr.typescript;// Generated from TypeScriptParser.g4 by ANTLR 4.13.2 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link TypeScriptParserListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +@SuppressWarnings("CheckReturnValue") +public class TypeScriptParserBaseListener implements TypeScriptParserListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitializer(TypeScriptParser.InitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitializer(TypeScriptParser.InitializerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBindingPattern(TypeScriptParser.BindingPatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBindingPattern(TypeScriptParser.BindingPatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameters(TypeScriptParser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameters(TypeScriptParser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameterList(TypeScriptParser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameterList(TypeScriptParser.TypeParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameter(TypeScriptParser.TypeParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameter(TypeScriptParser.TypeParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstraint(TypeScriptParser.ConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstraint(TypeScriptParser.ConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArguments(TypeScriptParser.TypeArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArguments(TypeScriptParser.TypeArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArgumentList(TypeScriptParser.TypeArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArgumentList(TypeScriptParser.TypeArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArgument(TypeScriptParser.TypeArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArgument(TypeScriptParser.TypeArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_(TypeScriptParser.Type_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_(TypeScriptParser.Type_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntersection(TypeScriptParser.IntersectionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntersection(TypeScriptParser.IntersectionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimary(TypeScriptParser.PrimaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimary(TypeScriptParser.PrimaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnion(TypeScriptParser.UnionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnion(TypeScriptParser.UnionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRedefinitionOfType(TypeScriptParser.RedefinitionOfTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRedefinitionOfType(TypeScriptParser.RedefinitionOfTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPredefinedPrimType(TypeScriptParser.PredefinedPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredefinedPrimType(TypeScriptParser.PredefinedPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayPrimType(TypeScriptParser.ArrayPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayPrimType(TypeScriptParser.ArrayPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesizedPrimType(TypeScriptParser.ParenthesizedPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesizedPrimType(TypeScriptParser.ParenthesizedPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterThisPrimType(TypeScriptParser.ThisPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitThisPrimType(TypeScriptParser.ThisPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTuplePrimType(TypeScriptParser.TuplePrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTuplePrimType(TypeScriptParser.TuplePrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKeyOfType(TypeScriptParser.KeyOfTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKeyOfType(TypeScriptParser.KeyOfTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterObjectPrimType(TypeScriptParser.ObjectPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitObjectPrimType(TypeScriptParser.ObjectPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReferencePrimType(TypeScriptParser.ReferencePrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReferencePrimType(TypeScriptParser.ReferencePrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryPrimType(TypeScriptParser.QueryPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryPrimType(TypeScriptParser.QueryPrimTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPredefinedType(TypeScriptParser.PredefinedTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredefinedType(TypeScriptParser.PredefinedTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeReference(TypeScriptParser.TypeReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeReference(TypeScriptParser.TypeReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeGeneric(TypeScriptParser.TypeGenericContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeGeneric(TypeScriptParser.TypeGenericContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeName(TypeScriptParser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeName(TypeScriptParser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterObjectType(TypeScriptParser.ObjectTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitObjectType(TypeScriptParser.ObjectTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeBody(TypeScriptParser.TypeBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeBody(TypeScriptParser.TypeBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeMemberList(TypeScriptParser.TypeMemberListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeMemberList(TypeScriptParser.TypeMemberListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeMember(TypeScriptParser.TypeMemberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeMember(TypeScriptParser.TypeMemberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayType(TypeScriptParser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayType(TypeScriptParser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTupleType(TypeScriptParser.TupleTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTupleType(TypeScriptParser.TupleTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTupleElementTypes(TypeScriptParser.TupleElementTypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTupleElementTypes(TypeScriptParser.TupleElementTypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionType(TypeScriptParser.FunctionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionType(TypeScriptParser.FunctionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructorType(TypeScriptParser.ConstructorTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructorType(TypeScriptParser.ConstructorTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeQuery(TypeScriptParser.TypeQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeQuery(TypeScriptParser.TypeQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeQueryExpression(TypeScriptParser.TypeQueryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeQueryExpression(TypeScriptParser.TypeQueryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertySignatur(TypeScriptParser.PropertySignaturContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertySignatur(TypeScriptParser.PropertySignaturContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeAnnotation(TypeScriptParser.TypeAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeAnnotation(TypeScriptParser.TypeAnnotationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCallSignature(TypeScriptParser.CallSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCallSignature(TypeScriptParser.CallSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameterList(TypeScriptParser.ParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameterList(TypeScriptParser.ParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRequiredParameterList(TypeScriptParser.RequiredParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRequiredParameterList(TypeScriptParser.RequiredParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameter(TypeScriptParser.ParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameter(TypeScriptParser.ParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOptionalParameter(TypeScriptParser.OptionalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOptionalParameter(TypeScriptParser.OptionalParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRestParameter(TypeScriptParser.RestParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRestParameter(TypeScriptParser.RestParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRequiredParameter(TypeScriptParser.RequiredParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRequiredParameter(TypeScriptParser.RequiredParameterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAccessibilityModifier(TypeScriptParser.AccessibilityModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAccessibilityModifier(TypeScriptParser.AccessibilityModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierOrPattern(TypeScriptParser.IdentifierOrPatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierOrPattern(TypeScriptParser.IdentifierOrPatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructSignature(TypeScriptParser.ConstructSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructSignature(TypeScriptParser.ConstructSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIndexSignature(TypeScriptParser.IndexSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIndexSignature(TypeScriptParser.IndexSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodSignature(TypeScriptParser.MethodSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodSignature(TypeScriptParser.MethodSignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeAliasDeclaration(TypeScriptParser.TypeAliasDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstructorDeclaration(TypeScriptParser.ConstructorDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceDeclaration(TypeScriptParser.InterfaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceExtendsClause(TypeScriptParser.InterfaceExtendsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceExtendsClause(TypeScriptParser.InterfaceExtendsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassOrInterfaceTypeList(TypeScriptParser.ClassOrInterfaceTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassOrInterfaceTypeList(TypeScriptParser.ClassOrInterfaceTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumDeclaration(TypeScriptParser.EnumDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumBody(TypeScriptParser.EnumBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumBody(TypeScriptParser.EnumBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumMemberList(TypeScriptParser.EnumMemberListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumMemberList(TypeScriptParser.EnumMemberListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnumMember(TypeScriptParser.EnumMemberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnumMember(TypeScriptParser.EnumMemberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamespaceDeclaration(TypeScriptParser.NamespaceDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamespaceName(TypeScriptParser.NamespaceNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamespaceName(TypeScriptParser.NamespaceNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportAliasDeclaration(TypeScriptParser.ImportAliasDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportAliasDeclaration(TypeScriptParser.ImportAliasDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecoratorList(TypeScriptParser.DecoratorListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecoratorList(TypeScriptParser.DecoratorListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecorator(TypeScriptParser.DecoratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecorator(TypeScriptParser.DecoratorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecoratorMemberExpression(TypeScriptParser.DecoratorMemberExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecoratorMemberExpression(TypeScriptParser.DecoratorMemberExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecoratorCallExpression(TypeScriptParser.DecoratorCallExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecoratorCallExpression(TypeScriptParser.DecoratorCallExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterProgram(TypeScriptParser.ProgramContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitProgram(TypeScriptParser.ProgramContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSourceElement(TypeScriptParser.SourceElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSourceElement(TypeScriptParser.SourceElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatement(TypeScriptParser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatement(TypeScriptParser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlock(TypeScriptParser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlock(TypeScriptParser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementList(TypeScriptParser.StatementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementList(TypeScriptParser.StatementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAbstractDeclaration(TypeScriptParser.AbstractDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportStatement(TypeScriptParser.ImportStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportStatement(TypeScriptParser.ImportStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportFromBlock(TypeScriptParser.ImportFromBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportFromBlock(TypeScriptParser.ImportFromBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportModuleItems(TypeScriptParser.ImportModuleItemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportModuleItems(TypeScriptParser.ImportModuleItemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportAliasName(TypeScriptParser.ImportAliasNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportAliasName(TypeScriptParser.ImportAliasNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModuleExportName(TypeScriptParser.ModuleExportNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModuleExportName(TypeScriptParser.ModuleExportNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportedBinding(TypeScriptParser.ImportedBindingContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportedBinding(TypeScriptParser.ImportedBindingContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportDefault(TypeScriptParser.ImportDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportDefault(TypeScriptParser.ImportDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportNamespace(TypeScriptParser.ImportNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportNamespace(TypeScriptParser.ImportNamespaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportFrom(TypeScriptParser.ImportFromContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportFrom(TypeScriptParser.ImportFromContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAliasName(TypeScriptParser.AliasNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAliasName(TypeScriptParser.AliasNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExportDeclaration(TypeScriptParser.ExportDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExportDefaultDeclaration(TypeScriptParser.ExportDefaultDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExportDefaultDeclaration(TypeScriptParser.ExportDefaultDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExportFromBlock(TypeScriptParser.ExportFromBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExportFromBlock(TypeScriptParser.ExportFromBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExportModuleItems(TypeScriptParser.ExportModuleItemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExportModuleItems(TypeScriptParser.ExportModuleItemsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExportAliasName(TypeScriptParser.ExportAliasNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExportAliasName(TypeScriptParser.ExportAliasNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeclaration(TypeScriptParser.DeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeclaration(TypeScriptParser.DeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableStatement(TypeScriptParser.VariableStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableStatement(TypeScriptParser.VariableStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableDeclarationList(TypeScriptParser.VariableDeclarationListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableDeclarationList(TypeScriptParser.VariableDeclarationListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariableDeclaration(TypeScriptParser.VariableDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEmptyStatement_(TypeScriptParser.EmptyStatement_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEmptyStatement_(TypeScriptParser.EmptyStatement_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpressionStatement(TypeScriptParser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpressionStatement(TypeScriptParser.ExpressionStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIfStatement(TypeScriptParser.IfStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIfStatement(TypeScriptParser.IfStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDoStatement(TypeScriptParser.DoStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDoStatement(TypeScriptParser.DoStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhileStatement(TypeScriptParser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhileStatement(TypeScriptParser.WhileStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForStatement(TypeScriptParser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForStatement(TypeScriptParser.ForStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForVarStatement(TypeScriptParser.ForVarStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForVarStatement(TypeScriptParser.ForVarStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForInStatement(TypeScriptParser.ForInStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForInStatement(TypeScriptParser.ForInStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForVarInStatement(TypeScriptParser.ForVarInStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForVarInStatement(TypeScriptParser.ForVarInStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForOfStatement(TypeScriptParser.ForOfStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForOfStatement(TypeScriptParser.ForOfStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForVarOfStatement(TypeScriptParser.ForVarOfStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForVarOfStatement(TypeScriptParser.ForVarOfStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVarModifier(TypeScriptParser.VarModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVarModifier(TypeScriptParser.VarModifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterContinueStatement(TypeScriptParser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitContinueStatement(TypeScriptParser.ContinueStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBreakStatement(TypeScriptParser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBreakStatement(TypeScriptParser.BreakStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReturnStatement(TypeScriptParser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReturnStatement(TypeScriptParser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterYieldStatement(TypeScriptParser.YieldStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitYieldStatement(TypeScriptParser.YieldStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWithStatement(TypeScriptParser.WithStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWithStatement(TypeScriptParser.WithStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchStatement(TypeScriptParser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchStatement(TypeScriptParser.SwitchStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCaseBlock(TypeScriptParser.CaseBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCaseBlock(TypeScriptParser.CaseBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCaseClauses(TypeScriptParser.CaseClausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCaseClauses(TypeScriptParser.CaseClausesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCaseClause(TypeScriptParser.CaseClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCaseClause(TypeScriptParser.CaseClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDefaultClause(TypeScriptParser.DefaultClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDefaultClause(TypeScriptParser.DefaultClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabelledStatement(TypeScriptParser.LabelledStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabelledStatement(TypeScriptParser.LabelledStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterThrowStatement(TypeScriptParser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitThrowStatement(TypeScriptParser.ThrowStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTryStatement(TypeScriptParser.TryStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTryStatement(TypeScriptParser.TryStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCatchProduction(TypeScriptParser.CatchProductionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCatchProduction(TypeScriptParser.CatchProductionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFinallyProduction(TypeScriptParser.FinallyProductionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFinallyProduction(TypeScriptParser.FinallyProductionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDebuggerStatement(TypeScriptParser.DebuggerStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDebuggerStatement(TypeScriptParser.DebuggerStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionDeclaration(TypeScriptParser.FunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassDeclaration(TypeScriptParser.ClassDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassHeritage(TypeScriptParser.ClassHeritageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassHeritage(TypeScriptParser.ClassHeritageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassTail(TypeScriptParser.ClassTailContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassTail(TypeScriptParser.ClassTailContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassExtendsClause(TypeScriptParser.ClassExtendsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassExtendsClause(TypeScriptParser.ClassExtendsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImplementsClause(TypeScriptParser.ImplementsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImplementsClause(TypeScriptParser.ImplementsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassElement(TypeScriptParser.ClassElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassElement(TypeScriptParser.ClassElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyDeclarationExpression(TypeScriptParser.PropertyDeclarationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx) { } + +} \ No newline at end of file -- Gitee From df52fc4b5c6cbfc013ed0c8e86ac605010e6a8cb Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:16:57 +0800 Subject: [PATCH 23/26] refatory ts parser base listener Signed-off-by: wangshi --- .../TypeScriptParserBaseListener.java | 1314 +++++++++++++++++ 1 file changed, 1314 insertions(+) diff --git a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java index 01529318..37945306 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java +++ b/src/intellij_plugin/ohosgen/src/main/java/antlr/typescript/TypeScriptParserBaseListener.java @@ -1580,5 +1580,1319 @@ public class TypeScriptParserBaseListener implements TypeScriptParserListener { *

The default implementation does nothing.

*/ @Override public void enterMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodDeclarationExpression(TypeScriptParser.MethodDeclarationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetterSetterDeclarationExpression(TypeScriptParser.GetterSetterDeclarationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetterSetterDeclarationExpression(TypeScriptParser.GetterSetterDeclarationExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAbstractMemberDeclaration(TypeScriptParser.AbstractMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAbstractMemberDeclaration(TypeScriptParser.AbstractMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyMemberBase(TypeScriptParser.PropertyMemberBaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyMemberBase(TypeScriptParser.PropertyMemberBaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIndexMemberDeclaration(TypeScriptParser.IndexMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIndexMemberDeclaration(TypeScriptParser.IndexMemberDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneratorMethod(TypeScriptParser.GeneratorMethodContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneratorMethod(TypeScriptParser.GeneratorMethodContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneratorFunctionDeclaration(TypeScriptParser.GeneratorFunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneratorFunctionDeclaration(TypeScriptParser.GeneratorFunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneratorBlock(TypeScriptParser.GeneratorBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneratorBlock(TypeScriptParser.GeneratorBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneratorDefinition(TypeScriptParser.GeneratorDefinitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneratorDefinition(TypeScriptParser.GeneratorDefinitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIteratorBlock(TypeScriptParser.IteratorBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIteratorBlock(TypeScriptParser.IteratorBlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIteratorDefinition(TypeScriptParser.IteratorDefinitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIteratorDefinition(TypeScriptParser.IteratorDefinitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassElementName(TypeScriptParser.ClassElementNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassElementName(TypeScriptParser.ClassElementNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrivateIdentifier(TypeScriptParser.PrivateIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrivateIdentifier(TypeScriptParser.PrivateIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFormalParameterList(TypeScriptParser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFormalParameterList(TypeScriptParser.FormalParameterListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFormalParameterArg(TypeScriptParser.FormalParameterArgContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFormalParameterArg(TypeScriptParser.FormalParameterArgContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLastFormalParameterArg(TypeScriptParser.LastFormalParameterArgContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLastFormalParameterArg(TypeScriptParser.LastFormalParameterArgContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionBody(TypeScriptParser.FunctionBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionBody(TypeScriptParser.FunctionBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSourceElements(TypeScriptParser.SourceElementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSourceElements(TypeScriptParser.SourceElementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayLiteral(TypeScriptParser.ArrayLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayLiteral(TypeScriptParser.ArrayLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementList(TypeScriptParser.ElementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementList(TypeScriptParser.ElementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayElement(TypeScriptParser.ArrayElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayElement(TypeScriptParser.ArrayElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterObjectLiteral(TypeScriptParser.ObjectLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitObjectLiteral(TypeScriptParser.ObjectLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyExpressionAssignment(TypeScriptParser.PropertyExpressionAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyExpressionAssignment(TypeScriptParser.PropertyExpressionAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComputedPropertyExpressionAssignment(TypeScriptParser.ComputedPropertyExpressionAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComputedPropertyExpressionAssignment(TypeScriptParser.ComputedPropertyExpressionAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyGetter(TypeScriptParser.PropertyGetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyGetter(TypeScriptParser.PropertyGetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertySetter(TypeScriptParser.PropertySetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertySetter(TypeScriptParser.PropertySetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodProperty(TypeScriptParser.MethodPropertyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodProperty(TypeScriptParser.MethodPropertyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyShorthand(TypeScriptParser.PropertyShorthandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyShorthand(TypeScriptParser.PropertyShorthandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSpreadOperator(TypeScriptParser.SpreadOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSpreadOperator(TypeScriptParser.SpreadOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRestParameterInObject(TypeScriptParser.RestParameterInObjectContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRestParameterInObject(TypeScriptParser.RestParameterInObjectContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetAccessor(TypeScriptParser.GetAccessorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetAccessor(TypeScriptParser.GetAccessorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetAccessor(TypeScriptParser.SetAccessorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetAccessor(TypeScriptParser.SetAccessorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyName(TypeScriptParser.PropertyNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyName(TypeScriptParser.PropertyNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArguments(TypeScriptParser.ArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArguments(TypeScriptParser.ArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgumentList(TypeScriptParser.ArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgumentList(TypeScriptParser.ArgumentListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgument(TypeScriptParser.ArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgument(TypeScriptParser.ArgumentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpressionSequence(TypeScriptParser.ExpressionSequenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpressionSequence(TypeScriptParser.ExpressionSequenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTemplateStringExpression(TypeScriptParser.TemplateStringExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTemplateStringExpression(TypeScriptParser.TemplateStringExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneratorsExpression(TypeScriptParser.GeneratorsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneratorsExpression(TypeScriptParser.GeneratorsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPowerExpression(TypeScriptParser.PowerExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPowerExpression(TypeScriptParser.PowerExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInExpression(TypeScriptParser.InExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInExpression(TypeScriptParser.InExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGenericTypes(TypeScriptParser.GenericTypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGenericTypes(TypeScriptParser.GenericTypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOptionalChainExpression(TypeScriptParser.OptionalChainExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOptionalChainExpression(TypeScriptParser.OptionalChainExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArgumentsExpression(TypeScriptParser.ArgumentsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArgumentsExpression(TypeScriptParser.ArgumentsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterThisExpression(TypeScriptParser.ThisExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitThisExpression(TypeScriptParser.ThisExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeofExpression(TypeScriptParser.TypeofExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeofExpression(TypeScriptParser.TypeofExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGeneratorsFunctionExpression(TypeScriptParser.GeneratorsFunctionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGeneratorsFunctionExpression(TypeScriptParser.GeneratorsFunctionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEqualityExpression(TypeScriptParser.EqualityExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEqualityExpression(TypeScriptParser.EqualityExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBitXOrExpression(TypeScriptParser.BitXOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBitXOrExpression(TypeScriptParser.BitXOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCastAsExpression(TypeScriptParser.CastAsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCastAsExpression(TypeScriptParser.CastAsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultiplicativeExpression(TypeScriptParser.MultiplicativeExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultiplicativeExpression(TypeScriptParser.MultiplicativeExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBitShiftExpression(TypeScriptParser.BitShiftExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBitShiftExpression(TypeScriptParser.BitShiftExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdditiveExpression(TypeScriptParser.AdditiveExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdditiveExpression(TypeScriptParser.AdditiveExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelationalExpression(TypeScriptParser.RelationalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelationalExpression(TypeScriptParser.RelationalExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBitNotExpression(TypeScriptParser.BitNotExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBitNotExpression(TypeScriptParser.BitNotExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNewExpression(TypeScriptParser.NewExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNewExpression(TypeScriptParser.NewExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteralExpression(TypeScriptParser.LiteralExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteralExpression(TypeScriptParser.LiteralExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayLiteralExpression(TypeScriptParser.ArrayLiteralExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayLiteralExpression(TypeScriptParser.ArrayLiteralExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMemberDotExpression(TypeScriptParser.MemberDotExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMemberDotExpression(TypeScriptParser.MemberDotExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMemberIndexExpression(TypeScriptParser.MemberIndexExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMemberIndexExpression(TypeScriptParser.MemberIndexExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBitAndExpression(TypeScriptParser.BitAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBitAndExpression(TypeScriptParser.BitAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBitOrExpression(TypeScriptParser.BitOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBitOrExpression(TypeScriptParser.BitOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignmentOperatorExpression(TypeScriptParser.AssignmentOperatorExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignmentOperatorExpression(TypeScriptParser.AssignmentOperatorExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVoidExpression(TypeScriptParser.VoidExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVoidExpression(TypeScriptParser.VoidExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTernaryExpression(TypeScriptParser.TernaryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTernaryExpression(TypeScriptParser.TernaryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLogicalAndExpression(TypeScriptParser.LogicalAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLogicalAndExpression(TypeScriptParser.LogicalAndExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPreIncrementExpression(TypeScriptParser.PreIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPreIncrementExpression(TypeScriptParser.PreIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterObjectLiteralExpression(TypeScriptParser.ObjectLiteralExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitObjectLiteralExpression(TypeScriptParser.ObjectLiteralExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLogicalOrExpression(TypeScriptParser.LogicalOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLogicalOrExpression(TypeScriptParser.LogicalOrExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNonNullAssertionExpression(TypeScriptParser.NonNullAssertionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNonNullAssertionExpression(TypeScriptParser.NonNullAssertionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNotExpression(TypeScriptParser.NotExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNotExpression(TypeScriptParser.NotExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPreDecreaseExpression(TypeScriptParser.PreDecreaseExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPreDecreaseExpression(TypeScriptParser.PreDecreaseExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAwaitExpression(TypeScriptParser.AwaitExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAwaitExpression(TypeScriptParser.AwaitExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionExpression(TypeScriptParser.FunctionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionExpression(TypeScriptParser.FunctionExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnaryMinusExpression(TypeScriptParser.UnaryMinusExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnaryMinusExpression(TypeScriptParser.UnaryMinusExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignmentExpression(TypeScriptParser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignmentExpression(TypeScriptParser.AssignmentExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostDecreaseExpression(TypeScriptParser.PostDecreaseExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostDecreaseExpression(TypeScriptParser.PostDecreaseExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInstanceofExpression(TypeScriptParser.InstanceofExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInstanceofExpression(TypeScriptParser.InstanceofExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnaryPlusExpression(TypeScriptParser.UnaryPlusExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnaryPlusExpression(TypeScriptParser.UnaryPlusExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeleteExpression(TypeScriptParser.DeleteExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeleteExpression(TypeScriptParser.DeleteExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIteratorsExpression(TypeScriptParser.IteratorsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIteratorsExpression(TypeScriptParser.IteratorsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSuperExpression(TypeScriptParser.SuperExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSuperExpression(TypeScriptParser.SuperExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesizedExpression(TypeScriptParser.ParenthesizedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesizedExpression(TypeScriptParser.ParenthesizedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPostIncrementExpression(TypeScriptParser.PostIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPostIncrementExpression(TypeScriptParser.PostIncrementExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterYieldExpression(TypeScriptParser.YieldExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitYieldExpression(TypeScriptParser.YieldExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterClassExpression(TypeScriptParser.ClassExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitClassExpression(TypeScriptParser.ClassExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierExpression(TypeScriptParser.IdentifierExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierExpression(TypeScriptParser.IdentifierExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCoalesceExpression(TypeScriptParser.CoalesceExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCoalesceExpression(TypeScriptParser.CoalesceExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAsExpression(TypeScriptParser.AsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAsExpression(TypeScriptParser.AsExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignable(TypeScriptParser.AssignableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignable(TypeScriptParser.AssignableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnonymousFunction(TypeScriptParser.AnonymousFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnonymousFunction(TypeScriptParser.AnonymousFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrowFunctionDeclaration(TypeScriptParser.ArrowFunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrowFunctionDeclaration(TypeScriptParser.ArrowFunctionDeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrowFunctionParameters(TypeScriptParser.ArrowFunctionParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrowFunctionParameters(TypeScriptParser.ArrowFunctionParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrowFunctionBody(TypeScriptParser.ArrowFunctionBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrowFunctionBody(TypeScriptParser.ArrowFunctionBodyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignmentOperator(TypeScriptParser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignmentOperator(TypeScriptParser.AssignmentOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteral(TypeScriptParser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteral(TypeScriptParser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTemplateStringLiteral(TypeScriptParser.TemplateStringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTemplateStringLiteral(TypeScriptParser.TemplateStringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTemplateStringAtom(TypeScriptParser.TemplateStringAtomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTemplateStringAtom(TypeScriptParser.TemplateStringAtomContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumericLiteral(TypeScriptParser.NumericLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumericLiteral(TypeScriptParser.NumericLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBigintLiteral(TypeScriptParser.BigintLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBigintLiteral(TypeScriptParser.BigintLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGetter(TypeScriptParser.GetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGetter(TypeScriptParser.GetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetter(TypeScriptParser.SetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetter(TypeScriptParser.SetterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierName(TypeScriptParser.IdentifierNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierName(TypeScriptParser.IdentifierNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifier(TypeScriptParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifier(TypeScriptParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierOrKeyWord(TypeScriptParser.IdentifierOrKeyWordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierOrKeyWord(TypeScriptParser.IdentifierOrKeyWordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReservedWord(TypeScriptParser.ReservedWordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReservedWord(TypeScriptParser.ReservedWordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKeyword(TypeScriptParser.KeywordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKeyword(TypeScriptParser.KeywordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEos(TypeScriptParser.EosContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEos(TypeScriptParser.EosContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } } \ No newline at end of file -- Gitee From e60bb633137cf8a8ae3f0876c010cb3cfcee4cab Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 10:49:54 +0800 Subject: [PATCH 24/26] fix code check of constants Signed-off-by: wangshi --- .../src/main/java/utils/Constants.java | 167 +++++++++++++++++- 1 file changed, 162 insertions(+), 5 deletions(-) diff --git a/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java b/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java index 98499147..a779fd50 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java +++ b/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java @@ -25,64 +25,221 @@ package utils; * @version 1.0 */ public class Constants { + /** + * 解析c/cpp代码 + */ public static final int PARSE_C_CPP_LANGUAGE = 1; + /** + * 解析ts代码 + */ public static final int PARSE_TS_LANGUAGE = 2; - + /** + * 解析ts 抽象类 + */ public static final int PARSE_TS_ABSTRACT = 1; + /** + * 解析ts 类 + */ public static final int PARSE_TS_CLASS = 2; + /** + * 解析ts 枚举型 + */ public static final int PARSE_TS_ENUM = 3; + /** + * 解析ts export + */ public static final int PARSE_TS_EXPORT = 4; + /** + * 解析ts 方法 + */ public static final int PARSE_TS_FUNCTION = 5; + /** + * 解析ts 通用类 + */ public static final int PARSE_TS_GENERIC = 6; + /** + * 解析ts 通用class + */ public static final int PARSE_TS_GENERIC_CLASS = 7; + /** + * 解析ts interface + */ public static final int PARSE_TS_GENERIC_INTERFACE = 8; + /** + * 解析ts 导入 + */ public static final int PARSE_TS_IMPORT = 9; + /** + * 解析ts 接口 + */ public static final int PARSE_TS_INTERFACE = 10; + /** + * 解析ts js 类 + */ public static final int PARSE_TS_JS_CLASS = 11; + /** + * 解析ts 循环 + */ public static final int PARSE_TS_LOOP = 12; + /** + * 解析ts 模块 + */ public static final int PARSE_TS_MODULE = 13; + /** + * 解析ts not null + */ public static final int PARSE_TS_NON_NULL = 14; + /** + * 解析ts 初始化 + */ public static final int PARSE_TS_OBJECT_INITIALIZER = 15; + /** + * 解析ts 状态 + */ public static final int PARSE_TS_STATEMENT = 16; + /** + * 解析ts 模板 + */ public static final int PARSE_TS_TEMPLATE_STRING = 17; + /** + * 解析ts 类型定义 + */ public static final int PARSE_TS_TYPE = 18; + /** + * 解析ts 变量 + */ public static final int PARSE_TS_VARIABLE = 19; + /** + * 解析ts 退出解析 + */ public static final int PARSE_TS_EXIT_TRANSLATION = 20; - + /** + * 解析c/cpp 类 + */ public static final int PARSE_C_CPP_CLASS = 51; + /** + * 解析c/cpp 属性 + */ public static final int PARSE_C_CPP_ATTRIBUTE = 52; + /** + * 解析c/cpp 成员 + */ public static final int PARSE_C_CPP_MEMBER = 53; + /** + * 解析c/cpp 方法 + */ public static final int PARSE_C_CPP_FUNCTION = 54; + /** + * 解析c/cpp 枚举 + */ public static final int PARSE_C_CPP_ENUM = 55; + /** + * 解析c/cpp 类型定义 + */ public static final int PARSE_C_CPP_TYPE = 56; + /** + * 解析c/cpp 模板类 + */ public static final int PARSE_C_CPP_TEMPLATE = 57; + /** + * 解析c/cpp 联合体 + */ public static final int PARSE_C_CPP_UNION = 58; + /** + * 解析c/cpp 结构体 + */ public static final int PARSE_C_CPP_STRUCT = 59; + /** + * 解析c/cpp 宏定义 + */ public static final int PARSE_C_CPP_MACRO = 60; + /** + * 解析c/cpp 指针 + */ public static final int PARSE_C_CPP_POINT = 61; + /** + * 解析c/cpp 纯虚 + */ public static final int PARSE_C_CPP_PURE = 62; + /** + * 解析c/cpp 退出遍历 + */ public static final int PARSE_C_CPP_EXIT_TRANSLATION = 63; - + /** + * 十分之 + */ public static final int TEN_PERCENT = 10; + /** + * 百分之 + */ public static final int HUNDRED_PERCENT = 100; + /** + * 千分之 + */ public static final int THOUSAND_PERCENT = 1000; - + /** + * 开始状态 + */ public static final String START_STATUS = "start"; + /** + * 暂停状态 + */ public static final String PAUSE_STATUS = "pause"; + /** + * 恢复状态 + */ public static final String RESUME_STATUS = "resume"; + /** + * 停止状态 + */ public static final String STOP_STATUS = "stop"; + /** + * 完成状态 + */ public static final String COMPLETE_STATUS = "complete"; + /** + * 结束状态 + */ public static final String FINISH_STATUS = "finish"; - + /** + * c/cpp开始消息 + */ public static final String C_CPP_START_MSG = "c/cpp parse char stream start"; + /** + * ts开始消息 + */ public static final String TS_START_MSG = "ts parse char stream start"; + /** + * c/cpp 暂停消息 + */ public static final String C_CPP_PAUSE_MSG = "c/cpp parse char stream pause"; + /** + * ts 暂停消息 + */ public static final String TS_PAUSE_MSG = "ts parse char stream pause"; + /** + * c/cpp 恢复消息 + */ public static final String C_CPP_RESUME_MSG = "c/cpp parse char stream resume"; + /** + * ts 恢复消息 + */ public static final String TS_RESUME_MSG = "ts parse char stream resume"; + /** + * c/cpp 结束消息 + */ public static final String C_CPP_FINISH_MSG = "c/cpp parse char stream finish"; + /** + * ts 结束消息 + */ public static final String TS_FINISH_MSG = "ts parse char stream finish"; + /** + * c/cpp 完成消息 + */ public static final String C_CPP_COMPLETE_MSG = "c/cpp parse char stream complete"; + /** + * ts 完成消息 + */ public static final String TS_COMPLETE_MSG = "ts parse char stream complete"; } -- Gitee From be898aaf34d2be9dbccaeca7f92b71ed58ca1258 Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 11:38:16 +0800 Subject: [PATCH 25/26] fix code check Signed-off-by: wangshi --- .../src/main/java/parse/ParseBase.java | 36 ++++++++++++- .../src/main/java/utils/Constants.java | 54 ++++++++++++++++++- 2 files changed, 87 insertions(+), 3 deletions(-) diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java index 5f1d86bc..a16e3f21 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java @@ -19,7 +19,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import grammar.*; import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.CharStreams; import utils.BaseEvent; import utils.BaseListener; import utils.Constants; @@ -37,12 +36,37 @@ import java.util.concurrent.CopyOnWriteArrayList; * @since 2025-02-28 */ public abstract class ParseBase { + + /** + * 文件内容 + */ protected String fileContent; + + /** + * 文件char stream + */ protected CharStream fcStream; + + /** + * 状态 + */ protected String status; + + /** + * 进度消息 + */ protected String procMsg; + + /** + * 进度数据 + */ protected int progress; + + /** + * 总进度 + */ protected int totalProgress = Constants.HUNDRED_PERCENT; + /** * 存储所有监听回调 */ @@ -69,7 +93,7 @@ public abstract class ParseBase { * @param msg 消息 * @param process 进度 */ - protected void SendEvent(String status, String msg, int process) { + protected void sendEvent(String status, String msg, int process) { this.procMsg = msg; this.status = status; this.progress = process; @@ -173,4 +197,12 @@ public abstract class ParseBase { protected TypeObj[] parseType() { return new TypeObj[0]; } + + /** + * 接收解析结果 + * @param pi2 + */ + public void receive(ParseTaskInfo pi2) { + System.out.println("receive parse result: " + pi2.getJsonData()); + } } diff --git a/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java b/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java index a779fd50..af26815d 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java +++ b/src/intellij_plugin/ohosgen/src/main/java/utils/Constants.java @@ -29,217 +29,269 @@ public class Constants { * 解析c/cpp代码 */ public static final int PARSE_C_CPP_LANGUAGE = 1; + /** * 解析ts代码 */ public static final int PARSE_TS_LANGUAGE = 2; + /** * 解析ts 抽象类 */ public static final int PARSE_TS_ABSTRACT = 1; + /** * 解析ts 类 */ public static final int PARSE_TS_CLASS = 2; + /** * 解析ts 枚举型 */ public static final int PARSE_TS_ENUM = 3; + /** * 解析ts export */ public static final int PARSE_TS_EXPORT = 4; + /** * 解析ts 方法 */ public static final int PARSE_TS_FUNCTION = 5; + /** * 解析ts 通用类 */ public static final int PARSE_TS_GENERIC = 6; + /** * 解析ts 通用class */ public static final int PARSE_TS_GENERIC_CLASS = 7; + /** * 解析ts interface */ public static final int PARSE_TS_GENERIC_INTERFACE = 8; + /** * 解析ts 导入 */ public static final int PARSE_TS_IMPORT = 9; + /** * 解析ts 接口 */ public static final int PARSE_TS_INTERFACE = 10; + /** * 解析ts js 类 */ public static final int PARSE_TS_JS_CLASS = 11; + /** * 解析ts 循环 */ public static final int PARSE_TS_LOOP = 12; + /** * 解析ts 模块 */ public static final int PARSE_TS_MODULE = 13; + /** * 解析ts not null */ public static final int PARSE_TS_NON_NULL = 14; + /** * 解析ts 初始化 */ public static final int PARSE_TS_OBJECT_INITIALIZER = 15; + /** * 解析ts 状态 */ public static final int PARSE_TS_STATEMENT = 16; + /** * 解析ts 模板 */ public static final int PARSE_TS_TEMPLATE_STRING = 17; + /** * 解析ts 类型定义 */ public static final int PARSE_TS_TYPE = 18; + /** * 解析ts 变量 */ public static final int PARSE_TS_VARIABLE = 19; + /** * 解析ts 退出解析 */ public static final int PARSE_TS_EXIT_TRANSLATION = 20; + /** * 解析c/cpp 类 */ public static final int PARSE_C_CPP_CLASS = 51; + /** * 解析c/cpp 属性 */ public static final int PARSE_C_CPP_ATTRIBUTE = 52; + /** * 解析c/cpp 成员 */ public static final int PARSE_C_CPP_MEMBER = 53; + /** * 解析c/cpp 方法 */ public static final int PARSE_C_CPP_FUNCTION = 54; + /** * 解析c/cpp 枚举 */ public static final int PARSE_C_CPP_ENUM = 55; + /** * 解析c/cpp 类型定义 */ public static final int PARSE_C_CPP_TYPE = 56; + /** * 解析c/cpp 模板类 */ public static final int PARSE_C_CPP_TEMPLATE = 57; + /** * 解析c/cpp 联合体 */ public static final int PARSE_C_CPP_UNION = 58; + /** * 解析c/cpp 结构体 */ public static final int PARSE_C_CPP_STRUCT = 59; + /** * 解析c/cpp 宏定义 */ public static final int PARSE_C_CPP_MACRO = 60; + /** * 解析c/cpp 指针 */ public static final int PARSE_C_CPP_POINT = 61; + /** * 解析c/cpp 纯虚 */ public static final int PARSE_C_CPP_PURE = 62; + /** * 解析c/cpp 退出遍历 */ public static final int PARSE_C_CPP_EXIT_TRANSLATION = 63; + /** * 十分之 */ public static final int TEN_PERCENT = 10; + /** * 百分之 */ public static final int HUNDRED_PERCENT = 100; + /** * 千分之 */ public static final int THOUSAND_PERCENT = 1000; + /** * 开始状态 */ public static final String START_STATUS = "start"; + /** * 暂停状态 */ public static final String PAUSE_STATUS = "pause"; + /** * 恢复状态 */ public static final String RESUME_STATUS = "resume"; + /** * 停止状态 */ public static final String STOP_STATUS = "stop"; + /** * 完成状态 */ public static final String COMPLETE_STATUS = "complete"; + /** * 结束状态 */ public static final String FINISH_STATUS = "finish"; + /** * c/cpp开始消息 */ public static final String C_CPP_START_MSG = "c/cpp parse char stream start"; + /** * ts开始消息 */ public static final String TS_START_MSG = "ts parse char stream start"; + /** * c/cpp 暂停消息 */ public static final String C_CPP_PAUSE_MSG = "c/cpp parse char stream pause"; + /** * ts 暂停消息 */ public static final String TS_PAUSE_MSG = "ts parse char stream pause"; + /** * c/cpp 恢复消息 */ public static final String C_CPP_RESUME_MSG = "c/cpp parse char stream resume"; + /** * ts 恢复消息 */ public static final String TS_RESUME_MSG = "ts parse char stream resume"; + /** * c/cpp 结束消息 */ public static final String C_CPP_FINISH_MSG = "c/cpp parse char stream finish"; + /** * ts 结束消息 */ public static final String TS_FINISH_MSG = "ts parse char stream finish"; + /** * c/cpp 完成消息 */ public static final String C_CPP_COMPLETE_MSG = "c/cpp parse char stream complete"; + /** * ts 完成消息 */ public static final String TS_COMPLETE_MSG = "ts parse char stream complete"; - } -- Gitee From def539c55c3f0752f6c19050f7c531715bfb5dfd Mon Sep 17 00:00:00 2001 From: wangshi Date: Tue, 11 Mar 2025 13:48:24 +0800 Subject: [PATCH 26/26] fix code check Signed-off-by: wangshi --- src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java index a16e3f21..0be7e4e8 100644 --- a/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java +++ b/src/intellij_plugin/ohosgen/src/main/java/parse/ParseBase.java @@ -200,7 +200,8 @@ public abstract class ParseBase { /** * 接收解析结果 - * @param pi2 + * + * @param pi2 解析结构 */ public void receive(ParseTaskInfo pi2) { System.out.println("receive parse result: " + pi2.getJsonData()); -- Gitee