As Sea is based on C and Python, most of Sea's grammar is based directly on C. Specifically, I utilized Microsoft's C Language Syntax Summary to construct this document.
token:
keyword
identifier
constant
string-literal
operator
punctuator
primary-expression:
identifier
constant
string-literal
( expression )
postfix-expression:
primary-expression
postfix-expression [ expression ]
postfix-expression ( argument-expression-list )
postfix-expression . identifier
postfix-expression -> identifier
postfix-expression ++
postfix-expression --
argument-expression-list:
assignment-expression
argument-expression-list , assignment-expression
prefix-deviation-expression:
postfix-expression
++ prefix-deviation-expression
-- prefix-deviation-expression
exponential-expression:
prefix-deviation-expression
prefix-deviation-expression ** cast-expression
unary-expression:
exponential-expression
unary-operator cast-expression
size of unary-expression
unary-operator: one of & * + - ~
cast-expression:
unary-expression
type-name ( cast-expression )
multiplicative-expression:
cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
multiplicative-expression % cast-expression
additive-expression:
multiplicative-expression
additive-expression + multiplicative-expression
additive-expression - multiplicative-expression
shift-expression:
additive-expression
shift-expression << additive-expression
shift-expression >> additive-expression
bitwise-and-expression:
shift-expression
bitwise-and-expression & shift-expression
bitwise-xor-expression:
bitwise-and-expression
bitwise-xor-expression ^ bitwise-and-expression
bitwise-or-expression:
bitwise-xor-expression
bitwise-or-expression | bitwise-xor-expression
comparative-expression:
bitwise-or-expression
comparative-expression comparative-opertor bitwise-or-expression
comparative-operator: one of < > <= >= == !=
logical-not-expression:
comparative-expression
not logical-not-expression
logical-and-expression:
logical-not-expression
logical-and-expression and logical-not-expression
logical-or-expression:
logical-and-expression
logical-or-expression or logical-and-expression
conditional-expression:
logical-or-expression
logical-or-expression if expression else conditional-expression
assignment-expression:
conditional-expression
conditional-expression assignment-operator assignment-expression
assignment-operator: one of = += -= *= /= %= **= <<= >>= &= ^= |=
expression:
assignment-expression
expression , assignment-expression
constant-expression
conditional-expression