discret 0.6.2

A backend to create peer to peer (P2P) applications, using a GraphQL inspired syntax
Documentation
/*
    deletion delete{

    //remove a references in the parent field
    person {
    $id,
    parent: [$sid2, $id3]
    }

    //remove person
    person{
    $sid
    }
    }
*/
WHITESPACE = _{ " " | "\t" | "\r" | "\n" }
COMMENT    = _{ "//" ~ (!NEWLINE ~ ANY)* ~ NEWLINE }

identifier       = @{ (LETTER | NUMBER | "_")+ }
namespace_entity = @{ (LETTER | NUMBER | "_" | ".")+ }

variable      = @{ "$" ~ identifier }
entity_name   =  { namespace_entity ~ (":" ~ namespace_entity)? }
deletion      =  { SOI ~ deletion_name ~ "{" ~ entity+ ~ "}" ~ EOI }
deletion_name =  { "delete" ~ (identifier)? }
entity        =  { entity_name ~ "{" ~ id_field ~ array_field* ~ "}" }

id_field = { variable }

array_field = { identifier ~ "[" ~ variable ~ ("," ~ variable)* ~ ","? ~ "]" }