Skip to content
Snippets Groups Projects
Commit b8922235 authored by Jesper's avatar Jesper
Browse files

Remove TokenId

Removed an unnecessary specialization if Id.
This simplifies JastAdd slightly and should leave code generation unaffected.
parent 3f37da73
No related branches found
No related tags found
No related merge requests found
......@@ -106,7 +106,7 @@ aspect Names {
syn String Component.name();
eq ListComponent.name() = getId().name();
eq OptionalComponent.name() = getId().name();
eq TokenComponent.name() = getTokenId().name();
eq TokenComponent.name() = getId().name();
eq AggregateComponent.name() = getId().name();
syn String Id.name() = hasNameNode() ? getNameNode().name() : getIdUse().name();
......@@ -114,8 +114,6 @@ aspect Names {
syn String NameNode.name() = getID();
syn String IdUse.name() = getID();
syn String TokenId.name() = getID();
syn String RegionDecl.name() = getIdUse().name();
}
......@@ -123,12 +121,10 @@ aspect Types {
syn String Component.type();
eq ListComponent.type() = getId().type();
eq OptionalComponent.type() = getId().type();
eq TokenComponent.type() = getTokenId().type();
eq TokenComponent.type() = getId().type();
eq AggregateComponent.type() = getId().type();
syn String Id.type() = getIdUse().name();
syn String TokenId.type() = getTYPE();
}
aspect ComponentHostClass {
......
......@@ -71,7 +71,12 @@ OptionalComponent : Component ::= Id;
OptionalComponentNTA : OptionalComponent;
TokenComponent : Component ::= TokenId;
/**
* A terminal/token of the grammar. The default type for terminals is String.
*
* <p>This component kind can also be used as an intrinsic nonterminal reference.
*/
TokenComponent : Component ::= Id;
TokenComponentNTA : TokenComponent;
......@@ -87,8 +92,6 @@ IdUse ::= <ID:String>;
IdDecl ::= <ID:String>;
TokenId ::= <ID:String> <TYPE:String>;
/**
* Used to represent synthesized NTA components.
*
......
......@@ -197,10 +197,6 @@ outer: while (true) {
}
}
public String TokenId.componentString() {
return getID() + ":" + getTYPE();
}
public abstract String Component.componentString();
public String ListComponent.componentString() {
......@@ -212,7 +208,7 @@ outer: while (true) {
}
public String TokenComponent.componentString() {
return "<" + getTokenId().componentString() + ">";
return "<" + getId().componentString() + ">";
}
public String AggregateComponent.componentString() {
......@@ -241,10 +237,6 @@ outer: while (true) {
return id;
}
public String TokenId.componentHtml() {
return getID() + ":" + getTYPE();
}
public abstract String Component.componentHtml();
public String ListComponent.componentHtml() {
......@@ -256,7 +248,7 @@ outer: while (true) {
}
public String TokenComponent.componentHtml() {
return "&lt;" + getTokenId().componentHtml() + "&gt;";
return "&lt;" + getId().componentHtml() + "&gt;";
}
public String AggregateComponent.componentHtml() {
......
......@@ -120,7 +120,7 @@ aspect ConstructorParameterTypes {
syn String Component.constrParmType();
eq ListComponent.constrParmType() = config().listType() + "<" + getId().type() + ">";
eq OptionalComponent.constrParmType() = config().optType() + "<" + getId().type() + ">";
eq TokenComponent.constrParmType() = getTokenId().getTYPE();
eq TokenComponent.constrParmType() = type();
eq AggregateComponent.constrParmType() = getId().type();
}
......
......@@ -96,10 +96,10 @@ aspect Flush {
Component comp = getComponent(c);
if (comp instanceof TokenComponent) {
TokenComponent tokenComp = (TokenComponent) comp;
String type = tokenComp.getTokenId().getTYPE();
String type = tokenComp.type();
tt.bind("IsStringToken", type.equals("String") || type.equals("java.lang.String"));
tt.bind("IsPrimitive", tokenComp.isPrimitive());
tt.bind("Id", tokenComp.getTokenId().getID());
tt.bind("Id", tokenComp.name());
tt.bind("TypeSign", ASTNode.convTypeNameToSignature(type));
res.append(tt.expand("TokenComponent.flushNTACache"));
}
......
......@@ -211,8 +211,7 @@ aspect JaddCodeGen {
if (!c.isNTA()) {
if (c instanceof TokenComponent) {
TokenComponent t = (TokenComponent) c;
String tokenId = t.getTokenId().getID();
out.format("%sset%s(p%d);%n", config().ind(2), tokenId, param);
out.format("%sset%s(p%d);%n", config().ind(2), t.name(), param);
} else {
out.format("%ssetChild(p%d, %d);%n", config().ind(2), param, childIndex);
childIndex++;
......@@ -504,8 +503,7 @@ aspect JaddCodeGen {
for (Component c : components()) {
if (c instanceof TokenComponent) {
TokenComponent t = (TokenComponent) c;
String id = t.getTokenId().getID();
buf.append("out.print(\"\\\"\" + get" + id + "() + \"\\\"\");\n");
buf.append("out.print(\"\\\"\" + get" + t.name() + "() + \"\\\"\");\n");
}
}
return buf.toString();
......@@ -635,14 +633,14 @@ aspect JaddCodeGen {
public void TokenComponent.jaddGen(int index, boolean publicModifier, ASTDecl decl) {
TemplateContext tt = templateContext();
tt.bind("Id", getTokenId().getID());
tt.bind("Type", getTokenId().getTYPE());
tt.bind("TypeInSignature", ASTNode.convTypeNameToSignature(getTokenId().getTYPE()));
tt.bind("Id", name());
tt.bind("Type", type());
tt.bind("TypeInSignature", ASTNode.convTypeNameToSignature(type()));
tt.bind("Host", decl.name());
tt.bind("Modifier", publicModifier ? "public" : "private");
boolean isStringToken = getTokenId().getTYPE().equals("String")
|| getTokenId().getTYPE().equals("java.lang.String");
boolean isStringToken = type().equals("String")
|| type().equals("java.lang.String");
boolean isRedefined = decl.redefinesTokenComponent(this);
tt.bind("IsStringToken", isStringToken);
tt.bind("IsRedefined", isRedefined);
......
......@@ -322,7 +322,7 @@ aspect JragCodeGen {
|| type.equals("char") || type.equals("byte");
}
syn boolean TokenComponent.isPrimitive() = AttrDecl.isPrimitiveType(getTokenId().getTYPE());
syn boolean TokenComponent.isPrimitive() = AttrDecl.isPrimitiveType(type());
/**
* @return {@code true} if this attribute returns only non-nullable values.
......
......@@ -182,7 +182,7 @@ aspect IncrementalDDG {
if (config().incrementalLevelParam() || config().incrementalLevelAttr()) {
for (Component c : components()) {
if (c instanceof TokenComponent && !c.isNTA()) {
tt.bind("Id", ((TokenComponent)c).getTokenId().getID());
tt.bind("Id", ((TokenComponent) c).name());
res.append(tt.expand("ASTDecl.checkAndCleanupTokenListeners"));
}
}
......@@ -200,7 +200,7 @@ aspect IncrementalDDG {
for (int c = 0; c < getNumComponent(); c++) {
Component comp = getComponent(c);
if (comp instanceof TokenComponent) {
tt.bind("Id", ((TokenComponent)comp).getTokenId().getID());
tt.bind("Id", ((TokenComponent) comp).name());
res.append(tt.expand("TokenComponent.copyTokenHandler"));
}
}
......
......@@ -90,7 +90,7 @@ aspect IncrementalDebug {
if (config().incrementalLevelParam() || config().incrementalLevelAttr()) {
for (Component c : components()) {
if (c instanceof TokenComponent && !c.isNTA()) {
tt.bind("Id", ((TokenComponent)c).getTokenId().getID());
tt.bind("Id", ((TokenComponent) c).name());
res.append(tt.expand("ASTDecl.checkAndDumpTokenDeps"));
}
}
......
......@@ -101,7 +101,7 @@
for (int c = 0; c < getNumComponent(); c++) {
Component comp = getComponent(c);
if (comp instanceof TokenComponent) {
tt.bind("Id", ((TokenComponent)comp).getTokenId().getID());
tt.bind("Id", ((TokenComponent) comp).name());
res.append(tt.expand("ASTDecl.transferSetsFromTokenHandler"));
}
}
......
......@@ -50,7 +50,7 @@ aspect IncrementalState {
for (int c = 0; c < getNumComponent(); c++) {
Component comp = getComponent(c);
if (comp instanceof TokenComponent) {
tt.bind("Id", ((TokenComponent)comp).getTokenId().getID());
tt.bind("Id", ((TokenComponent) comp).name());
res.append(tt.expand("ASTDecl.changeStateTokenHandler"));
}
}
......@@ -78,7 +78,7 @@ aspect IncrementalState {
for (int c = 0; c < getNumComponent(); c++) {
Component comp = getComponent(c);
if (comp instanceof TokenComponent) {
tt.bind("Id", ((TokenComponent)comp).getTokenId().getID());
tt.bind("Id", ((TokenComponent) comp).name());
res.append(tt.expand("ASTDecl.throwAwayTokenHandler"));
}
}
......
......@@ -277,15 +277,15 @@ void IdDecl() #IdDecl():
}
}
void TokenId() #TokenId():
void TokenId() #Id():
{ Token t;
String type = null;
boolean hasType = false;
}
{ t = <ID> [ ":" type = Type() { hasType = true; } ]
// Default type is String for backward compability.
{ jjtThis.setID(t.image);
jjtThis.setTYPE(hasType ? type : "String");
{ jjtThis.setNameNode(new NameNode(t.image));
jjtThis.setIdUse(new IdUse(hasType ? type : "String"));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment