blob: 63ffd17cd1c2634c66e7aba3984abe4b2d718a29 [file] [log] [blame]
start: instruction*
instruction: load_xml|all_endpoint_rule|specific_endpoint_rule
load_xml: "load" ESCAPED_STRING ";"
all_endpoint_rule: "all" "endpoints" "{" (required_global_attribute|denylist_cluster_attribute)* "}"
specific_endpoint_rule: "endpoint" integer "{" (required_server_cluster|rejected_server_cluster)* "}"
required_global_attribute: "require" "global" "attribute" id "=" integer ";"
required_server_cluster: "require" "server" "cluster" id_or_number ";"
rejected_server_cluster: "reject" "server" "cluster" id_or_number ";"
// Allows deny like:
// deny cluster 234; // Deny an entire cluster
// deny cluster DescriptorCluster attribute 123; // attribute deny (mix name and number)
// deny cluster 11 attribute 22; // attribute deny
denylist_cluster_attribute: "deny" "cluster" id_or_number ["attribute" id_or_number] ";"
integer: positive_integer | negative_integer
?id_or_number: (id|positive_integer)
positive_integer: POSITIVE_INTEGER | HEX_INTEGER
negative_integer: "-" positive_integer
id: ID
POSITIVE_INTEGER: /\d+/
HEX_INTEGER: /0x[A-Fa-f0-9]+/
ID: /[a-zA-Z_][a-zA-Z0-9_]*/
%import common.ESCAPED_STRING
%import common.WS
%import common.C_COMMENT
%import common.CPP_COMMENT
%ignore WS
%ignore C_COMMENT
%ignore CPP_COMMENT