NLP++ data types are shown in the following table.
Numeric overflow and underflow are not flagged. For example, the maximum int is 2147483647 in Windows and must be checked by the programmer as needed. For large numbers, the float type should be used.
NAME |
ABBREVIATION |
CHARACTERISTICS |
STR |
Sequence of characters: e.g., G("name") = "w3c"; | |
INT |
32-bit integers: e.g., G("num") = 32776; | |
FLOAT |
32-bit floating point numbers: e.g., G("flt") = 123.456; | |
BOOL |
1 or 0. (Boolean implemented as a numeric nonzero for true and the numeric 0 for false.) | |
OSTREAM |
Output stream. G(filename) << expr; prints by referring to the ostream value of G(filename). See the openfile NLP++ function. | |
CON |
Concepts are the main object in the knowledge base. They have string names, and optionally have one or more attributes. e.g. G("myConcept") = makeconcept(G("root"),"My Name"); | |
ATTR |
Attributes are associated with concepts and KB nodes. They have string names, and optionally have one or more values. e.g. G("myAttribute") = addattr(G("myConcept"),"is"); | |
VAL |
Values are the values of KB attributes. They can be strings, numerics, or concepts: e.g. addconval(G("myConcept"), "is", "John Smith"); | |
PHR |
A phrase is a sequence of nodes owned by a single concept. E.g., create the first node of a phrase: G("USPhrase") = makephrase(G("US"),"United"); Add the last node of the phrase: addcnode(G("US"), "States"); | |
NODE |
Node in the KB. Differs from a concept in that it is not in the KB hierarchy, but rather in a concept's phrase. A node serves as a "proxy" or "instance" of a concept. | |
ARRAY |
The values of an array, or multi-valued variable, can be any simple values. Note that nested ARRAY types are not currently supported. | |
PNODE |
Parse tree node. Unrelated to a KB node. |
NLP++ can also reference the nodes of a parse tree directly. For example, N(2) refers to the (first) node that matched the 2nd element of a rule's right-hand-side phrase. X(3) refers to the 3rd node in the current context path as specified by @PATH. These constructs are used in functions that deal with the parse tree. For more information on parse tree functions, see Parse Tree Functions.
Note: Knowledge base nodes are unrelated to parse tree nodes. The former are called NODE and the latter PNODE. |
See Special Node References for more on referencing parse tree nodes.
Arrays can consist of combinations of simple types. Nested array types are not implemented. An example follows.
# Create an array and step through it.
G("counter") = 0;
G("array_size") = 10;
# Arrays can optionally be "declared" by padding them with 0.
G("int_array")[G("array_size") - 1] = 0;
while ( G("counter") < G("array_size") ) {
G("int_array")[G("counter")] = G("counter");
"output.txt" << G("int_array")[G("counter")] << "\n";
G("counter") ++;
}
# print it out all at once
"output.txt" << G("int_array") << "\n";.
# copy it all at once:
G("another_array") = G("int_array");