Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
D
dumpAst
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
JastAdd
dumpAst
Commits
554e650a
Commit
554e650a
authored
4 years ago
by
René Schöne
Browse files
Options
Downloads
Patches
Plain Diff
WIP: type-level inclusion/exclusion - prepare frontend.
parent
da2f1f42
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
dumpAst/src/main/jastadd/GenerationCommon.jrag
+19
-0
19 additions, 0 deletions
dumpAst/src/main/jastadd/GenerationCommon.jrag
dumpAst/src/main/jastadd/GenerationFrontend.jadd
+94
-29
94 additions, 29 deletions
dumpAst/src/main/jastadd/GenerationFrontend.jadd
with
113 additions
and
29 deletions
dumpAst/src/main/jastadd/GenerationCommon.jrag
0 → 100644
+
19
−
0
View file @
554e650a
aspect GenerationCommon {
// --- find{In,Ex}cludePatternCollection ---
syn PatternCollection BuildConfig.findIncludePatternCollection(String typeRegex) {
for (TypePatternCollectionMapping mapping : getIncludeTypePatternList()) {
if (mapping.getTypeRegex().equals(typeRegex)) {
return mapping.getPatternCollection();
}
}
return null;
}
syn PatternCollection BuildConfig.findExcludePatternCollection(String typeRegex) {
for (TypePatternCollectionMapping mapping : getExcludeTypePatternList()) {
if (mapping.getTypeRegex().equals(typeRegex)) {
return mapping.getPatternCollection();
}
}
return null;
}
}
This diff is collapsed.
Click to expand it.
dumpAst/src/main/jastadd/GenerationFrontend.jadd
+
94
−
29
View file @
554e650a
...
...
@@ -94,10 +94,10 @@ public class DumpBuilder {
* @return this
* @see java.util.regex.Pattern#compile(java.lang.String)
*/
public DumpBuilder disableTypes(String
... r
egexes) {
public DumpBuilder disableTypes(String
regex, String... moreR
egexes) {
updateRegexes(() -> buildConfig.getTypeIgnorePattern(),
s -> buildConfig.setTypeIgnorePattern(s),
regexes);
regex
, moreRegex
es);
return this;
}
...
...
@@ -109,60 +109,100 @@ public class DumpBuilder {
* @return this
* @see java.util.regex.Pattern#compile(java.lang.String)
*/
public DumpBuilder excludeTokens(String
... r
egexes) {
public DumpBuilder excludeTokens(String
regex, String... moreR
egexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getTokenPattern(),
s -> buildConfig.getGlobalPatternCollection().setTokenPattern(s),
regexes);
regex
, moreRegex
es);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder excludeTokensFor(String typeRegex, String... regexes) {
public DumpBuilder excludeTokensFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getTokenPattern(),
s -> collection.setTokenPattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder excludeChildrenFor(String typeRegex, String... regexes) {
public DumpBuilder excludeChildrenFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getChildPattern(),
s -> collection.setChildPattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder excludeRelationsFor(String typeRegex, String... regexes) {
public DumpBuilder excludeRelationsFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getRelationPattern(),
s -> collection.setRelationPattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder excludeAttributesFor(String typeRegex, String... regexes) {
public DumpBuilder excludeAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getAttributePattern(),
s -> collection.setAttributePattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder excludeNonterminalAttributesFor(String typeRegex, String... regexes) {
public DumpBuilder excludeNonterminalAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateExcludePatternCollection(typeRegex);
updateRegexes(() -> collection.getNonterminalAttributePattern(),
s -> collection.setNonterminalAttributePattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder includeTokensFor(String typeRegex, String... regexes) {
public DumpBuilder includeTokensFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getTokenPattern(),
s -> collection.setTokenPattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder includeChildrenFor(String typeRegex, String... regexes) {
public DumpBuilder includeChildrenFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getChildPattern(),
s -> collection.setChildPattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder includeRelationsFor(String typeRegex, String... regexes) {
public DumpBuilder includeRelationsFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getRelationPattern(),
s -> collection.setRelationPattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder includeAttributesFor(String typeRegex, String... regexes) {
public DumpBuilder includeAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getAttributePattern(),
s -> collection.setAttributePattern(s),
regex, moreRegexes);
return this;
}
/** TODO: document, implement, sort */
public DumpBuilder includeNonterminalAttributesFor(String typeRegex, String... regexes) {
public DumpBuilder includeNonterminalAttributesFor(String typeRegex, String regex, String... moreRegexes) {
PatternCollection collection = findOrCreateIncludePatternCollection(typeRegex);
updateRegexes(() -> collection.getNonterminalAttributePattern(),
s -> collection.setNonterminalAttributePattern(s),
regex, moreRegexes);
return this;
}
...
...
@@ -174,10 +214,10 @@ public class DumpBuilder {
* @return this
* @see java.util.regex.Pattern#compile(java.lang.String)
*/
public DumpBuilder includeAttributes(String
... r
egexes) {
public DumpBuilder includeAttributes(String
regex, String... moreR
egexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getAttributePattern(),
s -> buildConfig.getGlobalPatternCollection().setAttributePattern(s),
regexes);
regex
, moreRegex
es);
return this;
}
...
...
@@ -193,10 +233,10 @@ public class DumpBuilder {
* @return this
* @see java.util.regex.Pattern#compile(java.lang.String)
*/
public DumpBuilder includeNonterminalAttributes(String
... r
egexes) {
public DumpBuilder includeNonterminalAttributes(String
regex, String... moreR
egexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getNonterminalAttributePattern(),
s -> buildConfig.getGlobalPatternCollection().setNonterminalAttributePattern(s),
regexes);
regex
, moreRegex
es);
return this;
}
...
...
@@ -209,10 +249,10 @@ public class DumpBuilder {
* @return this
* @see java.util.regex.Pattern#compile(java.lang.String)
*/
public DumpBuilder excludeChildren(String
... r
egexes) {
public DumpBuilder excludeChildren(String
regex, String... moreR
egexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getChildPattern(),
s -> buildConfig.getGlobalPatternCollection().setChildPattern(s),
regexes);
regex
, moreRegex
es);
return this;
}
/**
...
...
@@ -225,20 +265,45 @@ public class DumpBuilder {
* @return this
* @see java.util.regex.Pattern#compile(java.lang.String)
*/
public DumpBuilder excludeRelations(String
... r
egexes) {
public DumpBuilder excludeRelations(String
regex, String... moreR
egexes) {
updateRegexes(() -> buildConfig.getGlobalPatternCollection().getRelationPattern(),
s -> buildConfig.getGlobalPatternCollection().setRelationPattern(s),
regexes);
regex
, moreRegex
es);
return this;
}
private void updateRegexes(java.util.function.Supplier<String> getter, java.util.function.Consumer<String> setter, String... values) {
for (String value : values) {
if (getter.get().isEmpty()) {
setter.accept(value);
} else {
setter.accept(getter.get() + "|" + value);
}
private PatternCollection findOrCreateIncludePatternCollection(String typeRegex) {
PatternCollection result = buildConfig.findIncludePatternCollection(typeRegex);
if (result == null) {
TypePatternCollectionMapping mapping = new TypePatternCollectionMapping();
mapping.setTypeRegex(typeRegex);
result = new PatternCollection();
mapping.setPatternCollection(result);
buildConfig.addIncludeTypePattern(mapping);
}
return result;
}
private PatternCollection findOrCreateExcludePatternCollection(String typeRegex) {
PatternCollection result = buildConfig.findExcludePatternCollection(typeRegex);
if (result == null) {
TypePatternCollectionMapping mapping = new TypePatternCollectionMapping();
mapping.setTypeRegex(typeRegex);
result = new PatternCollection();
mapping.setPatternCollection(result);
buildConfig.addExcludeTypePattern(mapping);
}
return result;
}
private void updateRegexes(java.util.function.Supplier<String> getter, java.util.function.Consumer<String> setter, String regex, String... moreRegexes) {
if (getter.get().isEmpty()) {
setter.accept(regex);
} else {
setter.accept(getter.get() + "|" + regex);
}
for (String value : moreRegexes) {
setter.accept(getter.get() + "|" + value);
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment