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

Language Reference

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).