Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
JastAdd
relational-rags
Commits
b1e43a46
Commit
b1e43a46
authored
Dec 15, 2019
by
Johannes Mey
Browse files
fix bug with terminal nonterminal attributes, allow shadowing
parent
dca69ff0
Pipeline
#4900
passed with stage
in 1 minute and 56 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/main/jastadd/Analysis.jrag
View file @
b1e43a46
...
...
@@ -105,6 +105,11 @@ aspect ComponentAnalysis {
//--- isEqual ---
syn boolean Component.isEqual(Component c) = this.getClass() == c.getClass() && getTypeUse().isEqual(c.getTypeUse());
/**
* TokenComponents may be specialized by NTATokenComponents and vice versa
*/
eq TokenComponent.isEqual(Component c) = (c instanceof TokenComponent) && getTypeUse().isEqual(c.getTypeUse());
syn boolean TypeUse.isEqual(TypeUse u);
eq SimpleTypeUse.isEqual(TypeUse u) = u instanceof SimpleTypeUse && getID().equals(u.getID());
eq ParameterizedTypeUse.isEqual(TypeUse u) {
...
...
src/main/jastadd/Backend.jadd
View file @
b1e43a46
...
...
@@ -111,6 +111,9 @@ aspect BackendAbstractGrammar {
public String TokenComponent.generateAbstractGrammar() {
return "<" + getID() + ":" + getTypeUse() + ">";
}
public String NTATokenComponent.generateAbstractGrammar() {
return "/<" + getID() + ":" + getTypeUse() + ">/";
}
public String RelationComponent.generateAbstractGrammar() {
return "<" + getImplAttributeName() + ":" + ofTypeDecl() + ">";
...
...
src/main/jastadd/RelAst.ast
View file @
b1e43a46
...
...
@@ -11,6 +11,7 @@ NTAComponent : SimpleTypeComponent;
NTAOptComponent : SimpleTypeComponent;
NTAListComponent : SimpleTypeComponent;
TokenComponent : Component ::= TypeUse;
NTATokenComponent : TokenComponent ::= TypeUse;
abstract TypeUse ::= <ID>;
SimpleTypeUse : TypeUse;
...
...
src/main/jastadd/RelAst.parser
View file @
b1e43a46
...
...
@@ -75,8 +75,8 @@ Component component =
| 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); :}
// NTA Token (same as NTA)
| SLASH LT ID COL s_type_use.u GT SLASH {: return new NTAComponent(ID, u); :}
| SLASH LT s_type_use.u GT SLASH {: return new NTAComponent(u.getID(), u); :}
| SLASH LT ID COL s_type_use.u GT SLASH {: return new NTA
Token
Component(ID, u); :}
| SLASH LT s_type_use.u GT SLASH {: return new NTA
Token
Component(u.getID(), u); :}
// Token
| LT ID COL type_use.u GT {: return new TokenComponent(ID, u); :}
| LT ID GT {: return new TokenComponent(ID, new SimpleTypeUse("String")); :}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment