CRV Core Grammar Diagrams

=======================================================================

CRV Core Grammar — ISO/IEC 14977 compliant

=======================================================================

---------- Action selector ----------

action_request

acquire_tokenrelinquish_tokenrelate_agentrelate_other_agentsendorse_tokencoendorse_token_with_agentsexpose_signal_about_tokendeclare_cooccurrence_between_tokenspropose_peer_exchangeaccept_peer_exchangereject_peer_exchangesettle_peer_exchangepost_order_to_venuecancel_order_at_venuesettle_trade_from_venueswap_at_venuecast_vote_at_venuepublish_vote_outcome_from_venuegift_tokensend_chat_messagepublish_announcement
action_request = "acquire_token" | "relinquish_token" | "relate_agent" | "relate_other_agents" | "endorse_token" | "coendorse_token_with_agents" | "expose_signal_about_token" | "declare_cooccurrence_between_tokens" | "propose_peer_exchange" | "accept_peer_exchange" | "reject_peer_exchange" | "settle_peer_exchange" | "post_order_to_venue" | "cancel_order_at_venue" | "settle_trade_from_venue" | "swap_at_venue" | "cast_vote_at_venue" | "publish_vote_outcome_from_venue" | "gift_token" | "send_chat_message" | "publish_announcement" ;

---------- Action invocations ----------

acquire_token

acquire_token = "acquire_token" , "(" , agent_id , "," , token_id , [ "," , quantity ] , [ "," , mode ] , ")" ;

acquire_token is referencing:

relinquish_token

relinquish_token = "relinquish_token" , "(" , agent_id , "," , token_id , [ "," , quantity ] , ")" ;

relinquish_token is referencing:

relate_agent

relate_agent = "relate_agent" , "(" , source_agent_id , "," , target_agent_id , "," , relation_polarity , ")" ;

relate_agent is referencing:

relate_other_agents

relate_other_agents = "relate_other_agents" , "(" , speaker_agent_id , "," , subject_agent_id , "," , object_agent_id , "," , relation_polarity , ")" ;

relate_other_agents is referencing:

endorse_token

endorse_token = "endorse_token" , "(" , speaker_agent_id , "," , audience , "," , token_id , "," , endorsement_polarity , ")" ;

endorse_token is referencing:

coendorse_token_with_agents

coendorse_token_with_agents = "coendorse_token_with_agents" , "(" , speaker_agent_id , "," , audience , "," , agent_a_id , "," , agent_b_id , "," , token_id , "," , endorsement_polarity , ")" ;

coendorse_token_with_agents is referencing:

expose_signal_about_token

expose_signal_about_token = "expose_signal_about_token" , "(" , speaker_agent_id , "," , audience , "," , token_id , "," , signal_polarity , ")" ;

expose_signal_about_token is referencing:

declare_cooccurrence_between_tokens

declare_cooccurrence_between_tokens(letterletterdigit_Identtoken_a_id,Identtoken_b_id)
declare_cooccurrence_between_tokens = "declare_cooccurrence_between_tokens" , "(" , token_a_id , "," , token_b_id , ")" ;

declare_cooccurrence_between_tokens is referencing:

propose_peer_exchange

propose_peer_exchange = "propose_peer_exchange" , "(" , proposer_agent_id , "," , counterparty_agent_id , "," , give_map , "," , want_map , [ "," , price ] , [ "," , ttl ] , ")" ;

propose_peer_exchange is referencing:

accept_peer_exchange

accept_peer_exchange = "accept_peer_exchange" , "(" , counterparty_agent_id , "," , proposal_id , ")" ;

accept_peer_exchange is referencing:

reject_peer_exchange

reject_peer_exchange = "reject_peer_exchange" , "(" , counterparty_agent_id , "," , proposal_id , ")" ;

reject_peer_exchange is referencing:

settle_peer_exchange

settle_peer_exchange = "settle_peer_exchange" , "(" , proposal_id , "," , legs , ")" ;

settle_peer_exchange is referencing:

post_order_to_venue

post_order_to_venue = "post_order_to_venue" , "(" , agent_id , "," , venue_id , "," , token_id , "," , side , "," , quantity , "," , limit_price , "," , ttl , ")" ;

post_order_to_venue is referencing:

cancel_order_at_venue

cancel_order_at_venue = "cancel_order_at_venue" , "(" , agent_id , "," , venue_id , "," , order_id , ")" ;

cancel_order_at_venue is referencing:

settle_trade_from_venue

settle_trade_from_venue = "settle_trade_from_venue" , "(" , venue_id , "," , token_id , "," , price , "," , quantity , "," , taker_agent_id , "," , maker_agent_id , "," , side , ")" ;

settle_trade_from_venue is referencing:

swap_at_venue

swap_at_venue = "swap_at_venue" , "(" , agent_id , "," , venue_id , "," , input_token_id , "," , input_quantity , "," , output_token_id , "," , minimum_output_quantity , ")" ;

swap_at_venue is referencing:

cast_vote_at_venue

cast_vote_at_venue = "cast_vote_at_venue" , "(" , agent_id , "," , venue_id , "," , token_id , "," , stance_label , "," , stance_value , ")" ;

cast_vote_at_venue is referencing:

publish_vote_outcome_from_venue

publish_vote_outcome_from_venue = "publish_vote_outcome_from_venue" , "(" , venue_id , "," , token_id , "," , baseline_value , ")" ;

publish_vote_outcome_from_venue is referencing:

gift_token

gift_token = "gift_token" , "(" , from_agent_id , "," , to_agent_id , "," , token_id , "," , quantity , ")" ;

gift_token is referencing:

send_chat_message

send_chat_message = "send_chat_message" , "(" , sender_agent_id , "," , channel , "," , visibility , "," , utterance , ")" ;

send_chat_message is referencing:

publish_announcement

publish_announcement(letterletterdigit_Identsender_agent_id,Identchannel," any character except double-quote and backslash string_unescaped\\"\\ntescape_sequencestring_character"StringIdentpayload)
publish_announcement = "publish_announcement" , "(" , sender_agent_id , "," , channel , "," , payload , ")" ;

publish_announcement is referencing:

observation_envelope

observation_envelope = "observation_envelope" , "(" , actor_agent_id , "," , observer_agent_id , "," , channel , "," , visibility , "," , payload , "," , delivery_delay , ")" ;

observation_envelope is referencing:

representation_patch

representation_patch = "representation_patch" , "[" , [ patch_edit , { "," , patch_edit } ] , "]" ;

representation_patch is referencing:

patch_edit

set_identity_edge_weight(edge_kind,subject_id,object_id,new_weightadjust_identity_edge_weight(edge_kind,subject_id,object_id,delta_weightdecay_identity_edges(edge_kind,scope_selector,decay_lambdaremove_identity_edge(edge_kind,subject_id,object_id)
patch_edit = "set_identity_edge_weight" , "(" , edge_kind , "," , subject_id , [ "," , object_id ] , "," , new_weight , ")" | "adjust_identity_edge_weight" , "(" , edge_kind , "," , subject_id , [ "," , object_id ] , "," , delta_weight , ")" | "decay_identity_edges" , "(" , edge_kind , "," , scope_selector , "," , decay_lambda , ")" | "remove_identity_edge" , "(" , edge_kind , "," , subject_id , [ "," , object_id ] , ")" ;

Items referencing patch_edit:

patch_edit is referencing:

---------- Parameter nonterminals ----------

agent_id

agent_id = Ident ;

Items referencing agent_id:

agent_id is referencing:

from_agent_id

from_agent_id = Ident ;

Items referencing from_agent_id:

from_agent_id is referencing:

to_agent_id

to_agent_id = Ident ;

Items referencing to_agent_id:

to_agent_id is referencing:

source_agent_id

source_agent_id = Ident ;

Items referencing source_agent_id:

source_agent_id is referencing:

target_agent_id

target_agent_id = Ident ;

Items referencing target_agent_id:

target_agent_id is referencing:

speaker_agent_id

speaker_agent_id = Ident ;

Items referencing speaker_agent_id:

speaker_agent_id is referencing:

sender_agent_id

sender_agent_id = Ident ;

Items referencing sender_agent_id:

sender_agent_id is referencing:

subject_agent_id

subject_agent_id = Ident ;

Items referencing subject_agent_id:

subject_agent_id is referencing:

object_agent_id

object_agent_id = Ident ;

Items referencing object_agent_id:

object_agent_id is referencing:

agent_a_id

agent_a_id = Ident ;

Items referencing agent_a_id:

agent_a_id is referencing:

agent_b_id

agent_b_id = Ident ;

Items referencing agent_b_id:

agent_b_id is referencing:

counterparty_agent_id

counterparty_agent_id = Ident ;

Items referencing counterparty_agent_id:

counterparty_agent_id is referencing:

proposer_agent_id

proposer_agent_id = Ident ;

Items referencing proposer_agent_id:

proposer_agent_id is referencing:

taker_agent_id

taker_agent_id = Ident ;

Items referencing taker_agent_id:

taker_agent_id is referencing:

maker_agent_id

maker_agent_id = Ident ;

Items referencing maker_agent_id:

maker_agent_id is referencing:

actor_agent_id

actor_agent_id = Ident ;

Items referencing actor_agent_id:

actor_agent_id is referencing:

observer_agent_id

observer_agent_id = Ident ;

Items referencing observer_agent_id:

observer_agent_id is referencing:

proposal_id

proposal_id = Ident ;

Items referencing proposal_id:

proposal_id is referencing:

order_id

order_id = Ident ;

Items referencing order_id:

order_id is referencing:

venue_id

venue_id = Ident ;

Items referencing venue_id:

venue_id is referencing:

channel

channel = Ident ;

Items referencing channel:

channel is referencing:

visibility

visibility = Ident ;

Items referencing visibility:

visibility is referencing:

audience

audience = Ident ;

Items referencing audience:

audience is referencing:

token_id

token_id = Ident ;

Items referencing token_id:

token_id is referencing:

token_a_id

token_a_id = Ident ;

Items referencing token_a_id:

token_a_id is referencing:

token_b_id

token_b_id = Ident ;

Items referencing token_b_id:

token_b_id is referencing:

input_token_id

input_token_id = Ident ;

Items referencing input_token_id:

input_token_id is referencing:

output_token_id

output_token_id = Ident ;

Items referencing output_token_id:

output_token_id is referencing:

relation_polarity

relation_polarity = Ident ;

Items referencing relation_polarity:

relation_polarity is referencing:

endorsement_polarity

endorsement_polarity = Ident ;

Items referencing endorsement_polarity:

endorsement_polarity is referencing:

signal_polarity

signal_polarity = Ident ;

Items referencing signal_polarity:

signal_polarity is referencing:

stance_label

stance_label = Ident ;

Items referencing stance_label:

stance_label is referencing:

mode

mode = Ident ;

Items referencing mode:

mode is referencing:

side

side = Ident ;

Items referencing side:

side is referencing:

scope_selector

scope_selector = Ident ;

Items referencing scope_selector:

scope_selector is referencing:

legs

legs = Ident ;

Items referencing legs:

legs is referencing:

give_map

give_map = Ident ;

Items referencing give_map:

give_map is referencing:

want_map

want_map = Ident ;

Items referencing want_map:

want_map is referencing:

payload

payload = String | Ident ;

Items referencing payload:

payload is referencing:

utterance

utterance = String ;

Items referencing utterance:

utterance is referencing:

quantity

quantity = Number ;

Items referencing quantity:

quantity is referencing:

input_quantity

input_quantity = Number ;

Items referencing input_quantity:

input_quantity is referencing:

minimum_output_quantity

minimum_output_quantity = Number ;

Items referencing minimum_output_quantity:

minimum_output_quantity is referencing:

price

price = Number ;

Items referencing price:

price is referencing:

limit_price

limit_price = Number ;

Items referencing limit_price:

limit_price is referencing:

baseline_value

baseline_value = Number ;

Items referencing baseline_value:

baseline_value is referencing:

stance_value

stance_value = Number ;

Items referencing stance_value:

stance_value is referencing:

new_weight

new_weight = Number ;

Items referencing new_weight:

new_weight is referencing:

delta_weight

delta_weight = Number ;

Items referencing delta_weight:

delta_weight is referencing:

decay_lambda

decay_lambda = Number ;

Items referencing decay_lambda:

decay_lambda is referencing:

delivery_delay

delivery_delay = Number ;

Items referencing delivery_delay:

delivery_delay is referencing:

ttl

ttl = Number ;

Items referencing ttl:

ttl is referencing:

edge_kind

edge_kind = Ident ;

Items referencing edge_kind:

edge_kind is referencing:

subject_id

subject_id = Ident ;

Items referencing subject_id:

subject_id is referencing:

object_id

object_id = Ident ;

Items referencing object_id:

object_id is referencing:

---------- Lexical ----------

Ident

Ident = letter , { letter | digit | "_" } ;

Items referencing Ident:

Ident is referencing:

Number

Number = [ "-" ] , { digit }- , [ "." , { digit }- ] ;

Items referencing Number:

Number is referencing:

String

String = '"' , { string_character } , '"' ;

Items referencing String:

String is referencing:

string_character

string_character = string_unescaped | escape_sequence ;

Items referencing string_character:

string_character is referencing:

string_unescaped

any character except double-quote and backslash
string_unescaped = ? any character except double-quote and backslash ? ;

Items referencing string_unescaped:

escape_sequence

\\"\\nt
escape_sequence = "\\" , ( '"' | "\\" | "n" | "t" ) ;

Items referencing escape_sequence:

character

any Unicode scalar value
character = ? any Unicode scalar value ? ;

letter

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_
letter = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "_" ;

Items referencing letter:

digit

0123456789
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;

Items referencing digit: