The syntax of DTPL have been described in this document using the EBNF form. For more information on the EBNF form, the reader can refer to this link:
dtPatternExp = wholePatternPropertiesDefExp, wholeDependenciesDefExp;
wholePatternPropertiesDefExp = (patternPropertiesDefExp)+ ;
wholeDependenciesDefExp = (dependenciesDefExp)+ ;
patternPropertiesDefExp = "#", propertyNameExp, "=", propertyValueExp, "#";
dependenciesDefExp = dependencyExp, "(", nodeExp, ",", nodeExp, ");";
propertyNameExp = numAlphString;
propertyValueExp = (nonTerminalSymbol | terminalSymbol)+ ;
nonTerminalSymbol = "<", numAlphString, ">";
dependencyExp = ["!"], numAlphString;
nodeExp = nodeValueExp, nodeIndexExp, nodePosTagsExp;
nodeValueExp = numAlphString;
nodeIndexExp = emptyString | ("-", numeralString);
nodePosTagsExp = "(", singleOrMultiPostagExp, ")";
singleOrMultiPostagExp = posTag, ("|" posTag)* ;
posTag = numAlphString;
numeralString = ("0-9")+;
numAlphString = ("a-z" | "A-Z" | "0-9" | "$" | "&" | ... )+;
emptyString = "";