Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
98 lines (87 sloc) 3.04 KB
module languages/ansi-c/syntax/Expressions
imports languages/ansi-c/syntax/Constants
imports languages/ansi-c/syntax/Identifiers
imports languages/ansi-c/syntax/Declarations
exports
sorts Expression
context-free syntax
Identifier -> Expression
HexadecimalConstant -> Expression {category("Constant")}
IntegerConstant -> Expression {category("Constant")}
CharacterConstant -> Expression {category("Constant")}
FloatingPointConstant -> Expression {category("Constant")}
StringConstant -> Expression {category("Constant")}
"(" Expression ")" -> Expression {bracket}
"sizeof" "(" TypeName ")" -> Expression
context-free restrictions
"&" -/- [\&]
"-" -/- [\-]
"+" -/- [\+]
context-free priorities
{
Expression "[" Expression "]" -> Expression
Expression "(" {Expression ","}* ")" -> Expression
Expression "." Identifier -> Expression
Expression "->" Identifier -> Expression
Expression "++" -> Expression
Expression "--" -> Expression
} <0>
>
{
"++" Expression -> Expression
"--" Expression -> Expression
"&" Expression -> Expression
"*" Expression -> Expression
"+" Expression -> Expression
"-" Expression -> Expression
"~" Expression -> Expression
"!" Expression -> Expression
"sizeof" Expression -> Expression
"(" TypeName ")" Expression -> Expression
}
> { left:
Expression "*" Expression -> Expression {left}
Expression "/" Expression -> Expression {left}
Expression "%" Expression -> Expression {left}}
> { left:
Expression "+" Expression -> Expression {left}
Expression "-" Expression -> Expression {left}}
> { left:
Expression "<<" Expression -> Expression {left}
Expression ">>" Expression -> Expression {left}}
> { left:
Expression "<" Expression -> Expression {left}
Expression ">" Expression -> Expression {left}
Expression "<=" Expression -> Expression {left}
Expression ">=" Expression -> Expression {left}
} >
{left:
Expression "==" Expression -> Expression {left}
Expression "!=" Expression -> Expression {left}
}
> Expression "&" Expression -> Expression {left}
> Expression "^" Expression -> Expression {left}
> Expression "|" Expression -> Expression {left}
> Expression "&&" Expression -> Expression {left}
> Expression "||" Expression -> Expression {left}
> Expression "?" Expression ":" Expression -> Expression {right}
<0,4> >
{right:
Expression "=" Expression -> Expression {right}
Expression "*=" Expression -> Expression {right}
Expression "/=" Expression -> Expression {right}
Expression "%=" Expression -> Expression {right}
Expression "+=" Expression -> Expression {right}
Expression "-=" Expression -> Expression {right}
Expression "<<=" Expression -> Expression {right}
Expression ">>=" Expression -> Expression {right}
Expression "&=" Expression -> Expression {right}
Expression "^=" Expression -> Expression {right}
Expression "|=" Expression -> Expression {right}
}
>
Expression "," Expression -> Expression {left}
context-free priorities
Expression "?" Expression ":" Expression -> Expression {right}
<0> >
Expression "?" Expression ":" Expression -> Expression