View Javadoc

1   /*
2    * #%L
3    * prolobjectlink-jpi
4    * %%
5    * Copyright (C) 2019 Prolobjectlink Project
6    * %%
7    * Permission is hereby granted, free of charge, to any person obtaining a copy
8    * of this software and associated documentation files (the "Software"), to deal
9    * in the Software without restriction, including without limitation the rights
10   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11   * copies of the Software, and to permit persons to whom the Software is
12   * furnished to do so, subject to the following conditions:
13   * 
14   * The above copyright notice and this permission notice shall be included in
15   * all copies or substantial portions of the Software.
16   * 
17   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23   * THE SOFTWARE.
24   * #L%
25   */
26  package io.github.prolobjectlink.prolog;
27  
28  /**
29   * <p>
30   * Represent the Prolog atom data type. Prolog atoms are can be of two kinds
31   * simple or complex. Simple atoms are defined like a single alpha numeric word
32   * that begin like initial lower case character. The complex atom are define
33   * like any character sequence that begin and end with simple quotes.
34   * </p>
35   * <p>
36   * The string passed to build a simple atoms should be match with
37   * [a-z][A-Za-z0-9_]* regular expression. If the string passed to build an atom
38   * don't match with the before mentioned regular expression the atom constructor
39   * can be capable of create a complex atom automatically.
40   * </p>
41   * <p>
42   * For complex atom the string value can have the quotes or just can be absent.
43   * The printed string representation of the complex atom implementation set the
44   * quotes if they are needed.
45   * </p>
46   * <p>
47   * The Prolog Provider is the mechanism to create a new Prolog atoms
48   * invoking {@link PrologProvider#newAtom(String)}.
49   * </p>
50   * <p>
51   * Two atoms are equals if and only if are atoms and have equals functor
52   * (value). Atoms terms unify only with same atoms or with free variable.
53   * </p>
54   * 
55   * @author Jose Zalacain
56   * @since 1.0
57   */
58  public interface PrologAtom extends PrologTerm {
59  
60  	/**
61  	 * String value for atom term.
62  	 * 
63  	 * @return value for atom term.
64  	 * @since 1.0
65  	 */
66  	public String getStringValue();
67  
68  	/**
69  	 * Set the string value for this atom instance. The string value should be match
70  	 * with [a-z][A-Za-z0-9_]* regular expression. If the string passed to build an
71  	 * atom don't match with the before mentioned regular expression the atom
72  	 * constructor can be capable of create a complex atom automatically.
73  	 * 
74  	 * @param value string value for this atom
75  	 * @since 1.0
76  	 */
77  	public void setStringValue(String value);
78  
79  }