Skip to content
This repository was archived by the owner on Jul 9, 2022. It is now read-only.

Latest commit

 

History

History
145 lines (118 loc) · 3.85 KB

File metadata and controls

145 lines (118 loc) · 3.85 KB

Grammar

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.

Tokens

token:
    keyword
    identifier
    constant
    string-literal
    operator
    punctuator

Expressions

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