Skip to content

Commit 107caa5

Browse files
committed
First parser test
1 parent ca6a166 commit 107caa5

16 files changed

Lines changed: 293 additions & 64 deletions

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ repositories {
1010
dependencies {
1111
testCompile group: 'junit', name: 'junit', version: '4.11'
1212
compile 'org.antlr:antlr4:4.5'
13+
testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
14+
testCompile 'org.codehaus.groovy:groovy-all:2.4.3'
1315
}

src/main/grammar/Graphql.g4

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,5 @@ Digit : '0'..'9';
117117
StringValue: '\"' StringCharacter+ '\"';
118118

119119
StringCharacter: [a-zA-Z0-9];
120+
121+
WS : [ \t\r\n]+ -> skip ;

src/main/java/graphql/Execution.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ private void executeOperation(OperationDefinition operationDefinition) {
1818
}
1919

2020
private GraphQLObjectType getOperationRootType(OperationDefinition operationDefinition, GraphQLSchema graphQLSchema) {
21+
return null;
2122
}
2223
}

src/main/java/graphql/GraphQL.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package graphql;
22

33

4-
import graphql.antlrparser.GraphqlLexer;
5-
import graphql.antlrparser.GraphqlListener;
6-
import graphql.antlrparser.GraphqlParser;
4+
import graphql.parser.antlr.GraphqlLexer;
5+
import graphql.parser.antlr.GraphqlListener;
6+
import graphql.parser.antlr.GraphqlParser;
77
import org.antlr.v4.runtime.*;
88
import org.antlr.v4.runtime.misc.NotNull;
99
import org.antlr.v4.runtime.tree.ErrorNode;
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
package graphql.language;
22

33

4+
import java.util.ArrayList;
45
import java.util.List;
56

67
public class Document {
78

8-
private List<Definition> definitions;
9+
private List<Definition> definitions = new ArrayList<>();
10+
11+
public List<Definition> getDefinitions() {
12+
return definitions;
13+
}
14+
15+
public void setDefinitions(List<Definition> definitions) {
16+
this.definitions = definitions;
17+
}
18+
919
}

src/main/java/graphql/language/Field.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,44 @@ public class Field implements Selection {
1111
private List<Argument> arguments;
1212
private List<Directive> directives;
1313
private SelectionSet selectionSet;
14+
15+
public String getName() {
16+
return name;
17+
}
18+
19+
public void setName(String name) {
20+
this.name = name;
21+
}
22+
23+
public String getAlias() {
24+
return alias;
25+
}
26+
27+
public void setAlias(String alias) {
28+
this.alias = alias;
29+
}
30+
31+
public List<Argument> getArguments() {
32+
return arguments;
33+
}
34+
35+
public void setArguments(List<Argument> arguments) {
36+
this.arguments = arguments;
37+
}
38+
39+
public List<Directive> getDirectives() {
40+
return directives;
41+
}
42+
43+
public void setDirectives(List<Directive> directives) {
44+
this.directives = directives;
45+
}
46+
47+
public SelectionSet getSelectionSet() {
48+
return selectionSet;
49+
}
50+
51+
public void setSelectionSet(SelectionSet selectionSet) {
52+
this.selectionSet = selectionSet;
53+
}
1454
}
Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,59 @@
11
package graphql.language;
22

33

4+
import java.util.List;
5+
46
public class OperationDefinition implements Definition {
57

68
public enum Operation {
79
QUERY, MUTATION
810
}
911

10-
private Operation operation;
1112
private String name;
1213

14+
private Operation operation;
15+
private List<VariableDefinition> variableDefinitions;
16+
private List<Directive> directives;
17+
private SelectionSet selectionSet;
18+
19+
20+
public String getName() {
21+
return name;
22+
}
23+
24+
public void setName(String name) {
25+
this.name = name;
26+
}
27+
28+
public Operation getOperation() {
29+
return operation;
30+
}
31+
32+
public void setOperation(Operation operation) {
33+
this.operation = operation;
34+
}
35+
36+
public List<VariableDefinition> getVariableDefinitions() {
37+
return variableDefinitions;
38+
}
39+
40+
public void setVariableDefinitions(List<VariableDefinition> variableDefinitions) {
41+
this.variableDefinitions = variableDefinitions;
42+
}
43+
44+
public List<Directive> getDirectives() {
45+
return directives;
46+
}
47+
48+
public void setDirectives(List<Directive> directives) {
49+
this.directives = directives;
50+
}
51+
52+
public SelectionSet getSelectionSet() {
53+
return selectionSet;
54+
}
55+
56+
public void setSelectionSet(SelectionSet selectionSet) {
57+
this.selectionSet = selectionSet;
58+
}
1359
}

src/main/java/graphql/language/SelectionSet.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,8 @@
77
public class SelectionSet {
88

99
private final List<Selection> selections = new ArrayList<>();
10+
11+
public List<Selection> getSelections() {
12+
return selections;
13+
}
1014
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package graphql.language;
2+
3+
4+
public interface SelectionSetContainer {
5+
6+
7+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package graphql.parser;
2+
3+
4+
import graphql.language.Document;
5+
import graphql.language.Field;
6+
import graphql.language.OperationDefinition;
7+
import graphql.language.SelectionSet;
8+
import graphql.parser.antlr.GraphqlBaseListener;
9+
import graphql.parser.antlr.GraphqlParser;
10+
import org.antlr.v4.runtime.misc.NotNull;
11+
12+
public class GraphqlAntlrToLanguage extends GraphqlBaseListener {
13+
14+
Document result;
15+
OperationDefinition operationDefinition;
16+
SelectionSet selectionSet;
17+
Field field;
18+
19+
@Override
20+
public void enterDocument(@NotNull GraphqlParser.DocumentContext ctx) {
21+
result = new Document();
22+
}
23+
24+
@Override
25+
public void enterOperationDefinition(@NotNull GraphqlParser.OperationDefinitionContext ctx) {
26+
if (ctx.operationType() == null) {
27+
operationDefinition = new OperationDefinition();
28+
operationDefinition.setOperation(OperationDefinition.Operation.QUERY);
29+
result.getDefinitions().add(operationDefinition);
30+
}
31+
}
32+
33+
@Override
34+
public void enterSelectionSet(@NotNull GraphqlParser.SelectionSetContext ctx) {
35+
selectionSet = new SelectionSet();
36+
operationDefinition.setSelectionSet(selectionSet);
37+
38+
}
39+
40+
@Override
41+
public void enterField(@NotNull GraphqlParser.FieldContext ctx) {
42+
Field field = new Field();
43+
field.setName(ctx.NAME().getText());
44+
selectionSet.getSelections().add(field);
45+
}
46+
47+
}

0 commit comments

Comments
 (0)