Difference between revisions of "Language Reference/Constants"

From wiki.visual-prolog.com
m (Example Template)
(TypeExpression)
 
Line 14: Line 14:
<vipbnf><ConstantDefinition>: one of
<vipbnf><ConstantDefinition>: one of
     <ConstantName> = <ConstantValue>
     <ConstantName> = <ConstantValue>
     <ConstantName> : <TypeName> = <ConstantValue></vipbnf>
     <ConstantName> : <TypeExpression> = <ConstantValue></vipbnf>


<vipbnf><ConstantName>:
<vipbnf><ConstantName>:
Line 21: Line 21:
The <vpbnf><ConstantValue></vpbnf> should be an expression, which can be evaluated at compile time and it should have the type of the correspondent domain. The <vpbnf><ConstantName></vpbnf> should be a {{lang2|Lexical_Elements|Identifiers|lower case identifier}}.
The <vpbnf><ConstantValue></vpbnf> should be an expression, which can be evaluated at compile time and it should have the type of the correspondent domain. The <vpbnf><ConstantName></vpbnf> should be a {{lang2|Lexical_Elements|Identifiers|lower case identifier}}.


The {{lang2|Domains|Type_Names|TypeName}} can be omitted only for the following built-in domains:
The {{lang2|Domains|Type_Expressions|TypeExpression}} can be omitted only for the following built-in domains:


#Numerical (i.e. integral or real) constants. In this case, the corresponding anonymous numerical domain is adopted for a constant (see the {{lang2|Domains|Integral_Domains|numerical domains}} for details).
#Numerical (i.e. integral or real) constants. In this case, the corresponding anonymous numerical domain is adopted for a constant (see the {{lang2|Domains|Integral_Domains|numerical domains}} for details).

Latest revision as of 15:13, 2 May 2017

Constants Sections

A constants section defines a set of constants in the current scope.

ConstantsSection :
    constants ConstantDefinition-dot-term-list-opt

Constant Definitions

A constant definition defines a named constant, its type, and its value.

ConstantDefinition: one of
    ConstantName = ConstantValue
    ConstantName : TypeExpression = ConstantValue
ConstantName:
    LowerCaseIdentifier

The ConstantValue should be an expression, which can be evaluated at compile time and it should have the type of the correspondent domain. The ConstantName should be a lower case identifier.

The TypeExpression can be omitted only for the following built-in domains:

  1. Numerical (i.e. integral or real) constants. In this case, the corresponding anonymous numerical domain is adopted for a constant (see the numerical domains for details).
  2. Binary constants.
  3. String constants.
  4. Character constants.
Example
constants
    my_char = 'a'.
    true_const : boolean = true.
    binaryFileName = "mybin".
    myBinary = #bininclude(binaryFileName).