Skip to content
Snippets Groups Projects
Commit 6ab782b3 authored by Basile Desloges's avatar Basile Desloges
Browse files

[eacsl] Update grammars to stay in the frames

parent 0c965003
No related branches found
No related tags found
No related merge requests found
\begin{syntax} \begin{syntax}
[ function-contract ] ::= requires-clause* [ function-contract ] ::= requires-clause* ;
{ decreases-clause? } simple-clause* { decreases-clause? } simple-clause* ;
named-behavior* completeness-clause* named-behavior* completeness-clause* ;
\ \
clause-kind ::= "check" | "admit" clause-kind ::= "check" | "admit"
\ \
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
\ \
{ decreases-clause } ::= { "decreases" term ("for" id)? ";" } { decreases-clause } ::= { "decreases" term ("for" id)? ";" }
\ \
[ simple-clause ] ::= { assigns-clause } | ensures-clause [ simple-clause ] ::= { assigns-clause } | ensures-clause ;
| { allocation-clause} | { abrupt-clause } | { allocation-clause} | { abrupt-clause }
\ \
{ assigns-clause } ::= { "assigns" locations ";" } { assigns-clause } ::= { "assigns" locations ";" }
...@@ -26,6 +26,6 @@ ...@@ -26,6 +26,6 @@
\ \
assumes-clause ::= "assumes" pred ";" assumes-clause ::= "assumes" pred ";"
\ \
completeness-clause ::= "complete" "behaviors" (id (","id)*)? ";" completeness-clause ::= "complete" "behaviors" (id (","id)*)? ";" ;
| "disjoint" "behaviors" (id (","id)*)? ";" | "disjoint" "behaviors" (id (","id)*)? ";"
\end{syntax} \end{syntax}
\begin{syntax} \begin{syntax}
declaration ::= C-declaration ; declaration ::= C-declaration ;
| {"/*@" "model" parameter ";" "*/"} ; model variable | {"/*@" "model" parameter ";" "*/"} ; \hspace{-7mm} model variable
| { "/*@" "model" C-type-name "{" parameter ";"? "}" ";" "*/" } ; model field | { "/*@" "model" C-type-name "{" parameter ";"? "}" ";" "*/" } ; model field
\end{syntax} \end{syntax}
...@@ -2,31 +2,31 @@ ...@@ -2,31 +2,31 @@
rel-op ::= "==" | "!=" | "<=" | ">=" | ">" | "<" rel-op ::= "==" | "!=" | "<=" | ">=" | ">" | "<"
\ \
pred ::= "\true" | "\false" ; pred ::= "\true" | "\false" ;
| term (rel-op term)+ ; comparisons | term (rel-op term)+ ; \hspace{-10mm} comparisons
| id "(" term ("," term)* ")" ; predicate application | id "(" term ("," term)* ")" ; \hspace{-10mm} predicate application
| "(" pred ")" ; parentheses | "(" pred ")" ; \hspace{-10mm} parentheses
| [ pred "&&" pred ] ; conjunction | [ pred "&&" pred ] ; \hspace{-10mm} conjunction
| [ pred "||" pred ] ; disjunction | [ pred "||" pred ] ; \hspace{-10mm} disjunction
| [ pred "==>" pred ] ; implication | [ pred "==>" pred ] ; \hspace{-10mm} implication
| pred "<==>" pred ; equivalence | pred "<==>" pred ; \hspace{-10mm} equivalence
| "!" pred ; negation | "!" pred ; \hspace{-10mm} negation
| [ { pred "^^" pred } ] ; exclusive or | [ { pred "^^" pred } ] ; \hspace{-10mm} exclusive or
| [ term "?" pred ":" pred ] ; ternary condition | [ term "?" pred ":" pred ] ; \hspace{-10mm} ternary condition
| [ pred "?" pred ":" pred ]; | [ pred "?" pred ":" pred ];
| "\let" id "=" term ";" pred ; local binding | "\let" id "=" term ";" pred ; \hspace{-10mm} local binding
| { "\let" id "=" pred ";" pred }; | { "\let" id "=" pred ";" pred };
| [ "\forall" binders ";" ] ; | [ "\forall" binders ";" ] ;
[ integer-guards "==>" pred ]; univ. integer quantification [ integer-guards "==>" pred ]; \hspace{-10mm} univ. integer quantification
| [ "\exists" binders ";" ]; | [ "\exists" binders ";" ];
[ integer-guards "&&" pred ] ; exist. integer quantification [ integer-guards "&&" pred ] ; \hspace{-10mm} exist. integer quantification
| [ { "\forall" binders ";" } ] ; | [ { "\forall" binders ";" } ] ;
[ { iterator-guard "==>" pred } ]; univ. iterator quantification [ { iterator-guard "==>" pred } ]; \hspace{-10mm} univ. iterator quantification
| [ { "\exists" binders ";" } ]; | [ { "\exists" binders ";" } ];
[ { iterator-guard "&&" pred } ] ; exist. iterator quantification [ { iterator-guard "&&" pred } ] ; \hspace{-10mm} exist. iterator quantification
| [ { "\forall" binders ";" pred } ]; univ. quantification | [ { "\forall" binders ";" pred } ]; \hspace{-10mm} univ. quantification
| [ { "\exists" binders ";" pred } ]; exist. quantification | [ { "\exists" binders ";" pred } ]; \hspace{-10mm} exist. quantification
| id ":" pred ; syntactic naming | id ":" pred ; \hspace{-10mm} syntactic naming
| string ":" pred ; syntactic naming | string ":" pred ; \hspace{-10mm} syntactic naming
\ \
[ integer-guards ] ::= [ interv ("&&" interv)* ] [ integer-guards ] ::= [ interv ("&&" interv)* ]
\ \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment