Select Git revision
CONTRIBUTING.md
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