Skip to content

Instantly share code, notes, and snippets.

@pelevesque
Last active May 4, 2020 21:31
Show Gist options
  • Save pelevesque/f3bd7bb8a04dbf54caac49f8277a5af2 to your computer and use it in GitHub Desktop.
Save pelevesque/f3bd7bb8a04dbf54caac49f8277a5af2 to your computer and use it in GitHub Desktop.
<Orfeo_0.1.0> ::= <keyword_score> <ws>+ <music_expr>
<music_expr> ::= <left_curly_bracket> <ws>* (<voice_expr> (<ws>* <comma> <ws>* <voice_expr>)* (<ws>* <comma>)?)? <ws>* <right_curly_bracket>
<voice_expr_content> ::= <datum> | <voice_expr>
<voice_expr> ::= <left_parenthesis> <ws>* (<duration>? | ((<duration> <ws>+)? <voice_expr_content> (<ws+ <voice_expr_content>)*)) <ws>* <right_parenthesis>
<duration_sigil> ::= ':'
<duration_equal> ::= <duration_sigil> "="
<duration_nonnegative_int> ::= <duration_sigil> <nonnegative_int>
<duration_nonnegative_real> ::= <duration_sigil> <nonnegative_real>
<duration_time_signature> ::= <duration_sigil> <time_signature>
<duration> ::= <duration_time_signature> | <duration_nonnegative_real> | <duration_nonnegative_int> | <duration_equal>
<positive_int> ::= <nonzero_digit>+ <digit>*
<nonnegative_int> ::= <zero> | <positive_int>
<positive_real> ::= <positive_int> <period> <nonnegative_int> | <nonnegative_int> <period> <positive_int>
<nonnegative-real> ::= <zero> | <positive_real>
<time_signature> ::= (<nonnegativ_int> | <nonnegative_real>) <division> (<positive_int> | <positive_real>)
<datum_dots> ::= "."+
<datum_flags> ::= "^"+
<datum> ::= <datum_flags>? <datum_body> <datum_dots>?
<datum_body_strict> ::= <underscore | <alphanumeric> | <square_bracket> | <division> | "#" | "-"
<datum_body_loose> ::= <period> | <datum_body_strict>
<datum_body> ::= <datum_body_loose>* <datum_body_strict> | <string>
<char> ::= <lowercase_char> | <uppercase_char>
<digit> ::= <zero> | <nonzero_digit>
<alphanumeric> ::= <char> | <digit>
<square_bracket> ::= <left_square_bracket> | <right_square_bracket>
<string> ::= <double_quote> <any_char> <double_quote>
<double_quote> ::= "\""
<any_char> ::= [.*]
<keyword_score> ::= "score"
<ws> ::= " "
<hyphen> ::= "-"
<underscore> ::= "_"
<period> ::= "."
<comma> ::= ","
<colon> ::= ":"
<equal> ::= "="
<division> ::= "/"
<caret> ::= "^"
<left_parenthesis> ::= "("
<right_parenthesis> ::= ")"
<left_curly_bracket> ::= "{"
<right_curly_bracket> ::= "}"
<left_square_bracket> ::= "["
<right_square_bracket> ::= "]"
<lowercase_char> ::= [a-z]
<uppercase_char> ::= [a-Z]
<zero> ::= "0"
<nonzero_digit> ::= [1-9]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment