Skip to content
Snippets Groups Projects
Commit 08e6ea11 authored by René Schöne's avatar René Schöne
Browse files

Add defaultFolders, fix some of the empty newlines.

parent 5661e7c6
Branches
Tags
No related merge requests found
Pipeline #7383 passed
aspect Analysis { aspect Analysis {
syn lazy Folder GrammarFile.defaultFolder() {
Folder result = new Folder();
result.setName(new java.io.File(getFileName()).getName().replace(".relast", "").replace(".ast", ""));
for (Declaration decl : getDeclarationList()) {
if (decl.isTypeDecl() && !decl.asTypeDecl().hasSourceFolder()) {
result.addType(decl.asTypeDecl());
}
}
return result;
}
} }
...@@ -13,6 +13,14 @@ aspect Navigation { ...@@ -13,6 +13,14 @@ aspect Navigation {
eq Program.getChild().containedFile() = null; eq Program.getChild().containedFile() = null;
eq Relast2Uml.getChild().containedFile() = null; eq Relast2Uml.getChild().containedFile() = null;
// --- isTypeDecl (should be in preprocessor) ---
syn boolean Declaration.isTypeDecl() = false;
eq TypeDecl.isTypeDecl() = true;
// --- asTypeDecl (should be in preprocessor) ---
syn TypeDecl Declaration.asTypeDecl() = null;
eq TypeDecl.asTypeDecl() = this;
// --- isTypeComponent (should be in preprocessor) --- // --- isTypeComponent (should be in preprocessor) ---
syn boolean Component.isTypeComponent() = false; syn boolean Component.isTypeComponent() = false;
eq TypeComponent.isTypeComponent() = true; eq TypeComponent.isTypeComponent() = true;
......
package org.jastadd.relast2uml.compiler; package org.jastadd.relast2uml.compiler;
import beaver.Parser; import beaver.Parser;
import org.jastadd.relast2uml.ast.ErrorMessage; import org.jastadd.relast2uml.ast.*;
import org.jastadd.relast2uml.ast.GrammarFile;
import org.jastadd.relast2uml.ast.Program;
import org.jastadd.relast2uml.ast.Relast2Uml;
import org.jastadd.relast2uml.compiler.options.CommandLine; import org.jastadd.relast2uml.compiler.options.CommandLine;
import org.jastadd.relast2uml.compiler.options.FlagOption; import org.jastadd.relast2uml.compiler.options.FlagOption;
import org.jastadd.relast2uml.compiler.options.Option; import org.jastadd.relast2uml.compiler.options.Option;
...@@ -25,6 +22,7 @@ public class Compiler { ...@@ -25,6 +22,7 @@ public class Compiler {
private StringOption optionOutputFile; private StringOption optionOutputFile;
private StringOption optionInputRelast2Uml; private StringOption optionInputRelast2Uml;
private FlagOption optionDefaultFolders;
private FlagOption optionHelp; private FlagOption optionHelp;
private FlagOption optionVersion; private FlagOption optionVersion;
private FlagOption optionVerbose; private FlagOption optionVerbose;
...@@ -165,6 +163,8 @@ public class Compiler { ...@@ -165,6 +163,8 @@ public class Compiler {
"output", "target file to be generated.", "uml.md").makeOptional()); "output", "target file to be generated.", "uml.md").makeOptional());
optionInputRelast2Uml = addOption(new StringOption( optionInputRelast2Uml = addOption(new StringOption(
"inputRelast2Uml", "relast2uml definition file.").makeOptional()); "inputRelast2Uml", "relast2uml definition file.").makeOptional());
optionDefaultFolders = addOption(new FlagOption(
"defaultFolders", "Creates a default folder per grammar file."));
optionHelp = addOption(new FlagOption( optionHelp = addOption(new FlagOption(
"help", "Print usage and exit.")); "help", "Print usage and exit."));
optionVersion = addOption(new FlagOption( optionVersion = addOption(new FlagOption(
...@@ -193,7 +193,6 @@ public class Compiler { ...@@ -193,7 +193,6 @@ public class Compiler {
inputGrammar.dumpTree(System.out); inputGrammar.dumpTree(System.out);
} }
program.addGrammarFile(inputGrammar); program.addGrammarFile(inputGrammar);
inputGrammar.treeResolveAll();
inputGrammar.setFileName(inputGrammarFileName); inputGrammar.setFileName(inputGrammarFileName);
} catch (IOException | Parser.Exception e) { } catch (IOException | Parser.Exception e) {
throw new CompilerException("Could not parse grammar file " + inputGrammarFileName, e); throw new CompilerException("Could not parse grammar file " + inputGrammarFileName, e);
...@@ -217,6 +216,11 @@ public class Compiler { ...@@ -217,6 +216,11 @@ public class Compiler {
} }
relast2Uml.setProgram(program); relast2Uml.setProgram(program);
relast2Uml.treeResolveAll(); relast2Uml.treeResolveAll();
if (optionDefaultFolders.isSet()) {
for (GrammarFile grammarFile : program.getGrammarFileList()) {
relast2Uml.addFolder(grammarFile.defaultFolder());
}
}
return relast2Uml; return relast2Uml;
} }
......
{{=<% %>=}}<%#isAbstract%>abstract <%/isAbstract%>class <%name%><%#InnerTokenComponents%><%#first%> {<%/first%> {{=<% %>=}}<%#isAbstract%>abstract <%/isAbstract%>class <%name%><%#InnerTokenComponents%><%#first%> {
<%/first%>
<%name%> <%name%>
<%#last%>}<%/last%> <%#last%>
<%/InnerTokenComponents%><%={{ }}=%> }<%/last%><%/InnerTokenComponents%><%={{ }}=%>
...@@ -35,6 +35,7 @@ public class CompilerTest { ...@@ -35,6 +35,7 @@ public class CompilerTest {
String[] args = { String[] args = {
"--output=" + output, "--output=" + output,
"--inputRelast2Uml=" + inputRelast2Uml, "--inputRelast2Uml=" + inputRelast2Uml,
"--defaultFolders",
inputGrammar inputGrammar
}; };
......
...@@ -11,7 +11,7 @@ Funktionsprinzip ::= Dateneingangswert* Verarbeitungsschritt* Datenausgangswert* ...@@ -11,7 +11,7 @@ Funktionsprinzip ::= Dateneingangswert* Verarbeitungsschritt* Datenausgangswert*
abstract Datenquelle; abstract Datenquelle;
// Beispiel für Wert: FB_links, ist_diff, max_diff // Beispiel für Wert: FB_links, ist_diff, max_diff
Wert : Datenquelle ::= <Datentyp> ; Wert : Datenquelle ::= <Datentyp> <A> <B>;
// Ein Wert, der bei "Dateneingang" steht, z.B. für ReLi: max_Diff oder FB,links // Ein Wert, der bei "Dateneingang" steht, z.B. für ReLi: max_Diff oder FB,links
// Beispiel für Dateneingangswert: Zuordnung, aus welcher Quelle der Wert ausgelesen werden soll // Beispiel für Dateneingangswert: Zuordnung, aus welcher Quelle der Wert ausgelesen werden soll
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment