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

Merge branch 'master' into update-preprocessor

parents d8f2734a 08e6ea11
No related branches found
No related tags found
1 merge request!1update preprocessor
Pipeline #7384 passed
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 {
eq Program.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) ---
syn boolean Component.isTypeComponent() = false;
eq TypeComponent.isTypeComponent() = true;
......
package org.jastadd.relast2uml.compiler;
import beaver.Parser;
import org.jastadd.relast2uml.ast.ErrorMessage;
import org.jastadd.relast2uml.ast.GrammarFile;
import org.jastadd.relast2uml.ast.Program;
import org.jastadd.relast2uml.ast.Relast2Uml;
import org.jastadd.relast2uml.ast.*;
import org.jastadd.relast2uml.compiler.options.CommandLine;
import org.jastadd.relast2uml.compiler.options.FlagOption;
import org.jastadd.relast2uml.compiler.options.Option;
......@@ -25,6 +22,7 @@ public class Compiler {
private StringOption optionOutputFile;
private StringOption optionInputRelast2Uml;
private FlagOption optionDefaultFolders;
private FlagOption optionHelp;
private FlagOption optionVersion;
private FlagOption optionVerbose;
......@@ -165,6 +163,8 @@ public class Compiler {
"output", "target file to be generated.", "uml.md").makeOptional());
optionInputRelast2Uml = addOption(new StringOption(
"inputRelast2Uml", "relast2uml definition file.").makeOptional());
optionDefaultFolders = addOption(new FlagOption(
"defaultFolders", "Creates a default folder per grammar file."));
optionHelp = addOption(new FlagOption(
"help", "Print usage and exit."));
optionVersion = addOption(new FlagOption(
......@@ -193,7 +193,6 @@ public class Compiler {
inputGrammar.dumpTree(System.out);
}
program.addGrammarFile(inputGrammar);
inputGrammar.treeResolveAll();
inputGrammar.setFileName(inputGrammarFileName);
} catch (IOException | Parser.Exception e) {
throw new CompilerException("Could not parse grammar file " + inputGrammarFileName, e);
......@@ -217,6 +216,11 @@ public class Compiler {
}
relast2Uml.setProgram(program);
relast2Uml.treeResolveAll();
if (optionDefaultFolders.isSet()) {
for (GrammarFile grammarFile : program.getGrammarFileList()) {
relast2Uml.addFolder(grammarFile.defaultFolder());
}
}
return relast2Uml;
}
......
{{=<% %>=}}<%#isAbstract%>abstract <%/isAbstract%>class <%name%><%#InnerTokenComponents%><%#first%> {<%/first%>
{{=<% %>=}}<%#isAbstract%>abstract <%/isAbstract%>class <%name%><%#InnerTokenComponents%><%#first%> {
<%/first%>
<%name%>
<%#last%>}<%/last%>
<%/InnerTokenComponents%><%={{ }}=%>
<%#last%>
}<%/last%><%/InnerTokenComponents%><%={{ }}=%>
......@@ -35,6 +35,7 @@ public class CompilerTest {
String[] args = {
"--output=" + output,
"--inputRelast2Uml=" + inputRelast2Uml,
"--defaultFolders",
inputGrammar
};
......
......@@ -11,7 +11,7 @@ Funktionsprinzip ::= Dateneingangswert* Verarbeitungsschritt* Datenausgangswert*
abstract Datenquelle;
// 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
// 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