Skip to content
Snippets Groups Projects
Commit 2568fb4c authored by Johannes Mey's avatar Johannes Mey
Browse files

add nta list and opt components

parent b183e521
Branches feature/better-placeholders
No related tags found
No related merge requests found
Pipeline #4513 passed
...@@ -100,6 +100,12 @@ aspect BackendAbstractGrammar { ...@@ -100,6 +100,12 @@ aspect BackendAbstractGrammar {
public String NTAComponent.generateAbstractGrammar() { public String NTAComponent.generateAbstractGrammar() {
return "/" + super.generateAbstractGrammar() + "/"; return "/" + super.generateAbstractGrammar() + "/";
} }
public String NTAListComponent.generateAbstractGrammar() {
return "/" + super.generateAbstractGrammar() + "*/";
}
public String NTAOptComponent.generateAbstractGrammar() {
return "/[" + super.generateAbstractGrammar() + "]/";
}
public String TokenComponent.generateAbstractGrammar() { public String TokenComponent.generateAbstractGrammar() {
return "<" + getID() + ":" + getTypeUse() + ">"; return "<" + getID() + ":" + getTypeUse() + ">";
} }
...@@ -1170,6 +1176,14 @@ aspect Serializer { ...@@ -1170,6 +1176,14 @@ aspect Serializer {
// do not serialize NTA // do not serialize NTA
} }
public void NTAListComponent.serialize(StringBuilder sb, int indent) {
// do not serialize NTA
}
public void NTAOptComponent.serialize(StringBuilder sb, int indent) {
// do not serialize NTA
}
public void ListComponent.serialize(StringBuilder sb, int indent) { public void ListComponent.serialize(StringBuilder sb, int indent) {
sb.append(ind(indent) + "if (getNum" + getID() + "() > 0) {\n"); sb.append(ind(indent) + "if (getNum" + getID() + "() > 0) {\n");
sb.append(ind(indent + 1) + "g.writeArrayFieldStart(\"" + getID() + "\");\n"); sb.append(ind(indent + 1) + "g.writeArrayFieldStart(\"" + getID() + "\");\n");
...@@ -1410,6 +1424,14 @@ aspect Serializer { ...@@ -1410,6 +1424,14 @@ aspect Serializer {
// do not serialize NTA // do not serialize NTA
} }
public void NTAListComponent.deserialize(StringBuilder sb, int indent) {
// do not serialize NTA
}
public void NTAOptComponent.deserialize(StringBuilder sb, int indent) {
// do not serialize NTA
}
public void ListComponent.deserialize(StringBuilder sb, int indent) { public void ListComponent.deserialize(StringBuilder sb, int indent) {
sb.append(ind(indent) + "for (" + jsonNodeType + " child : children.get(\"" + getID() + "\")) {\n"); sb.append(ind(indent) + "for (" + jsonNodeType + " child : children.get(\"" + getID() + "\")) {\n");
sb.append(ind(indent + 1) + "element.add" + getID() + "(" + getTypeUse().decl().getID() + ".deserialize(child));\n"); sb.append(ind(indent + 1) + "element.add" + getID() + "(" + getTypeUse().decl().getID() + ".deserialize(child));\n");
......
...@@ -8,6 +8,8 @@ NormalComponent : SimpleTypeComponent; ...@@ -8,6 +8,8 @@ NormalComponent : SimpleTypeComponent;
ListComponent : SimpleTypeComponent; ListComponent : SimpleTypeComponent;
OptComponent : SimpleTypeComponent; OptComponent : SimpleTypeComponent;
NTAComponent : SimpleTypeComponent; NTAComponent : SimpleTypeComponent;
NTAOptComponent : SimpleTypeComponent;
NTAListComponent : SimpleTypeComponent;
TokenComponent : Component ::= TypeUse; TokenComponent : Component ::= TypeUse;
abstract TypeUse ::= <ID>; abstract TypeUse ::= <ID>;
......
...@@ -65,6 +65,12 @@ Component component = ...@@ -65,6 +65,12 @@ Component component =
// Opt // Opt
| LBRACKET ID COL s_type_use.u RBRACKET {: return new OptComponent(ID, u); :} | LBRACKET ID COL s_type_use.u RBRACKET {: return new OptComponent(ID, u); :}
| LBRACKET s_type_use.u RBRACKET {: return new OptComponent(u.getID(), u); :} | LBRACKET s_type_use.u RBRACKET {: return new OptComponent(u.getID(), u); :}
// NTA list
| SLASH ID COL s_type_use.u STAR SLASH {: return new NTAListComponent(ID, u); :}
| SLASH s_type_use.u STAR SLASH {: return new NTAListComponent(u.getID(), u); :}
// NTA opt
| SLASH LBRACKET ID COL s_type_use.u RBRACKET SLASH {: return new NTAOptComponent(ID, u); :}
| SLASH LBRACKET s_type_use.u RBRACKET SLASH {: return new NTAOptComponent(u.getID(), u); :}
// NTA // NTA
| SLASH ID COL s_type_use.u SLASH {: return new NTAComponent(ID, u); :} | SLASH ID COL s_type_use.u SLASH {: return new NTAComponent(ID, u); :}
| SLASH s_type_use.u SLASH {: return new NTAComponent(u.getID(), u); :} | SLASH s_type_use.u SLASH {: return new NTAComponent(u.getID(), u); :}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment