Skip to content
Snippets Groups Projects
Select Git revision
  • 170ef8ceae611feb1fa862d448f1ab65f709e2a7
  • master default protected
2 results

CONTRIBUTING.md

Blame
  • After you've reviewed these contribution guidelines, you'll be all set to contribute to this project.
    RelAstGrammar.bnf 2.03 KiB
    {
      parserClass="org.jastadd.tooling.parser.RelAstGrammarParser"
    
      extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
    
      psiClassPrefix="RelAstGrammar"
      psiImplClassSuffix="Impl"
      psiPackage="org.jastadd.tooling.psi"
      psiImplPackage="org.jastadd.tooling.psi.impl"
    
      elementTypeHolderClass="org.jastadd.tooling.parser.RelAstGrammarTypes"
      elementTypeClass="org.jastadd.tooling.parser.RelAstGrammarElementType"
      tokenTypeClass="org.jastadd.tooling.parser.RelAstGrammarTokenType"
    
      psiImplUtilClass="org.jastadd.tooling.psi.impl.RelAstGrammarPsiImplUtil"
    }
    
    relAstGrammarFile ::= comment* ((type_decl | relation) comment*)*
    
    comment ::= (WHITESPACE | MULTILINECOMMENT | DOCCOMMENT | SINGLELINECOMMENT)
    
    type_decl ::= ABSTRACT? declared_name (COL type_reference)? (ASSIGN (component | nta_component)*)? SCOL
    {
      mixin="org.jastadd.tooling.psi.impl.RelAstGrammarNamedElementImpl"
      implements="org.jastadd.tooling.psi.RelAstGrammarNamedElement"
      methods=[getName setName getNameIdentifier]
    }
    
    nta_component ::= SLASH component SLASH
    
    component ::= (declared_name COL type_reference STAR?) | (type_reference STAR?) | (LBRACKET declared_name COL type_reference RBRACKET) | (LBRACKET type_reference RBRACKET) | (LT declared_name (COL (java_type_use))? GT)
    
    java_type_use ::=  parameterized_java_type_use | simple_java_type_use
    
    parameterized_java_type_use ::= simple_java_type_use LT java_type_use (COMMA java_type_use)* GT
    
    simple_java_type_use ::=  java_name (DOT java_name)*
    
    relation ::=  REL ((unnamed_role LEFT navigable_role) | (navigable_role RIGHT unnamed_role) | (navigable_role BIDIRECTIONAL navigable_role)) SCOL
    
    unnamed_role ::= type_reference | navigable_role
    
    navigable_role ::= type_reference DOT declared_name (STAR | QUESTION_MARK)?
    
    // for auto-completion, it is helpful if we can distinguish the different IDs
    declared_name ::= ID
    type_reference ::= ID
    {
      mixin="org.jastadd.tooling.psi.impl.RelAstGrammarNamedElementImpl"
      implements="org.jastadd.tooling.psi.RelAstGrammarNamedElement"
      methods=[getName setName getNameIdentifier]
    }
    
    java_name ::= ID