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

project.properties

Blame
  • Grammar.bnf 2.08 KiB
    {
      parserClass="org.jastadd.tooling.grammar.parser.GrammarParser"
    
      extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
    
      psiClassPrefix="Grammar"
      psiImplClassSuffix="Impl"
      psiPackage="org.jastadd.tooling.grammar.psi"
      psiImplPackage="org.jastadd.tooling.grammar.psi.impl"
    
      elementTypeHolderClass="org.jastadd.tooling.grammar.parser.GrammarTypes"
      elementTypeClass="org.jastadd.tooling.grammar.psi.GrammarElementType"
      tokenTypeClass="org.jastadd.tooling.grammar.psi.GrammarTokenType"
    
      psiImplUtilClass="org.jastadd.tooling.grammar.psi.impl.GrammarPsiImplUtil"
    }
    
    GrammarFile ::= comment* ((type_decl | relation) comment*)*
    
    comment ::= (WHITESPACE | MULTILINECOMMENT | DOCCOMMENT | SINGLELINECOMMENT)
    
    type_decl ::= ABSTRACT? type_name (COL type_name)? (ASSIGN (component | nta_component)*)? SCOL
    {
      extends="org.jastadd.tooling.grammar.psi.impl.GrammarTypeDeclImplExtension"
      implements="org.jastadd.tooling.common.psi.NamedElement"
    }
    
    nta_component ::= SLASH component SLASH
    
    component ::= (component_name COL type_name STAR?) | (type_name STAR?) | (LBRACKET component_name COL type_name RBRACKET) | (LBRACKET type_name RBRACKET) | (LT component_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_name | navigable_role
    
    navigable_role ::= type_name DOT component_name (STAR | QUESTION_MARK)?
    
    //// for auto-completion, it is helpful if we can distinguish the different IDs
    //type_name ::= ID
    
    type_name ::= ID
    {
      extends="org.jastadd.tooling.grammar.psi.impl.GrammarTypeNameImplExtension"
      implements="org.jastadd.tooling.common.psi.NamedElement"
    }
    
    component_name ::= ID
    {
      extends="org.jastadd.tooling.grammar.psi.impl.GrammarComponentNameImplExtension"
      implements="org.jastadd.tooling.common.psi.NamedElement"
    }
    
    
    java_name ::= ID