Skip to content

Error in use of polyId in the 1.10 grammar

ID0002212: This issue was created automatically from Mantis Issue 2212. Further discussion may take place here.


Id Project Category View Due Date Updated
ID0002212 Frama-C Documentation > ACSL public 2016-02-25 2016-07-22
Reporter dcok@grammatech.com Assigned To patrick Resolution won't fix
Priority normal Severity major Reproducibility always
Platform - OS - OS Version -
Product Version Frama-C Magnesium Target Version - Fixed in Version -

Description :

The 1.10 ACSL grammar defines a poly-id as a combination of a simple id, optional label-binders and optional type-var-binders. This is correct for the many places that a poly-id is used as part of a declaration. However, poly-id is also used as a term - either as a standalone variable or as the function name in a function application. Here it is a use of the identifier, so the contents of the type list are type expressions (as in Fig. 2.12), not type variable binders. Similarly the labels are instances of labels (including label literals such as Here), and not binders. (The comment about binders also applies to the predicate application production in Fig. 2.2). Something like a poly-id-use is needed:

poly-id-use ::= id ( { label-use ( , label-use )* } )? ( < type-expr (, type-expr )* > )?

where label-use ::= id | label-literal

label-literal ::= Here | Pre | ...

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information