Skip to content
Snippets Groups Projects
Select Git revision
  • e7e762da4fba062b72290a4d9db525597d391b9f
  • dev default protected
  • main protected
  • feature/ros-java-integration
4 results

use_cases.md

Blame
  • AbstractGrammar.jadd 4.46 KiB
    aspect BackendAbstractGrammar {
    
      public static String ASTNode.listInterface = "java.util.List";
      public static String ASTNode.listClass = "java.util.ArrayList";
      public static String ASTNode.jastAddListType = "List";
      public static String ASTNode.jastAddOptType = "Opt";
    
      public String Program.generateAbstractGrammar() {
        StringBuilder sb = new StringBuilder();
        generateAbstractGrammar(sb);
        return sb.toString();
      }
    
      public void Program.generateAbstractGrammar(StringBuilder b) {
        for (GrammarFile file : getGrammarFileList()) {
          file.generateAbstractGrammar(b);
        }
      }
    
      public String GrammarFile.generateAbstractGrammar() {
        StringBuilder sb = new StringBuilder();
        generateAbstractGrammar(sb);
        return sb.toString();
      }
    
      public void Grammar.generateAbstractGrammar(StringBuilder b) {
        for (Declaration decl : getDeclarationList()) {
          decl.generateAbstractGrammar(b);
        }
      }
    
      abstract public void Declaration.generateAbstractGrammar(StringBuilder b);
    
      public void Comment.generateAbstractGrammar(StringBuilder b) {
        b.append(getText()).append("\n");
      }
    
      public void TypeDecl.generateAbstractGrammar(StringBuilder b) {
        if (getAbstract()) {
          b.append("abstract ");
        }
        b.append(getName()).append(" ");
        if (hasSuperType()) {
          b.append(": ").append(getSuperType().getName()).append(" ");
        }
        b.append("::=");
        for (Component component : getComponentList()) {
          b.append(" ");
          component.generateAbstractGrammar(b);
        }
        b.append(";\n");
      }
    
      public abstract void Component.generateAbstractGrammar(StringBuilder b);
    
      public void NormalComponent.generateAbstractGrammar(StringBuilder b) {
        if (getNTA()) {
          b.append("/");
        }
    
        if (!getName().equals("")) {
          b.append(getName()).append(":");
        }
        b.append(getTypeDecl().getName());
        if (getNTA()) {
          b.append("/");
        }
      }
    
      public void ListComponent.generateAbstractGrammar(StringBuilder b) {