Parsing Winx sourcecode into an interpretable JSON format
This commit is contained in:
15
pom.xml
15
pom.xml
@@ -14,4 +14,19 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
|
<artifactId>jackson-databind</artifactId>
|
||||||
|
<version>2.17.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.antlr</groupId>
|
||||||
|
<artifactId>antlr4-runtime</artifactId>
|
||||||
|
<version>4.13.1</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -2,54 +2,45 @@ grammar Winx;
|
|||||||
|
|
||||||
// Lexer rules
|
// Lexer rules
|
||||||
ID : [a-zA-Z]+ ;
|
ID : [a-zA-Z]+ ;
|
||||||
STRING : '"' ~'"'* '"' ;
|
|
||||||
NEWLINE : [\r\n]+ -> skip;
|
|
||||||
COMMENT : ('~' ~[~]*? '~') | ('//' ~[\r\n]* NEWLINE) ;
|
|
||||||
WS : [ \t\r\n]+ -> skip ;
|
|
||||||
INT : [0-9]+ ;
|
INT : [0-9]+ ;
|
||||||
FLOAT : [0-9]+ '.' [0-9]* | '.' [0-9]+ ;
|
FLOAT : [0-9]+ '.' [0-9]* | '.' [0-9]+ ;
|
||||||
|
STRING : '"' ('\\' ["\\] | ~["\\])* '"';
|
||||||
|
WS : [ \t\r\n]+ -> skip ;
|
||||||
|
|
||||||
|
// Flexible handling of comments
|
||||||
|
COMMENT : ('~' .*? '~') -> channel(HIDDEN);
|
||||||
|
LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN);
|
||||||
|
|
||||||
// Parser rules
|
// Parser rules
|
||||||
|
winx : package+ ;
|
||||||
winx : (package | COMMENT)+;
|
|
||||||
|
|
||||||
body : (interface | specification| COMMENT)+ ;
|
|
||||||
|
|
||||||
// Hierarchies
|
|
||||||
|
|
||||||
package : 'package' ID '{' body '}' ;
|
package : 'package' ID '{' body '}' ;
|
||||||
|
|
||||||
interface : importance? access_modifiers? 'interface' ID '{' spec_body '}' ;
|
body : (interface | specification)* ;
|
||||||
|
|
||||||
specification : 'specification' ID ('implements' ID)? '{' spec_body '}' ;
|
interface : importance? 'interface' ID '{' spec_body '}' ;
|
||||||
|
|
||||||
spec_body : (requirement_spec | function_spec)+ ;
|
specification: 'specification' ID impls? '{' spec_body '}' ;
|
||||||
|
|
||||||
|
impls : ('implements' ID) ;
|
||||||
|
|
||||||
|
spec_body : (requirement_spec | function_spec)* ;
|
||||||
|
|
||||||
// Non-functional Requirements
|
requirement_spec: importance? ID '{' req_specification* result_specification* '}' ;
|
||||||
|
|
||||||
requirement_spec : comment? importance? ID '{' req_specification* result_specification* '}' ;
|
req_specification: importance? '@' ID (logical_op ID)* ';' ;
|
||||||
|
|
||||||
req_specification : comment? importance? '@' ID (logical_op ID)* ';' ;
|
result_specification: 'result' importance? ID ';' ;
|
||||||
|
|
||||||
result_specification : comment? 'result' importance? ID ';' ;
|
function_spec: importance? access_modifiers? ID '(' input_types? ')' impls? function_body ;
|
||||||
|
|
||||||
logical_op : 'AND' | 'OR' ;
|
function_body: '{' specification_entry* return_type '}';
|
||||||
|
|
||||||
// Functional Requirements
|
|
||||||
|
|
||||||
function_spec : comment? importance? access_modifiers? ID'(' input_types? ')' ('implements' ID)? function_body;
|
|
||||||
|
|
||||||
function_body : '{' specification_entry* return_types '}';
|
|
||||||
|
|
||||||
input_types : variable (',' variable)* ;
|
input_types : variable (',' variable)* ;
|
||||||
|
|
||||||
return_types : 'return' variable (',' variable)* ';' ;
|
return_type : 'return' variable ';' ;
|
||||||
|
|
||||||
specification_entry : comment? '@' ID ':'STRING';';
|
specification_entry: '@' ID ':' STRING ';' ;
|
||||||
|
|
||||||
// General Rules
|
|
||||||
|
|
||||||
variable : type '[]'? ID;
|
variable : type '[]'? ID;
|
||||||
|
|
||||||
@@ -64,21 +55,21 @@ type : 'INT'
|
|||||||
| 'VOID'
|
| 'VOID'
|
||||||
| STRING;
|
| STRING;
|
||||||
|
|
||||||
access_modifiers : 'public'
|
access_modifiers: 'public'
|
||||||
| 'protected'
|
| 'protected'
|
||||||
| 'private'
|
| 'private'
|
||||||
| 'default';
|
| 'default';
|
||||||
|
|
||||||
comment : COMMENT;
|
// Logical operators if needed for parsing complexity within annotations
|
||||||
|
logical_op : 'AND' | 'OR';
|
||||||
|
|
||||||
// Symbols
|
// Symbols
|
||||||
LPAREN : '(' ;
|
LPAREN : '(';
|
||||||
RPAREN : ')' ;
|
RPAREN : ')';
|
||||||
COLON : ':' ;
|
COLON : ':';
|
||||||
SEMICOLON : ';' ;
|
SEMICOLON : ';';
|
||||||
COMMA : ',' ;
|
COMMA : ',';
|
||||||
LBRACE : '{' ;
|
LBRACE : '{';
|
||||||
RBRACE : '}' ;
|
RBRACE : '}';
|
||||||
TILDE : '~' ;
|
TILDE : '~';
|
||||||
EXCLAM : '!' ;
|
EXCLAM : '!';
|
||||||
|
|||||||
@@ -1,37 +1,54 @@
|
|||||||
package org.lumijiez;
|
package org.lumijiez;
|
||||||
|
|
||||||
import org.antlr.v4.runtime.CharStream;
|
import org.antlr.v4.runtime.*;
|
||||||
import org.antlr.v4.runtime.CharStreams;
|
import org.antlr.v4.runtime.tree.ParseTree;
|
||||||
import org.antlr.v4.runtime.CommonTokenStream;
|
import org.lumijiez.models.Package;
|
||||||
import org.antlr.v4.runtime.tree.ParseTreeWalker;
|
|
||||||
import org.lumijiez.parser.WinxBaseListener;
|
|
||||||
import org.lumijiez.parser.WinxLexer;
|
import org.lumijiez.parser.WinxLexer;
|
||||||
import org.lumijiez.parser.WinxParser;
|
import org.lumijiez.parser.WinxParser;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) throws IOException, URISyntaxException {
|
public static void main(String[] args) {
|
||||||
String input = new String(Files.readAllBytes(Path.of(Objects.requireNonNull(Main.class.getResource("/TestProgram.txt")).toURI())));
|
try {
|
||||||
|
// Load the input from a resource file
|
||||||
|
Path inputPath = Path.of(Objects.requireNonNull(Main.class.getResource("/TestProgram.txt")).toURI());
|
||||||
|
String input = Files.readString(inputPath);
|
||||||
|
|
||||||
|
// Initialize ANTLR components
|
||||||
CharStream inputStream = CharStreams.fromString(input);
|
CharStream inputStream = CharStreams.fromString(input);
|
||||||
WinxLexer lexer = new WinxLexer(inputStream);
|
WinxLexer lexer = new WinxLexer(inputStream);
|
||||||
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
|
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
|
||||||
WinxParser parser = new WinxParser(tokenStream);
|
WinxParser parser = new WinxParser(tokenStream);
|
||||||
|
|
||||||
ParseTreeWalker walker = new ParseTreeWalker();
|
// Parsing the input
|
||||||
SoftwareReqParseTree listener = new SoftwareReqParseTree();
|
ParseTree tree = parser.winx();
|
||||||
walker.walk(listener, parser.winx());
|
|
||||||
|
// Creating and using the collector to process the parse tree
|
||||||
|
WinxCollector collector = new WinxCollector();
|
||||||
|
collector.visit(tree);
|
||||||
|
|
||||||
|
// Retrieve the collected data and save it to JSON
|
||||||
|
List<Package> packages = collector.getPackages();
|
||||||
|
saveAsJson(packages, "output.json");
|
||||||
|
|
||||||
|
System.out.println("Data successfully saved to 'output.json'.");
|
||||||
|
} catch (IOException | URISyntaxException e) {
|
||||||
|
System.err.println("Error processing the input file: " + e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static class SoftwareReqParseTree extends WinxBaseListener {
|
private static void saveAsJson(List<Package> packages, String filePath) throws IOException {
|
||||||
@Override
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
public void enterWinx(WinxParser.WinxContext ctx) {
|
// Write JSON output to a file with pretty printing
|
||||||
System.out.println("Parsed! \n\n" + ctx.getText());
|
mapper.writerWithDefaultPrettyPrinter().writeValue(new File(filePath), packages);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
106
src/main/java/org/lumijiez/WinxCollector.java
Normal file
106
src/main/java/org/lumijiez/WinxCollector.java
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
package org.lumijiez;
|
||||||
|
|
||||||
|
import org.lumijiez.models.*;
|
||||||
|
import org.lumijiez.models.Package;
|
||||||
|
import org.lumijiez.parser.WinxBaseVisitor;
|
||||||
|
import org.lumijiez.parser.WinxParser;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class WinxCollector extends WinxBaseVisitor<Void> {
|
||||||
|
private final List<Package> packages = new ArrayList<>();
|
||||||
|
private Package currentPackage;
|
||||||
|
private Specification currentSpecification;
|
||||||
|
private Interface currentInterface;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitPackage(WinxParser.PackageContext ctx) {
|
||||||
|
String packageName = ctx.ID().getText();
|
||||||
|
currentPackage = new Package(packageName);
|
||||||
|
visitChildren(ctx); // Recursively visit children to fill the package
|
||||||
|
packages.add(currentPackage);
|
||||||
|
currentPackage = null; // Reset after finishing this package
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitInterface(WinxParser.InterfaceContext ctx) {
|
||||||
|
String interfaceName = ctx.ID().getText();
|
||||||
|
currentInterface = new Interface(interfaceName);
|
||||||
|
visitChildren(ctx); // Recursively visit children to fill the interface
|
||||||
|
currentPackage.addInterface(currentInterface);
|
||||||
|
currentInterface = null; // Reset after finishing this interface
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitSpecification(WinxParser.SpecificationContext ctx) {
|
||||||
|
String specificationName = ctx.ID().getText();
|
||||||
|
currentSpecification = new Specification(specificationName);
|
||||||
|
if (ctx.impls() != null) {
|
||||||
|
currentSpecification.setImplementedInterface(ctx.impls().ID().getText());
|
||||||
|
}
|
||||||
|
visitChildren(ctx);
|
||||||
|
currentPackage.addSpecification(currentSpecification);
|
||||||
|
currentSpecification = null;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitFunction_spec(WinxParser.Function_specContext ctx) {
|
||||||
|
String functionName = ctx.ID().getText();
|
||||||
|
FunctionSpec function = new FunctionSpec(functionName);
|
||||||
|
if (ctx.input_types() != null) {
|
||||||
|
ctx.input_types().variable().forEach(v -> function.addInputType(new Variable(v.type().getText(), v.ID().getText())));
|
||||||
|
}
|
||||||
|
|
||||||
|
function.addReturnType(new Variable(ctx.function_body().return_type().variable().type().getText(), ctx.function_body().return_type().variable().ID().getText()));
|
||||||
|
|
||||||
|
if (ctx.impls() != null) function.setImplemented_interface(ctx.impls().ID().getText());
|
||||||
|
|
||||||
|
if (ctx.function_body().specification_entry() != null)
|
||||||
|
ctx.function_body().specification_entry().forEach(
|
||||||
|
se -> function.addSpecificationEntry(new SpecificationEntry(se.ID().getText(), se.STRING().getText())));
|
||||||
|
|
||||||
|
function.setAccess_modifier(ctx.access_modifiers().getText());
|
||||||
|
if (currentInterface != null) {
|
||||||
|
currentInterface.addFunction(function);
|
||||||
|
} else if (currentSpecification != null) {
|
||||||
|
currentSpecification.addFunction(function);
|
||||||
|
}
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitRequirement_spec(WinxParser.Requirement_specContext ctx) {
|
||||||
|
RequirementSpec requirement = new RequirementSpec(ctx.ID().getText());
|
||||||
|
ctx.req_specification().forEach(rs -> requirement.addAnnotation(
|
||||||
|
new Spec(rs.ID(0).getText(), rs.importance().getText())
|
||||||
|
));
|
||||||
|
if (currentSpecification != null) {
|
||||||
|
currentSpecification.addRequirement(requirement);
|
||||||
|
}
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitResult_specification(WinxParser.Result_specificationContext ctx) {
|
||||||
|
ResultSpecification result;
|
||||||
|
|
||||||
|
if (ctx.importance() != null) {
|
||||||
|
result = new ResultSpecification(ctx.ID().getText(), ctx.importance().getText());
|
||||||
|
} else {
|
||||||
|
result = new ResultSpecification(ctx.ID().getText());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSpecification != null) {
|
||||||
|
currentSpecification.addResult(result);
|
||||||
|
}
|
||||||
|
return visitChildren(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Package> getPackages() {
|
||||||
|
return packages;
|
||||||
|
}
|
||||||
|
}
|
||||||
61
src/main/java/org/lumijiez/models/FunctionSpec.java
Normal file
61
src/main/java/org/lumijiez/models/FunctionSpec.java
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FunctionSpec {
|
||||||
|
private final String name;
|
||||||
|
private String access_modifier;
|
||||||
|
private String implemented_interface = "none";
|
||||||
|
private final List<Variable> inputTypes = new ArrayList<>();
|
||||||
|
private final List<Variable> returnTypes = new ArrayList<>();
|
||||||
|
private final List<SpecificationEntry> specificationEntries = new ArrayList<>();
|
||||||
|
|
||||||
|
public FunctionSpec(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addInputType(Variable inputType) {
|
||||||
|
inputTypes.add(inputType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addReturnType(Variable returnType) {
|
||||||
|
returnTypes.add(returnType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addSpecificationEntry(SpecificationEntry entry) {
|
||||||
|
specificationEntries.add(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Variable> getInputTypes() {
|
||||||
|
return inputTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Variable> getReturnTypes() {
|
||||||
|
return returnTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<SpecificationEntry> getSpecificationEntries() {
|
||||||
|
return specificationEntries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAccess_modifier() {
|
||||||
|
return access_modifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccess_modifier(String access_modifier) {
|
||||||
|
this.access_modifier = access_modifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getImplemented_interface() {
|
||||||
|
return implemented_interface;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImplemented_interface(String implemented_interface) {
|
||||||
|
this.implemented_interface = implemented_interface;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
25
src/main/java/org/lumijiez/models/Interface.java
Normal file
25
src/main/java/org/lumijiez/models/Interface.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Interface {
|
||||||
|
private final String name;
|
||||||
|
private final List<FunctionSpec> functions = new ArrayList<>();
|
||||||
|
|
||||||
|
public Interface(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addFunction(FunctionSpec function) {
|
||||||
|
functions.add(function);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FunctionSpec> getFunctions() {
|
||||||
|
return functions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
34
src/main/java/org/lumijiez/models/Package.java
Normal file
34
src/main/java/org/lumijiez/models/Package.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Package {
|
||||||
|
private final String name;
|
||||||
|
private final List<Interface> interfaces = new ArrayList<>();
|
||||||
|
private final List<Specification> specifications = new ArrayList<>();
|
||||||
|
|
||||||
|
public Package(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addInterface(Interface iface) {
|
||||||
|
interfaces.add(iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addSpecification(Specification spec) {
|
||||||
|
specifications.add(spec);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Interface> getInterfaces() {
|
||||||
|
return interfaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Specification> getSpecifications() {
|
||||||
|
return specifications;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
src/main/java/org/lumijiez/models/RequirementSpec.java
Normal file
26
src/main/java/org/lumijiez/models/RequirementSpec.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RequirementSpec {
|
||||||
|
private final String name;
|
||||||
|
private final List<Spec> specs = new ArrayList<>();
|
||||||
|
|
||||||
|
public RequirementSpec(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAnnotation(Spec spec) {
|
||||||
|
specs.add(spec);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Spec> getAnnotations() {
|
||||||
|
return specs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
24
src/main/java/org/lumijiez/models/ResultSpecification.java
Normal file
24
src/main/java/org/lumijiez/models/ResultSpecification.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
|
||||||
|
public class ResultSpecification {
|
||||||
|
private final String name;
|
||||||
|
private final String importance;
|
||||||
|
|
||||||
|
public ResultSpecification(String name) {
|
||||||
|
this.name = name;
|
||||||
|
this.importance = "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResultSpecification(String name, String importance) {
|
||||||
|
this.name = name;
|
||||||
|
this.importance = importance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getImportance() {
|
||||||
|
return importance;
|
||||||
|
}
|
||||||
|
}
|
||||||
27
src/main/java/org/lumijiez/models/Spec.java
Normal file
27
src/main/java/org/lumijiez/models/Spec.java
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
|
||||||
|
public class Spec {
|
||||||
|
private String importance;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public Spec(String name, String importance) {
|
||||||
|
this.setImportance(importance);
|
||||||
|
this.setName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getImportance() {
|
||||||
|
return importance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImportance(String importance) {
|
||||||
|
this.importance = importance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
51
src/main/java/org/lumijiez/models/Specification.java
Normal file
51
src/main/java/org/lumijiez/models/Specification.java
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Specification {
|
||||||
|
private final String name;
|
||||||
|
public String implemented_interface = "none";
|
||||||
|
private final List<RequirementSpec> requirements = new ArrayList<>();
|
||||||
|
private final List<ResultSpecification> results = new ArrayList<>();
|
||||||
|
private final List<FunctionSpec> functions = new ArrayList<>();
|
||||||
|
|
||||||
|
public Specification(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRequirement(RequirementSpec requirement) {
|
||||||
|
requirements.add(requirement);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addResult(ResultSpecification result) {
|
||||||
|
results.add(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addFunction(FunctionSpec function) {
|
||||||
|
functions.add(function);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RequirementSpec> getRequirements() {
|
||||||
|
return requirements;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ResultSpecification> getResults() {
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FunctionSpec> getFunctions() {
|
||||||
|
return functions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getImplementedInterface() {
|
||||||
|
return implemented_interface;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImplementedInterface(String implemented_interface) {
|
||||||
|
this.implemented_interface = implemented_interface;
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/main/java/org/lumijiez/models/SpecificationEntry.java
Normal file
19
src/main/java/org/lumijiez/models/SpecificationEntry.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
|
||||||
|
public class SpecificationEntry {
|
||||||
|
private final String key;
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
public SpecificationEntry(String key, String value) {
|
||||||
|
this.key = key;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/main/java/org/lumijiez/models/Variable.java
Normal file
19
src/main/java/org/lumijiez/models/Variable.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package org.lumijiez.models;
|
||||||
|
|
||||||
|
public class Variable {
|
||||||
|
private final String type;
|
||||||
|
private final String identifier;
|
||||||
|
|
||||||
|
public Variable(String type, String identifier) {
|
||||||
|
this.type = type;
|
||||||
|
this.identifier = identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIdentifier() {
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -22,12 +22,12 @@ T__20=21
|
|||||||
T__21=22
|
T__21=22
|
||||||
T__22=23
|
T__22=23
|
||||||
ID=24
|
ID=24
|
||||||
STRING=25
|
INT=25
|
||||||
NEWLINE=26
|
FLOAT=26
|
||||||
COMMENT=27
|
STRING=27
|
||||||
WS=28
|
WS=28
|
||||||
INT=29
|
COMMENT=29
|
||||||
FLOAT=30
|
LINE_COMMENT=30
|
||||||
LPAREN=31
|
LPAREN=31
|
||||||
RPAREN=32
|
RPAREN=32
|
||||||
COLON=33
|
COLON=33
|
||||||
@@ -43,23 +43,23 @@ EXCLAM=39
|
|||||||
'implements'=4
|
'implements'=4
|
||||||
'@'=5
|
'@'=5
|
||||||
'result'=6
|
'result'=6
|
||||||
'AND'=7
|
'return'=7
|
||||||
'OR'=8
|
'[]'=8
|
||||||
'return'=9
|
'critical'=9
|
||||||
'[]'=10
|
'optional'=10
|
||||||
'critical'=11
|
'INT'=11
|
||||||
'optional'=12
|
'FLOAT'=12
|
||||||
'INT'=13
|
'DOUBLE'=13
|
||||||
'FLOAT'=14
|
'STRING'=14
|
||||||
'DOUBLE'=15
|
'BOOLEAN'=15
|
||||||
'STRING'=16
|
'CHAR'=16
|
||||||
'BOOLEAN'=17
|
'VOID'=17
|
||||||
'CHAR'=18
|
'public'=18
|
||||||
'VOID'=19
|
'protected'=19
|
||||||
'public'=20
|
'private'=20
|
||||||
'protected'=21
|
'default'=21
|
||||||
'private'=22
|
'AND'=22
|
||||||
'default'=23
|
'OR'=23
|
||||||
'('=31
|
'('=31
|
||||||
')'=32
|
')'=32
|
||||||
':'=33
|
':'=33
|
||||||
|
|||||||
@@ -24,18 +24,6 @@ public class WinxBaseListener implements WinxListener {
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitWinx(WinxParser.WinxContext ctx) { }
|
@Override public void exitWinx(WinxParser.WinxContext ctx) { }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterBody(WinxParser.BodyContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitBody(WinxParser.BodyContext ctx) { }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -48,6 +36,18 @@ public class WinxBaseListener implements WinxListener {
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitPackage(WinxParser.PackageContext ctx) { }
|
@Override public void exitPackage(WinxParser.PackageContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterBody(WinxParser.BodyContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitBody(WinxParser.BodyContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -72,6 +72,18 @@ public class WinxBaseListener implements WinxListener {
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitSpecification(WinxParser.SpecificationContext ctx) { }
|
@Override public void exitSpecification(WinxParser.SpecificationContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterImpls(WinxParser.ImplsContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitImpls(WinxParser.ImplsContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -120,18 +132,6 @@ public class WinxBaseListener implements WinxListener {
|
|||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitResult_specification(WinxParser.Result_specificationContext ctx) { }
|
@Override public void exitResult_specification(WinxParser.Result_specificationContext ctx) { }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterLogical_op(WinxParser.Logical_opContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitLogical_op(WinxParser.Logical_opContext ctx) { }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -173,13 +173,13 @@ public class WinxBaseListener implements WinxListener {
|
|||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void enterReturn_types(WinxParser.Return_typesContext ctx) { }
|
@Override public void enterReturn_type(WinxParser.Return_typeContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitReturn_types(WinxParser.Return_typesContext ctx) { }
|
@Override public void exitReturn_type(WinxParser.Return_typeContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -245,13 +245,13 @@ public class WinxBaseListener implements WinxListener {
|
|||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void enterComment(WinxParser.CommentContext ctx) { }
|
@Override public void enterLogical_op(WinxParser.Logical_opContext ctx) { }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitComment(WinxParser.CommentContext ctx) { }
|
@Override public void exitLogical_op(WinxParser.Logical_opContext ctx) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ public class WinxBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements W
|
|||||||
* <p>The default implementation returns the result of calling
|
* <p>The default implementation returns the result of calling
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitBody(WinxParser.BodyContext ctx) { return visitChildren(ctx); }
|
@Override public T visitPackage(WinxParser.PackageContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* <p>The default implementation returns the result of calling
|
* <p>The default implementation returns the result of calling
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitPackage(WinxParser.PackageContext ctx) { return visitChildren(ctx); }
|
@Override public T visitBody(WinxParser.BodyContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -47,6 +47,13 @@ public class WinxBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements W
|
|||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitSpecification(WinxParser.SpecificationContext ctx) { return visitChildren(ctx); }
|
@Override public T visitSpecification(WinxParser.SpecificationContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitImpls(WinxParser.ImplsContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -75,13 +82,6 @@ public class WinxBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements W
|
|||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitResult_specification(WinxParser.Result_specificationContext ctx) { return visitChildren(ctx); }
|
@Override public T visitResult_specification(WinxParser.Result_specificationContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation returns the result of calling
|
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
|
||||||
*/
|
|
||||||
@Override public T visitLogical_op(WinxParser.Logical_opContext ctx) { return visitChildren(ctx); }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -109,7 +109,7 @@ public class WinxBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements W
|
|||||||
* <p>The default implementation returns the result of calling
|
* <p>The default implementation returns the result of calling
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitReturn_types(WinxParser.Return_typesContext ctx) { return visitChildren(ctx); }
|
@Override public T visitReturn_type(WinxParser.Return_typeContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
@@ -151,5 +151,5 @@ public class WinxBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements W
|
|||||||
* <p>The default implementation returns the result of calling
|
* <p>The default implementation returns the result of calling
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitComment(WinxParser.CommentContext ctx) { return visitChildren(ctx); }
|
@Override public T visitLogical_op(WinxParser.Logical_opContext ctx) { return visitChildren(ctx); }
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,12 +1,13 @@
|
|||||||
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/Winx.g4 by ANTLR 4.13.1
|
// Generated from D:/Source/JavaProjects/dsl-formal-requirements/src/grammars/Winx.g4 by ANTLR 4.13.1
|
||||||
package org.lumijiez.parser;
|
package org.lumijiez.parser;
|
||||||
|
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.*;
|
||||||
import org.antlr.v4.runtime.atn.ATN;
|
import org.antlr.v4.runtime.atn.*;
|
||||||
import org.antlr.v4.runtime.atn.ATNDeserializer;
|
|
||||||
import org.antlr.v4.runtime.atn.LexerATNSimulator;
|
|
||||||
import org.antlr.v4.runtime.atn.PredictionContextCache;
|
|
||||||
import org.antlr.v4.runtime.dfa.DFA;
|
import org.antlr.v4.runtime.dfa.DFA;
|
||||||
|
import org.antlr.v4.runtime.misc.*;
|
||||||
|
|
||||||
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
|
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
|
||||||
public class WinxLexer extends Lexer {
|
public class WinxLexer extends Lexer {
|
||||||
@@ -18,8 +19,8 @@ public class WinxLexer extends Lexer {
|
|||||||
public static final int
|
public static final int
|
||||||
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
|
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
|
||||||
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
|
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
|
||||||
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, ID=24, STRING=25,
|
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, ID=24, INT=25,
|
||||||
NEWLINE=26, COMMENT=27, WS=28, INT=29, FLOAT=30, LPAREN=31, RPAREN=32,
|
FLOAT=26, STRING=27, WS=28, COMMENT=29, LINE_COMMENT=30, LPAREN=31, RPAREN=32,
|
||||||
COLON=33, SEMICOLON=34, COMMA=35, LBRACE=36, RBRACE=37, TILDE=38, EXCLAM=39;
|
COLON=33, SEMICOLON=34, COMMA=35, LBRACE=36, RBRACE=37, TILDE=38, EXCLAM=39;
|
||||||
public static String[] channelNames = {
|
public static String[] channelNames = {
|
||||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||||
@@ -33,8 +34,8 @@ public class WinxLexer extends Lexer {
|
|||||||
return new String[] {
|
return new String[] {
|
||||||
"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
|
"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
|
||||||
"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
|
"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
|
||||||
"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "ID", "STRING",
|
"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "ID", "INT", "FLOAT",
|
||||||
"NEWLINE", "COMMENT", "WS", "INT", "FLOAT", "LPAREN", "RPAREN", "COLON",
|
"STRING", "WS", "COMMENT", "LINE_COMMENT", "LPAREN", "RPAREN", "COLON",
|
||||||
"SEMICOLON", "COMMA", "LBRACE", "RBRACE", "TILDE", "EXCLAM"
|
"SEMICOLON", "COMMA", "LBRACE", "RBRACE", "TILDE", "EXCLAM"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -43,11 +44,11 @@ public class WinxLexer extends Lexer {
|
|||||||
private static String[] makeLiteralNames() {
|
private static String[] makeLiteralNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
null, "'package'", "'interface'", "'specification'", "'implements'",
|
null, "'package'", "'interface'", "'specification'", "'implements'",
|
||||||
"'@'", "'result'", "'AND'", "'OR'", "'return'", "'[]'", "'critical'",
|
"'@'", "'result'", "'return'", "'[]'", "'critical'", "'optional'", "'INT'",
|
||||||
"'optional'", "'INT'", "'FLOAT'", "'DOUBLE'", "'STRING'", "'BOOLEAN'",
|
"'FLOAT'", "'DOUBLE'", "'STRING'", "'BOOLEAN'", "'CHAR'", "'VOID'", "'public'",
|
||||||
"'CHAR'", "'VOID'", "'public'", "'protected'", "'private'", "'default'",
|
"'protected'", "'private'", "'default'", "'AND'", "'OR'", null, null,
|
||||||
null, null, null, null, null, null, null, "'('", "')'", "':'", "';'",
|
null, null, null, null, null, "'('", "')'", "':'", "';'", "','", "'{'",
|
||||||
"','", "'{'", "'}'", "'~'", "'!'"
|
"'}'", "'~'", "'!'"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||||
@@ -55,7 +56,7 @@ public class WinxLexer extends Lexer {
|
|||||||
return new String[] {
|
return new String[] {
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
"ID", "STRING", "NEWLINE", "COMMENT", "WS", "INT", "FLOAT", "LPAREN",
|
"ID", "INT", "FLOAT", "STRING", "WS", "COMMENT", "LINE_COMMENT", "LPAREN",
|
||||||
"RPAREN", "COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE", "TILDE",
|
"RPAREN", "COLON", "SEMICOLON", "COMMA", "LBRACE", "RBRACE", "TILDE",
|
||||||
"EXCLAM"
|
"EXCLAM"
|
||||||
};
|
};
|
||||||
@@ -119,7 +120,7 @@ public class WinxLexer extends Lexer {
|
|||||||
public ATN getATN() { return _ATN; }
|
public ATN getATN() { return _ATN; }
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\u0004\u0000\'\u014c\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
"\u0004\u0000\'\u0149\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
||||||
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
"\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\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\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
||||||
@@ -140,79 +141,78 @@ public class WinxLexer extends Lexer {
|
|||||||
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
|
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
|
||||||
"\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
|
"\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
|
||||||
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"+
|
"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001"+
|
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
|
||||||
"\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001"+
|
"\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+
|
||||||
"\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
|
"\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
|
||||||
"\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+
|
"\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b"+
|
||||||
"\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r"+
|
"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001"+
|
||||||
"\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+
|
"\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
|
||||||
"\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+
|
"\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+
|
||||||
"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
|
"\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+
|
||||||
"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+
|
"\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010"+
|
||||||
"\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+
|
"\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
|
||||||
"\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+
|
"\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012"+
|
||||||
"\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+
|
"\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+
|
||||||
"\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
|
"\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
|
||||||
"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001"+
|
"\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014"+
|
||||||
"\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+
|
"\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+
|
||||||
"\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
|
"\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016"+
|
||||||
"\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0004\u0017\u00f3\b\u0017\u000b"+
|
"\u0001\u0017\u0004\u0017\u00f3\b\u0017\u000b\u0017\f\u0017\u00f4\u0001"+
|
||||||
"\u0017\f\u0017\u00f4\u0001\u0018\u0001\u0018\u0005\u0018\u00f9\b\u0018"+
|
"\u0018\u0004\u0018\u00f8\b\u0018\u000b\u0018\f\u0018\u00f9\u0001\u0019"+
|
||||||
"\n\u0018\f\u0018\u00fc\t\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0004"+
|
"\u0004\u0019\u00fd\b\u0019\u000b\u0019\f\u0019\u00fe\u0001\u0019\u0001"+
|
||||||
"\u0019\u0101\b\u0019\u000b\u0019\f\u0019\u0102\u0001\u0019\u0001\u0019"+
|
"\u0019\u0005\u0019\u0103\b\u0019\n\u0019\f\u0019\u0106\t\u0019\u0001\u0019"+
|
||||||
"\u0001\u001a\u0001\u001a\u0005\u001a\u0109\b\u001a\n\u001a\f\u001a\u010c"+
|
"\u0001\u0019\u0004\u0019\u010a\b\u0019\u000b\u0019\f\u0019\u010b\u0003"+
|
||||||
"\t\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0005"+
|
"\u0019\u010e\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0005"+
|
||||||
"\u001a\u0113\b\u001a\n\u001a\f\u001a\u0116\t\u001a\u0001\u001a\u0003\u001a"+
|
"\u001a\u0114\b\u001a\n\u001a\f\u001a\u0117\t\u001a\u0001\u001a\u0001\u001a"+
|
||||||
"\u0119\b\u001a\u0001\u001b\u0004\u001b\u011c\b\u001b\u000b\u001b\f\u001b"+
|
"\u0001\u001b\u0004\u001b\u011c\b\u001b\u000b\u001b\f\u001b\u011d\u0001"+
|
||||||
"\u011d\u0001\u001b\u0001\u001b\u0001\u001c\u0004\u001c\u0123\b\u001c\u000b"+
|
"\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0005\u001c\u0124\b\u001c\n"+
|
||||||
"\u001c\f\u001c\u0124\u0001\u001d\u0004\u001d\u0128\b\u001d\u000b\u001d"+
|
"\u001c\f\u001c\u0127\t\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
|
||||||
"\f\u001d\u0129\u0001\u001d\u0001\u001d\u0005\u001d\u012e\b\u001d\n\u001d"+
|
"\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u0131"+
|
||||||
"\f\u001d\u0131\t\u001d\u0001\u001d\u0001\u001d\u0004\u001d\u0135\b\u001d"+
|
"\b\u001d\n\u001d\f\u001d\u0134\t\u001d\u0001\u001d\u0001\u001d\u0001\u001e"+
|
||||||
"\u000b\u001d\f\u001d\u0136\u0003\u001d\u0139\b\u001d\u0001\u001e\u0001"+
|
"\u0001\u001e\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001!\u0001!\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\u010a"+
|
"\u0125\u0000\'\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005"+
|
||||||
"\u0000\'\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b"+
|
"\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019"+
|
||||||
"\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b"+
|
"\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015"+
|
||||||
"\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016"+
|
"+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f"+
|
||||||
"-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\""+
|
"? A!C\"E#G$I%K&M\'\u0001\u0000\u0005\u0002\u0000AZaz\u0001\u000009\u0002"+
|
||||||
"E#G$I%K&M\'\u0001\u0000\u0006\u0002\u0000AZaz\u0001\u0000\"\"\u0002\u0000"+
|
"\u0000\"\"\\\\\u0003\u0000\t\n\r\r \u0002\u0000\n\n\r\r\u0153\u0000\u0001"+
|
||||||
"\n\n\r\r\u0001\u0000~~\u0003\u0000\t\n\r\r \u0001\u000009\u0157\u0000"+
|
"\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+
|
||||||
"\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000"+
|
"\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+
|
||||||
"\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+
|
||||||
"\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r"+
|
"\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011"+
|
"\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015"+
|
"\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019"+
|
"\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d"+
|
"\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001"+
|
"\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000"+
|
"\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001"+
|
||||||
"\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000"+
|
||||||
"\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/"+
|
"\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000"+
|
"5\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001"+
|
||||||
"\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000"+
|
||||||
"\u00009\u0001\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000="+
|
"\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000"+
|
"C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+
|
||||||
"\u0000\u0000\u0000C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+
|
||||||
"\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K"+
|
"\u0000\u0000M\u0001\u0000\u0000\u0000\u0001O\u0001\u0000\u0000\u0000\u0003"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0001O\u0001\u0000"+
|
"W\u0001\u0000\u0000\u0000\u0005a\u0001\u0000\u0000\u0000\u0007o\u0001"+
|
||||||
"\u0000\u0000\u0003W\u0001\u0000\u0000\u0000\u0005a\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\tz\u0001\u0000\u0000\u0000\u000b|\u0001\u0000\u0000"+
|
||||||
"\u0007o\u0001\u0000\u0000\u0000\tz\u0001\u0000\u0000\u0000\u000b|\u0001"+
|
"\u0000\r\u0083\u0001\u0000\u0000\u0000\u000f\u008a\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\r\u0083\u0001\u0000\u0000\u0000\u000f\u0087\u0001\u0000"+
|
"\u0011\u008d\u0001\u0000\u0000\u0000\u0013\u0096\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0011\u008a\u0001\u0000\u0000\u0000\u0013\u0091\u0001\u0000"+
|
"\u0015\u009f\u0001\u0000\u0000\u0000\u0017\u00a3\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0015\u0094\u0001\u0000\u0000\u0000\u0017\u009d\u0001\u0000"+
|
"\u0019\u00a9\u0001\u0000\u0000\u0000\u001b\u00b0\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0019\u00a6\u0001\u0000\u0000\u0000\u001b\u00aa\u0001\u0000"+
|
"\u001d\u00b7\u0001\u0000\u0000\u0000\u001f\u00bf\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u001d\u00b0\u0001\u0000\u0000\u0000\u001f\u00b7\u0001\u0000"+
|
"!\u00c4\u0001\u0000\u0000\u0000#\u00c9\u0001\u0000\u0000\u0000%\u00d0"+
|
||||||
"\u0000\u0000!\u00be\u0001\u0000\u0000\u0000#\u00c6\u0001\u0000\u0000\u0000"+
|
"\u0001\u0000\u0000\u0000\'\u00da\u0001\u0000\u0000\u0000)\u00e2\u0001"+
|
||||||
"%\u00cb\u0001\u0000\u0000\u0000\'\u00d0\u0001\u0000\u0000\u0000)\u00d7"+
|
"\u0000\u0000\u0000+\u00ea\u0001\u0000\u0000\u0000-\u00ee\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000+\u00e1\u0001\u0000\u0000\u0000-\u00e9\u0001\u0000"+
|
"\u0000/\u00f2\u0001\u0000\u0000\u00001\u00f7\u0001\u0000\u0000\u00003"+
|
||||||
"\u0000\u0000/\u00f2\u0001\u0000\u0000\u00001\u00f6\u0001\u0000\u0000\u0000"+
|
"\u010d\u0001\u0000\u0000\u00005\u010f\u0001\u0000\u0000\u00007\u011b\u0001"+
|
||||||
"3\u0100\u0001\u0000\u0000\u00005\u0118\u0001\u0000\u0000\u00007\u011b"+
|
"\u0000\u0000\u00009\u0121\u0001\u0000\u0000\u0000;\u012c\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u00009\u0122\u0001\u0000\u0000\u0000;\u0138\u0001\u0000"+
|
"\u0000=\u0137\u0001\u0000\u0000\u0000?\u0139\u0001\u0000\u0000\u0000A"+
|
||||||
"\u0000\u0000=\u013a\u0001\u0000\u0000\u0000?\u013c\u0001\u0000\u0000\u0000"+
|
"\u013b\u0001\u0000\u0000\u0000C\u013d\u0001\u0000\u0000\u0000E\u013f\u0001"+
|
||||||
"A\u013e\u0001\u0000\u0000\u0000C\u0140\u0001\u0000\u0000\u0000E\u0142"+
|
"\u0000\u0000\u0000G\u0141\u0001\u0000\u0000\u0000I\u0143\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000G\u0144\u0001\u0000\u0000\u0000I\u0146\u0001\u0000"+
|
"\u0000K\u0145\u0001\u0000\u0000\u0000M\u0147\u0001\u0000\u0000\u0000O"+
|
||||||
"\u0000\u0000K\u0148\u0001\u0000\u0000\u0000M\u014a\u0001\u0000\u0000\u0000"+
|
"P\u0005p\u0000\u0000PQ\u0005a\u0000\u0000QR\u0005c\u0000\u0000RS\u0005"+
|
||||||
"OP\u0005p\u0000\u0000PQ\u0005a\u0000\u0000QR\u0005c\u0000\u0000RS\u0005"+
|
|
||||||
"k\u0000\u0000ST\u0005a\u0000\u0000TU\u0005g\u0000\u0000UV\u0005e\u0000"+
|
"k\u0000\u0000ST\u0005a\u0000\u0000TU\u0005g\u0000\u0000UV\u0005e\u0000"+
|
||||||
"\u0000V\u0002\u0001\u0000\u0000\u0000WX\u0005i\u0000\u0000XY\u0005n\u0000"+
|
"\u0000V\u0002\u0001\u0000\u0000\u0000WX\u0005i\u0000\u0000XY\u0005n\u0000"+
|
||||||
"\u0000YZ\u0005t\u0000\u0000Z[\u0005e\u0000\u0000[\\\u0005r\u0000\u0000"+
|
"\u0000YZ\u0005t\u0000\u0000Z[\u0005e\u0000\u0000[\\\u0005r\u0000\u0000"+
|
||||||
@@ -228,105 +228,103 @@ public class WinxLexer extends Lexer {
|
|||||||
"\u0000\u0000\u0000z{\u0005@\u0000\u0000{\n\u0001\u0000\u0000\u0000|}\u0005"+
|
"\u0000\u0000\u0000z{\u0005@\u0000\u0000{\n\u0001\u0000\u0000\u0000|}\u0005"+
|
||||||
"r\u0000\u0000}~\u0005e\u0000\u0000~\u007f\u0005s\u0000\u0000\u007f\u0080"+
|
"r\u0000\u0000}~\u0005e\u0000\u0000~\u007f\u0005s\u0000\u0000\u007f\u0080"+
|
||||||
"\u0005u\u0000\u0000\u0080\u0081\u0005l\u0000\u0000\u0081\u0082\u0005t"+
|
"\u0005u\u0000\u0000\u0080\u0081\u0005l\u0000\u0000\u0081\u0082\u0005t"+
|
||||||
"\u0000\u0000\u0082\f\u0001\u0000\u0000\u0000\u0083\u0084\u0005A\u0000"+
|
"\u0000\u0000\u0082\f\u0001\u0000\u0000\u0000\u0083\u0084\u0005r\u0000"+
|
||||||
"\u0000\u0084\u0085\u0005N\u0000\u0000\u0085\u0086\u0005D\u0000\u0000\u0086"+
|
"\u0000\u0084\u0085\u0005e\u0000\u0000\u0085\u0086\u0005t\u0000\u0000\u0086"+
|
||||||
"\u000e\u0001\u0000\u0000\u0000\u0087\u0088\u0005O\u0000\u0000\u0088\u0089"+
|
"\u0087\u0005u\u0000\u0000\u0087\u0088\u0005r\u0000\u0000\u0088\u0089\u0005"+
|
||||||
"\u0005R\u0000\u0000\u0089\u0010\u0001\u0000\u0000\u0000\u008a\u008b\u0005"+
|
"n\u0000\u0000\u0089\u000e\u0001\u0000\u0000\u0000\u008a\u008b\u0005[\u0000"+
|
||||||
"r\u0000\u0000\u008b\u008c\u0005e\u0000\u0000\u008c\u008d\u0005t\u0000"+
|
"\u0000\u008b\u008c\u0005]\u0000\u0000\u008c\u0010\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u008d\u008e\u0005u\u0000\u0000\u008e\u008f\u0005r\u0000\u0000\u008f"+
|
"\u008d\u008e\u0005c\u0000\u0000\u008e\u008f\u0005r\u0000\u0000\u008f\u0090"+
|
||||||
"\u0090\u0005n\u0000\u0000\u0090\u0012\u0001\u0000\u0000\u0000\u0091\u0092"+
|
"\u0005i\u0000\u0000\u0090\u0091\u0005t\u0000\u0000\u0091\u0092\u0005i"+
|
||||||
"\u0005[\u0000\u0000\u0092\u0093\u0005]\u0000\u0000\u0093\u0014\u0001\u0000"+
|
"\u0000\u0000\u0092\u0093\u0005c\u0000\u0000\u0093\u0094\u0005a\u0000\u0000"+
|
||||||
"\u0000\u0000\u0094\u0095\u0005c\u0000\u0000\u0095\u0096\u0005r\u0000\u0000"+
|
"\u0094\u0095\u0005l\u0000\u0000\u0095\u0012\u0001\u0000\u0000\u0000\u0096"+
|
||||||
"\u0096\u0097\u0005i\u0000\u0000\u0097\u0098\u0005t\u0000\u0000\u0098\u0099"+
|
"\u0097\u0005o\u0000\u0000\u0097\u0098\u0005p\u0000\u0000\u0098\u0099\u0005"+
|
||||||
"\u0005i\u0000\u0000\u0099\u009a\u0005c\u0000\u0000\u009a\u009b\u0005a"+
|
"t\u0000\u0000\u0099\u009a\u0005i\u0000\u0000\u009a\u009b\u0005o\u0000"+
|
||||||
"\u0000\u0000\u009b\u009c\u0005l\u0000\u0000\u009c\u0016\u0001\u0000\u0000"+
|
"\u0000\u009b\u009c\u0005n\u0000\u0000\u009c\u009d\u0005a\u0000\u0000\u009d"+
|
||||||
"\u0000\u009d\u009e\u0005o\u0000\u0000\u009e\u009f\u0005p\u0000\u0000\u009f"+
|
"\u009e\u0005l\u0000\u0000\u009e\u0014\u0001\u0000\u0000\u0000\u009f\u00a0"+
|
||||||
"\u00a0\u0005t\u0000\u0000\u00a0\u00a1\u0005i\u0000\u0000\u00a1\u00a2\u0005"+
|
"\u0005I\u0000\u0000\u00a0\u00a1\u0005N\u0000\u0000\u00a1\u00a2\u0005T"+
|
||||||
"o\u0000\u0000\u00a2\u00a3\u0005n\u0000\u0000\u00a3\u00a4\u0005a\u0000"+
|
"\u0000\u0000\u00a2\u0016\u0001\u0000\u0000\u0000\u00a3\u00a4\u0005F\u0000"+
|
||||||
"\u0000\u00a4\u00a5\u0005l\u0000\u0000\u00a5\u0018\u0001\u0000\u0000\u0000"+
|
"\u0000\u00a4\u00a5\u0005L\u0000\u0000\u00a5\u00a6\u0005O\u0000\u0000\u00a6"+
|
||||||
"\u00a6\u00a7\u0005I\u0000\u0000\u00a7\u00a8\u0005N\u0000\u0000\u00a8\u00a9"+
|
"\u00a7\u0005A\u0000\u0000\u00a7\u00a8\u0005T\u0000\u0000\u00a8\u0018\u0001"+
|
||||||
"\u0005T\u0000\u0000\u00a9\u001a\u0001\u0000\u0000\u0000\u00aa\u00ab\u0005"+
|
"\u0000\u0000\u0000\u00a9\u00aa\u0005D\u0000\u0000\u00aa\u00ab\u0005O\u0000"+
|
||||||
"F\u0000\u0000\u00ab\u00ac\u0005L\u0000\u0000\u00ac\u00ad\u0005O\u0000"+
|
"\u0000\u00ab\u00ac\u0005U\u0000\u0000\u00ac\u00ad\u0005B\u0000\u0000\u00ad"+
|
||||||
"\u0000\u00ad\u00ae\u0005A\u0000\u0000\u00ae\u00af\u0005T\u0000\u0000\u00af"+
|
"\u00ae\u0005L\u0000\u0000\u00ae\u00af\u0005E\u0000\u0000\u00af\u001a\u0001"+
|
||||||
"\u001c\u0001\u0000\u0000\u0000\u00b0\u00b1\u0005D\u0000\u0000\u00b1\u00b2"+
|
"\u0000\u0000\u0000\u00b0\u00b1\u0005S\u0000\u0000\u00b1\u00b2\u0005T\u0000"+
|
||||||
"\u0005O\u0000\u0000\u00b2\u00b3\u0005U\u0000\u0000\u00b3\u00b4\u0005B"+
|
"\u0000\u00b2\u00b3\u0005R\u0000\u0000\u00b3\u00b4\u0005I\u0000\u0000\u00b4"+
|
||||||
"\u0000\u0000\u00b4\u00b5\u0005L\u0000\u0000\u00b5\u00b6\u0005E\u0000\u0000"+
|
"\u00b5\u0005N\u0000\u0000\u00b5\u00b6\u0005G\u0000\u0000\u00b6\u001c\u0001"+
|
||||||
"\u00b6\u001e\u0001\u0000\u0000\u0000\u00b7\u00b8\u0005S\u0000\u0000\u00b8"+
|
"\u0000\u0000\u0000\u00b7\u00b8\u0005B\u0000\u0000\u00b8\u00b9\u0005O\u0000"+
|
||||||
"\u00b9\u0005T\u0000\u0000\u00b9\u00ba\u0005R\u0000\u0000\u00ba\u00bb\u0005"+
|
"\u0000\u00b9\u00ba\u0005O\u0000\u0000\u00ba\u00bb\u0005L\u0000\u0000\u00bb"+
|
||||||
"I\u0000\u0000\u00bb\u00bc\u0005N\u0000\u0000\u00bc\u00bd\u0005G\u0000"+
|
"\u00bc\u0005E\u0000\u0000\u00bc\u00bd\u0005A\u0000\u0000\u00bd\u00be\u0005"+
|
||||||
"\u0000\u00bd \u0001\u0000\u0000\u0000\u00be\u00bf\u0005B\u0000\u0000\u00bf"+
|
"N\u0000\u0000\u00be\u001e\u0001\u0000\u0000\u0000\u00bf\u00c0\u0005C\u0000"+
|
||||||
"\u00c0\u0005O\u0000\u0000\u00c0\u00c1\u0005O\u0000\u0000\u00c1\u00c2\u0005"+
|
"\u0000\u00c0\u00c1\u0005H\u0000\u0000\u00c1\u00c2\u0005A\u0000\u0000\u00c2"+
|
||||||
"L\u0000\u0000\u00c2\u00c3\u0005E\u0000\u0000\u00c3\u00c4\u0005A\u0000"+
|
"\u00c3\u0005R\u0000\u0000\u00c3 \u0001\u0000\u0000\u0000\u00c4\u00c5\u0005"+
|
||||||
"\u0000\u00c4\u00c5\u0005N\u0000\u0000\u00c5\"\u0001\u0000\u0000\u0000"+
|
"V\u0000\u0000\u00c5\u00c6\u0005O\u0000\u0000\u00c6\u00c7\u0005I\u0000"+
|
||||||
"\u00c6\u00c7\u0005C\u0000\u0000\u00c7\u00c8\u0005H\u0000\u0000\u00c8\u00c9"+
|
"\u0000\u00c7\u00c8\u0005D\u0000\u0000\u00c8\"\u0001\u0000\u0000\u0000"+
|
||||||
"\u0005A\u0000\u0000\u00c9\u00ca\u0005R\u0000\u0000\u00ca$\u0001\u0000"+
|
"\u00c9\u00ca\u0005p\u0000\u0000\u00ca\u00cb\u0005u\u0000\u0000\u00cb\u00cc"+
|
||||||
"\u0000\u0000\u00cb\u00cc\u0005V\u0000\u0000\u00cc\u00cd\u0005O\u0000\u0000"+
|
"\u0005b\u0000\u0000\u00cc\u00cd\u0005l\u0000\u0000\u00cd\u00ce\u0005i"+
|
||||||
"\u00cd\u00ce\u0005I\u0000\u0000\u00ce\u00cf\u0005D\u0000\u0000\u00cf&"+
|
"\u0000\u0000\u00ce\u00cf\u0005c\u0000\u0000\u00cf$\u0001\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u00d0\u00d1\u0005p\u0000\u0000\u00d1\u00d2\u0005"+
|
"\u00d0\u00d1\u0005p\u0000\u0000\u00d1\u00d2\u0005r\u0000\u0000\u00d2\u00d3"+
|
||||||
"u\u0000\u0000\u00d2\u00d3\u0005b\u0000\u0000\u00d3\u00d4\u0005l\u0000"+
|
"\u0005o\u0000\u0000\u00d3\u00d4\u0005t\u0000\u0000\u00d4\u00d5\u0005e"+
|
||||||
"\u0000\u00d4\u00d5\u0005i\u0000\u0000\u00d5\u00d6\u0005c\u0000\u0000\u00d6"+
|
"\u0000\u0000\u00d5\u00d6\u0005c\u0000\u0000\u00d6\u00d7\u0005t\u0000\u0000"+
|
||||||
"(\u0001\u0000\u0000\u0000\u00d7\u00d8\u0005p\u0000\u0000\u00d8\u00d9\u0005"+
|
"\u00d7\u00d8\u0005e\u0000\u0000\u00d8\u00d9\u0005d\u0000\u0000\u00d9&"+
|
||||||
"r\u0000\u0000\u00d9\u00da\u0005o\u0000\u0000\u00da\u00db\u0005t\u0000"+
|
"\u0001\u0000\u0000\u0000\u00da\u00db\u0005p\u0000\u0000\u00db\u00dc\u0005"+
|
||||||
"\u0000\u00db\u00dc\u0005e\u0000\u0000\u00dc\u00dd\u0005c\u0000\u0000\u00dd"+
|
"r\u0000\u0000\u00dc\u00dd\u0005i\u0000\u0000\u00dd\u00de\u0005v\u0000"+
|
||||||
"\u00de\u0005t\u0000\u0000\u00de\u00df\u0005e\u0000\u0000\u00df\u00e0\u0005"+
|
"\u0000\u00de\u00df\u0005a\u0000\u0000\u00df\u00e0\u0005t\u0000\u0000\u00e0"+
|
||||||
"d\u0000\u0000\u00e0*\u0001\u0000\u0000\u0000\u00e1\u00e2\u0005p\u0000"+
|
"\u00e1\u0005e\u0000\u0000\u00e1(\u0001\u0000\u0000\u0000\u00e2\u00e3\u0005"+
|
||||||
"\u0000\u00e2\u00e3\u0005r\u0000\u0000\u00e3\u00e4\u0005i\u0000\u0000\u00e4"+
|
"d\u0000\u0000\u00e3\u00e4\u0005e\u0000\u0000\u00e4\u00e5\u0005f\u0000"+
|
||||||
"\u00e5\u0005v\u0000\u0000\u00e5\u00e6\u0005a\u0000\u0000\u00e6\u00e7\u0005"+
|
"\u0000\u00e5\u00e6\u0005a\u0000\u0000\u00e6\u00e7\u0005u\u0000\u0000\u00e7"+
|
||||||
"t\u0000\u0000\u00e7\u00e8\u0005e\u0000\u0000\u00e8,\u0001\u0000\u0000"+
|
"\u00e8\u0005l\u0000\u0000\u00e8\u00e9\u0005t\u0000\u0000\u00e9*\u0001"+
|
||||||
"\u0000\u00e9\u00ea\u0005d\u0000\u0000\u00ea\u00eb\u0005e\u0000\u0000\u00eb"+
|
"\u0000\u0000\u0000\u00ea\u00eb\u0005A\u0000\u0000\u00eb\u00ec\u0005N\u0000"+
|
||||||
"\u00ec\u0005f\u0000\u0000\u00ec\u00ed\u0005a\u0000\u0000\u00ed\u00ee\u0005"+
|
"\u0000\u00ec\u00ed\u0005D\u0000\u0000\u00ed,\u0001\u0000\u0000\u0000\u00ee"+
|
||||||
"u\u0000\u0000\u00ee\u00ef\u0005l\u0000\u0000\u00ef\u00f0\u0005t\u0000"+
|
"\u00ef\u0005O\u0000\u0000\u00ef\u00f0\u0005R\u0000\u0000\u00f0.\u0001"+
|
||||||
"\u0000\u00f0.\u0001\u0000\u0000\u0000\u00f1\u00f3\u0007\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u00f1\u00f3\u0007\u0000\u0000\u0000\u00f2\u00f1\u0001"+
|
||||||
"\u00f2\u00f1\u0001\u0000\u0000\u0000\u00f3\u00f4\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u00f3\u00f4\u0001\u0000\u0000\u0000\u00f4\u00f2\u0001"+
|
||||||
"\u00f4\u00f2\u0001\u0000\u0000\u0000\u00f4\u00f5\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u00f4\u00f5\u0001\u0000\u0000\u0000\u00f50\u0001\u0000"+
|
||||||
"\u00f50\u0001\u0000\u0000\u0000\u00f6\u00fa\u0005\"\u0000\u0000\u00f7"+
|
"\u0000\u0000\u00f6\u00f8\u0007\u0001\u0000\u0000\u00f7\u00f6\u0001\u0000"+
|
||||||
"\u00f9\b\u0001\u0000\u0000\u00f8\u00f7\u0001\u0000\u0000\u0000\u00f9\u00fc"+
|
"\u0000\u0000\u00f8\u00f9\u0001\u0000\u0000\u0000\u00f9\u00f7\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u00fa\u00f8\u0001\u0000\u0000\u0000\u00fa\u00fb"+
|
"\u0000\u0000\u00f9\u00fa\u0001\u0000\u0000\u0000\u00fa2\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u00fb\u00fd\u0001\u0000\u0000\u0000\u00fc\u00fa"+
|
"\u0000\u00fb\u00fd\u0007\u0001\u0000\u0000\u00fc\u00fb\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u00fd\u00fe\u0005\"\u0000\u0000\u00fe2\u0001"+
|
"\u0000\u00fd\u00fe\u0001\u0000\u0000\u0000\u00fe\u00fc\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u00ff\u0101\u0007\u0002\u0000\u0000\u0100\u00ff\u0001"+
|
"\u0000\u00fe\u00ff\u0001\u0000\u0000\u0000\u00ff\u0100\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0101\u0102\u0001\u0000\u0000\u0000\u0102\u0100\u0001"+
|
"\u0000\u0100\u0104\u0005.\u0000\u0000\u0101\u0103\u0007\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0102\u0103\u0001\u0000\u0000\u0000\u0103\u0104\u0001"+
|
"\u0102\u0101\u0001\u0000\u0000\u0000\u0103\u0106\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0104\u0105\u0006\u0019\u0000\u0000\u01054\u0001\u0000"+
|
"\u0104\u0102\u0001\u0000\u0000\u0000\u0104\u0105\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0106\u010a\u0005~\u0000\u0000\u0107\u0109\b\u0003\u0000"+
|
"\u0105\u010e\u0001\u0000\u0000\u0000\u0106\u0104\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0108\u0107\u0001\u0000\u0000\u0000\u0109\u010c\u0001\u0000\u0000"+
|
"\u0107\u0109\u0005.\u0000\u0000\u0108\u010a\u0007\u0001\u0000\u0000\u0109"+
|
||||||
"\u0000\u010a\u010b\u0001\u0000\u0000\u0000\u010a\u0108\u0001\u0000\u0000"+
|
"\u0108\u0001\u0000\u0000\u0000\u010a\u010b\u0001\u0000\u0000\u0000\u010b"+
|
||||||
"\u0000\u010b\u010d\u0001\u0000\u0000\u0000\u010c\u010a\u0001\u0000\u0000"+
|
"\u0109\u0001\u0000\u0000\u0000\u010b\u010c\u0001\u0000\u0000\u0000\u010c"+
|
||||||
"\u0000\u010d\u0119\u0005~\u0000\u0000\u010e\u010f\u0005/\u0000\u0000\u010f"+
|
"\u010e\u0001\u0000\u0000\u0000\u010d\u00fc\u0001\u0000\u0000\u0000\u010d"+
|
||||||
"\u0110\u0005/\u0000\u0000\u0110\u0114\u0001\u0000\u0000\u0000\u0111\u0113"+
|
"\u0107\u0001\u0000\u0000\u0000\u010e4\u0001\u0000\u0000\u0000\u010f\u0115"+
|
||||||
"\b\u0002\u0000\u0000\u0112\u0111\u0001\u0000\u0000\u0000\u0113\u0116\u0001"+
|
"\u0005\"\u0000\u0000\u0110\u0111\u0005\\\u0000\u0000\u0111\u0114\u0007"+
|
||||||
"\u0000\u0000\u0000\u0114\u0112\u0001\u0000\u0000\u0000\u0114\u0115\u0001"+
|
"\u0002\u0000\u0000\u0112\u0114\b\u0002\u0000\u0000\u0113\u0110\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0115\u0117\u0001\u0000\u0000\u0000\u0116\u0114\u0001"+
|
"\u0000\u0000\u0113\u0112\u0001\u0000\u0000\u0000\u0114\u0117\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0117\u0119\u00033\u0019\u0000\u0118\u0106\u0001\u0000"+
|
"\u0000\u0000\u0115\u0113\u0001\u0000\u0000\u0000\u0115\u0116\u0001\u0000"+
|
||||||
"\u0000\u0000\u0118\u010e\u0001\u0000\u0000\u0000\u01196\u0001\u0000\u0000"+
|
"\u0000\u0000\u0116\u0118\u0001\u0000\u0000\u0000\u0117\u0115\u0001\u0000"+
|
||||||
"\u0000\u011a\u011c\u0007\u0004\u0000\u0000\u011b\u011a\u0001\u0000\u0000"+
|
"\u0000\u0000\u0118\u0119\u0005\"\u0000\u0000\u01196\u0001\u0000\u0000"+
|
||||||
|
"\u0000\u011a\u011c\u0007\u0003\u0000\u0000\u011b\u011a\u0001\u0000\u0000"+
|
||||||
"\u0000\u011c\u011d\u0001\u0000\u0000\u0000\u011d\u011b\u0001\u0000\u0000"+
|
"\u0000\u011c\u011d\u0001\u0000\u0000\u0000\u011d\u011b\u0001\u0000\u0000"+
|
||||||
"\u0000\u011d\u011e\u0001\u0000\u0000\u0000\u011e\u011f\u0001\u0000\u0000"+
|
"\u0000\u011d\u011e\u0001\u0000\u0000\u0000\u011e\u011f\u0001\u0000\u0000"+
|
||||||
"\u0000\u011f\u0120\u0006\u001b\u0000\u0000\u01208\u0001\u0000\u0000\u0000"+
|
"\u0000\u011f\u0120\u0006\u001b\u0000\u0000\u01208\u0001\u0000\u0000\u0000"+
|
||||||
"\u0121\u0123\u0007\u0005\u0000\u0000\u0122\u0121\u0001\u0000\u0000\u0000"+
|
"\u0121\u0125\u0005~\u0000\u0000\u0122\u0124\t\u0000\u0000\u0000\u0123"+
|
||||||
"\u0123\u0124\u0001\u0000\u0000\u0000\u0124\u0122\u0001\u0000\u0000\u0000"+
|
"\u0122\u0001\u0000\u0000\u0000\u0124\u0127\u0001\u0000\u0000\u0000\u0125"+
|
||||||
"\u0124\u0125\u0001\u0000\u0000\u0000\u0125:\u0001\u0000\u0000\u0000\u0126"+
|
"\u0126\u0001\u0000\u0000\u0000\u0125\u0123\u0001\u0000\u0000\u0000\u0126"+
|
||||||
"\u0128\u0007\u0005\u0000\u0000\u0127\u0126\u0001\u0000\u0000\u0000\u0128"+
|
"\u0128\u0001\u0000\u0000\u0000\u0127\u0125\u0001\u0000\u0000\u0000\u0128"+
|
||||||
"\u0129\u0001\u0000\u0000\u0000\u0129\u0127\u0001\u0000\u0000\u0000\u0129"+
|
"\u0129\u0005~\u0000\u0000\u0129\u012a\u0001\u0000\u0000\u0000\u012a\u012b"+
|
||||||
"\u012a\u0001\u0000\u0000\u0000\u012a\u012b\u0001\u0000\u0000\u0000\u012b"+
|
"\u0006\u001c\u0001\u0000\u012b:\u0001\u0000\u0000\u0000\u012c\u012d\u0005"+
|
||||||
"\u012f\u0005.\u0000\u0000\u012c\u012e\u0007\u0005\u0000\u0000\u012d\u012c"+
|
"/\u0000\u0000\u012d\u012e\u0005/\u0000\u0000\u012e\u0132\u0001\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u012e\u0131\u0001\u0000\u0000\u0000\u012f\u012d"+
|
"\u0000\u012f\u0131\b\u0004\u0000\u0000\u0130\u012f\u0001\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u012f\u0130\u0001\u0000\u0000\u0000\u0130\u0139"+
|
"\u0131\u0134\u0001\u0000\u0000\u0000\u0132\u0130\u0001\u0000\u0000\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000\u0131\u012f\u0001\u0000\u0000\u0000\u0132\u0134"+
|
"\u0132\u0133\u0001\u0000\u0000\u0000\u0133\u0135\u0001\u0000\u0000\u0000"+
|
||||||
"\u0005.\u0000\u0000\u0133\u0135\u0007\u0005\u0000\u0000\u0134\u0133\u0001"+
|
"\u0134\u0132\u0001\u0000\u0000\u0000\u0135\u0136\u0006\u001d\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0135\u0136\u0001\u0000\u0000\u0000\u0136\u0134\u0001"+
|
"\u0136<\u0001\u0000\u0000\u0000\u0137\u0138\u0005(\u0000\u0000\u0138>"+
|
||||||
"\u0000\u0000\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137\u0139\u0001"+
|
"\u0001\u0000\u0000\u0000\u0139\u013a\u0005)\u0000\u0000\u013a@\u0001\u0000"+
|
||||||
"\u0000\u0000\u0000\u0138\u0127\u0001\u0000\u0000\u0000\u0138\u0132\u0001"+
|
"\u0000\u0000\u013b\u013c\u0005:\u0000\u0000\u013cB\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0139<\u0001\u0000\u0000\u0000\u013a\u013b\u0005(\u0000"+
|
"\u013d\u013e\u0005;\u0000\u0000\u013eD\u0001\u0000\u0000\u0000\u013f\u0140"+
|
||||||
"\u0000\u013b>\u0001\u0000\u0000\u0000\u013c\u013d\u0005)\u0000\u0000\u013d"+
|
"\u0005,\u0000\u0000\u0140F\u0001\u0000\u0000\u0000\u0141\u0142\u0005{"+
|
||||||
"@\u0001\u0000\u0000\u0000\u013e\u013f\u0005:\u0000\u0000\u013fB\u0001"+
|
"\u0000\u0000\u0142H\u0001\u0000\u0000\u0000\u0143\u0144\u0005}\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u0140\u0141\u0005;\u0000\u0000\u0141D\u0001\u0000\u0000"+
|
"\u0144J\u0001\u0000\u0000\u0000\u0145\u0146\u0005~\u0000\u0000\u0146L"+
|
||||||
"\u0000\u0142\u0143\u0005,\u0000\u0000\u0143F\u0001\u0000\u0000\u0000\u0144"+
|
"\u0001\u0000\u0000\u0000\u0147\u0148\u0005!\u0000\u0000\u0148N\u0001\u0000"+
|
||||||
"\u0145\u0005{\u0000\u0000\u0145H\u0001\u0000\u0000\u0000\u0146\u0147\u0005"+
|
"\u0000\u0000\f\u0000\u00f4\u00f9\u00fe\u0104\u010b\u010d\u0113\u0115\u011d"+
|
||||||
"}\u0000\u0000\u0147J\u0001\u0000\u0000\u0000\u0148\u0149\u0005~\u0000"+
|
"\u0125\u0132\u0002\u0006\u0000\u0000\u0000\u0001\u0000";
|
||||||
"\u0000\u0149L\u0001\u0000\u0000\u0000\u014a\u014b\u0005!\u0000\u0000\u014b"+
|
|
||||||
"N\u0001\u0000\u0000\u0000\r\u0000\u00f4\u00fa\u0102\u010a\u0114\u0118"+
|
|
||||||
"\u011d\u0124\u0129\u012f\u0136\u0138\u0001\u0006\u0000\u0000";
|
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ T__20=21
|
|||||||
T__21=22
|
T__21=22
|
||||||
T__22=23
|
T__22=23
|
||||||
ID=24
|
ID=24
|
||||||
STRING=25
|
INT=25
|
||||||
NEWLINE=26
|
FLOAT=26
|
||||||
COMMENT=27
|
STRING=27
|
||||||
WS=28
|
WS=28
|
||||||
INT=29
|
COMMENT=29
|
||||||
FLOAT=30
|
LINE_COMMENT=30
|
||||||
LPAREN=31
|
LPAREN=31
|
||||||
RPAREN=32
|
RPAREN=32
|
||||||
COLON=33
|
COLON=33
|
||||||
@@ -43,23 +43,23 @@ EXCLAM=39
|
|||||||
'implements'=4
|
'implements'=4
|
||||||
'@'=5
|
'@'=5
|
||||||
'result'=6
|
'result'=6
|
||||||
'AND'=7
|
'return'=7
|
||||||
'OR'=8
|
'[]'=8
|
||||||
'return'=9
|
'critical'=9
|
||||||
'[]'=10
|
'optional'=10
|
||||||
'critical'=11
|
'INT'=11
|
||||||
'optional'=12
|
'FLOAT'=12
|
||||||
'INT'=13
|
'DOUBLE'=13
|
||||||
'FLOAT'=14
|
'STRING'=14
|
||||||
'DOUBLE'=15
|
'BOOLEAN'=15
|
||||||
'STRING'=16
|
'CHAR'=16
|
||||||
'BOOLEAN'=17
|
'VOID'=17
|
||||||
'CHAR'=18
|
'public'=18
|
||||||
'VOID'=19
|
'protected'=19
|
||||||
'public'=20
|
'private'=20
|
||||||
'protected'=21
|
'default'=21
|
||||||
'private'=22
|
'AND'=22
|
||||||
'default'=23
|
'OR'=23
|
||||||
'('=31
|
'('=31
|
||||||
')'=32
|
')'=32
|
||||||
':'=33
|
':'=33
|
||||||
|
|||||||
@@ -17,16 +17,6 @@ public interface WinxListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitWinx(WinxParser.WinxContext ctx);
|
void exitWinx(WinxParser.WinxContext ctx);
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link WinxParser#body}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterBody(WinxParser.BodyContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link WinxParser#body}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitBody(WinxParser.BodyContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#package}.
|
* Enter a parse tree produced by {@link WinxParser#package}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -37,6 +27,16 @@ public interface WinxListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitPackage(WinxParser.PackageContext ctx);
|
void exitPackage(WinxParser.PackageContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link WinxParser#body}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterBody(WinxParser.BodyContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link WinxParser#body}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitBody(WinxParser.BodyContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#interface}.
|
* Enter a parse tree produced by {@link WinxParser#interface}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -57,6 +57,16 @@ public interface WinxListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitSpecification(WinxParser.SpecificationContext ctx);
|
void exitSpecification(WinxParser.SpecificationContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link WinxParser#impls}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterImpls(WinxParser.ImplsContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link WinxParser#impls}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitImpls(WinxParser.ImplsContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#spec_body}.
|
* Enter a parse tree produced by {@link WinxParser#spec_body}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -97,16 +107,6 @@ public interface WinxListener extends ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitResult_specification(WinxParser.Result_specificationContext ctx);
|
void exitResult_specification(WinxParser.Result_specificationContext ctx);
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link WinxParser#logical_op}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterLogical_op(WinxParser.Logical_opContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link WinxParser#logical_op}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitLogical_op(WinxParser.Logical_opContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#function_spec}.
|
* Enter a parse tree produced by {@link WinxParser#function_spec}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -138,15 +138,15 @@ public interface WinxListener extends ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
void exitInput_types(WinxParser.Input_typesContext ctx);
|
void exitInput_types(WinxParser.Input_typesContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#return_types}.
|
* Enter a parse tree produced by {@link WinxParser#return_type}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void enterReturn_types(WinxParser.Return_typesContext ctx);
|
void enterReturn_type(WinxParser.Return_typeContext ctx);
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by {@link WinxParser#return_types}.
|
* Exit a parse tree produced by {@link WinxParser#return_type}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitReturn_types(WinxParser.Return_typesContext ctx);
|
void exitReturn_type(WinxParser.Return_typeContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#specification_entry}.
|
* Enter a parse tree produced by {@link WinxParser#specification_entry}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -198,13 +198,13 @@ public interface WinxListener extends ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
void exitAccess_modifiers(WinxParser.Access_modifiersContext ctx);
|
void exitAccess_modifiers(WinxParser.Access_modifiersContext ctx);
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link WinxParser#comment}.
|
* Enter a parse tree produced by {@link WinxParser#logical_op}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void enterComment(WinxParser.CommentContext ctx);
|
void enterLogical_op(WinxParser.Logical_opContext ctx);
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by {@link WinxParser#comment}.
|
* Exit a parse tree produced by {@link WinxParser#logical_op}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitComment(WinxParser.CommentContext ctx);
|
void exitLogical_op(WinxParser.Logical_opContext ctx);
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -16,18 +16,18 @@ public interface WinxVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitWinx(WinxParser.WinxContext ctx);
|
T visitWinx(WinxParser.WinxContext ctx);
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link WinxParser#body}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitBody(WinxParser.BodyContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#package}.
|
* Visit a parse tree produced by {@link WinxParser#package}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitPackage(WinxParser.PackageContext ctx);
|
T visitPackage(WinxParser.PackageContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link WinxParser#body}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitBody(WinxParser.BodyContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#interface}.
|
* Visit a parse tree produced by {@link WinxParser#interface}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -40,6 +40,12 @@ public interface WinxVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitSpecification(WinxParser.SpecificationContext ctx);
|
T visitSpecification(WinxParser.SpecificationContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link WinxParser#impls}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitImpls(WinxParser.ImplsContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#spec_body}.
|
* Visit a parse tree produced by {@link WinxParser#spec_body}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -64,12 +70,6 @@ public interface WinxVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitResult_specification(WinxParser.Result_specificationContext ctx);
|
T visitResult_specification(WinxParser.Result_specificationContext ctx);
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link WinxParser#logical_op}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitLogical_op(WinxParser.Logical_opContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#function_spec}.
|
* Visit a parse tree produced by {@link WinxParser#function_spec}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -89,11 +89,11 @@ public interface WinxVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
*/
|
*/
|
||||||
T visitInput_types(WinxParser.Input_typesContext ctx);
|
T visitInput_types(WinxParser.Input_typesContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#return_types}.
|
* Visit a parse tree produced by {@link WinxParser#return_type}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitReturn_types(WinxParser.Return_typesContext ctx);
|
T visitReturn_type(WinxParser.Return_typeContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#specification_entry}.
|
* Visit a parse tree produced by {@link WinxParser#specification_entry}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@@ -125,9 +125,9 @@ public interface WinxVisitor<T> extends ParseTreeVisitor<T> {
|
|||||||
*/
|
*/
|
||||||
T visitAccess_modifiers(WinxParser.Access_modifiersContext ctx);
|
T visitAccess_modifiers(WinxParser.Access_modifiersContext ctx);
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link WinxParser#comment}.
|
* Visit a parse tree produced by {@link WinxParser#logical_op}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitComment(WinxParser.CommentContext ctx);
|
T visitLogical_op(WinxParser.Logical_opContext ctx);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user