21 Commits
1.0.0 ... 1.0.2

Author SHA1 Message Date
bdc69ceea7 Merge pull request 'develop' (#23) from develop into master
Reviewed-on: #23
2023-03-05 23:06:26 -03:00
5f9af90e80 Merge branch 'master' into develop 2023-03-05 23:06:20 -03:00
4d7ecf8258 Merge pull request 'feature/fix_recursive_rules' (#22) from feature/fix_recursive_rules into develop
Reviewed-on: #22
2023-03-05 23:06:02 -03:00
04902214b7 prepare 1.0.2 2023-03-05 23:05:18 -03:00
0bfd93150f update facts and rules recursively 2023-03-05 23:04:17 -03:00
96a5f25e02 Merge pull request 'develop' (#21) from develop into master
Reviewed-on: #21
2023-03-05 22:20:21 -03:00
d4c4d3fe75 Merge pull request 'typo' (#20) from typo into develop
Reviewed-on: #20
2023-03-05 22:19:56 -03:00
33808b4906 fix typo 2023-03-05 22:18:52 -03:00
44262df885 Merge pull request 'develop' (#19) from develop into master
Reviewed-on: #19
2023-02-28 22:17:52 -03:00
5db2343b23 Merge branch 'master' into develop 2023-02-28 22:17:45 -03:00
a07b94a228 Merge pull request 'feature/finishing_touches' (#18) from feature/finishing_touches into develop
Reviewed-on: #18
2023-02-28 22:17:19 -03:00
7e3cd0af75 prepare 1.0.1 2023-02-28 22:15:55 -03:00
97a91a0d6d add 2 examples 2023-02-28 22:15:01 -03:00
a91bc9b579 enable example files to be commited 2023-02-28 22:14:51 -03:00
f2108492b8 make it clearer what is being returned 2023-02-28 22:11:48 -03:00
6a922e7464 Merge pull request 'restructure the includes to work in external programs' (#17) from develop into master
Reviewed-on: #17
2023-02-26 02:04:58 -03:00
69ce8faad7 Merge branch 'master' into develop 2023-02-26 02:04:52 -03:00
6ba11f1cc9 restructure the includes to work in external programs 2023-02-26 02:04:07 -03:00
cf9b5a02e1 Merge pull request 'build a static obelisk library for easier linking with other software' (#16) from develop into master
Reviewed-on: #16
2023-02-25 21:29:52 -03:00
60b920bc86 Merge branch 'master' into develop 2023-02-25 21:29:23 -03:00
402862b54a build a static obelisk library for easier linking with other software 2023-02-25 21:27:32 -03:00
19 changed files with 258205 additions and 13 deletions

1
.gitignore vendored
View File

@@ -3,3 +3,4 @@
builddir
*.kb
*.obk
!examples/*.obk

2
examples/multi-fact.obk Normal file
View File

@@ -0,0 +1,2 @@
# this is a comment
fact("chris cromer" and "martin" and "Isabella" can "program" and "speak english");

19
examples/obelisk.obk Normal file
View File

@@ -0,0 +1,19 @@
// an incomplete rule, this one stays false
rule("chris" is "happy" if "chris" plays "playstation");
// a rule that gets inserted as true right away
fact("this" is "madness");
rule("this" is "sparta" if "this" is "madness");
// a rule that is inserted as false then updated at a later stage
rule("bruce" is "batman" if "the waynes" are "dead");
fact("the waynes" are "dead");
// an action that will be false because the fact doesn't exist, should return ignore
action(if "tom" is "dangerous" then "avoid" else "ignore");
// an action that will be true, should return die
action(if "this" is "sparta" then "die" else "live");
fact("what" is "love");
rule("baby" dont "hurt me" if "what" is "love");

View File

@@ -1,7 +1,7 @@
project('obelisk',
'c',
'cpp',
version : '1.0.0',
version : '1.0.2',
license : 'BSD-3-Clause',
default_options : [
'warning_level=3',
@@ -30,4 +30,5 @@ if docs_enabled
endif
endif
subdir('sqlite')
subdir('src')

20
sqlite/meson.build Normal file
View File

@@ -0,0 +1,20 @@
sqlite_sources = files(
'sqlite3.c'
)
sqlite_include_directories = include_directories(['.'])
sqlite_args = [
'-DSQLITE_OMIT_DESERIALIZE',
'-DSQLITE_OMIT_DEPRECATED',
'-DSQLITE_OMIT_JSON',
'-DSQLITE_OMIT_LOAD_EXTENSION',
'-DSQLITE_OMIT_PROGRESS_CALLBACK',
'-DSQLITE_DEFAULT_FOREIGN_KEYS=1',
'-DSQLITE_DEFAULT_AUTOVACUUM=1',
'-DSQLITE_DISABLE_LFS',
'-DSQLITE_OMIT_TEMPDB',
'-DSQLITE_OMIT_GET_TABLE',
'-DSQLITE_OMIT_COMPLETE',
'-DSQLITE_OMIT_COMPILEOPTION_DIAGS'
]

245165
sqlite/sqlite3.c Normal file

File diff suppressed because it is too large Load Diff

12970
sqlite/sqlite3.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -56,10 +56,10 @@ int obelisk::Lexer::getToken()
if (getIdentifier() == "extern")
{
return kTokenExtern;
return Token::kTokenExtern;
}
return kTokenIdentifier;
return Token::kTokenIdentifier;
}
if (isdigit(lastChar))

View File

@@ -81,22 +81,26 @@ namespace obelisk
*
*/
kTokenFact = -2,
/**
* @brief A rule which is a relationship between a new fact a
* existing fact.
*
*/
kTokenRule = -3,
/**
* @brief An action to take if a fact is true.
*
*/
kTokenAction = -4,
/**
* @brief A definition of a new function.
*
*/
kTokenDef = -5,
/**
* @brief An external function that will be linked to.
*
@@ -108,11 +112,13 @@ namespace obelisk
*
*/
kTokenIdentifier = -7,
/**
* @brief A double floating point value.
*
*/
kTokenNumber = -8,
/**
* @brief A string.
*

View File

@@ -250,6 +250,7 @@ void obelisk::KnowledgeBase::checkRule(obelisk::Fact& fact)
auto updateFact = rule.getFact();
updateFact.setIsTrue(1.0);
updateFact.updateIsTrue(dbConnection_);
checkRule(updateFact);
}
}
}

View File

@@ -16,14 +16,21 @@ obelisk_lib_sources = files(
)
obelisk_lib_sources += obelisk_model_sources
sqlite3 = dependency('sqlite3')
obelisk_lib_sources += sqlite_sources
incdirs = include_directories(['.', 'include'])
lib = library('obelisk',
lib = static_library('obelisk',
obelisk_lib_sources,
c_args : sqlite_args,
include_directories: [incdirs, sqlite_include_directories],
install : true
)
shared_library('obelisk',
obelisk_lib_sources,
c_args : sqlite_args,
include_directories: incdirs,
dependencies : [sqlite3],
version : meson.project_version(),
soversion : project_version_lib,
install : true

View File

@@ -15,7 +15,7 @@ namespace obelisk
*
*/
std::string usageMessage = R"(Usage: obelisk [OPTION]... [FILE]...
Compile the obelisk source FILE(s) into knoweldge base and library.
Compile the obelisk source FILE(s) into knowledge base and library.
Options:
-h, --help shows this help/usage message