diff --git a/.gitignore b/.gitignore index 2a371bb..c1eefad 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ builddir *.kb *.obk +!examples/*.obk diff --git a/examples/multi-fact.obk b/examples/multi-fact.obk new file mode 100644 index 0000000..aa86e07 --- /dev/null +++ b/examples/multi-fact.obk @@ -0,0 +1,2 @@ +# this is a comment +fact("chris cromer" and "martin" and "Isabella" can "program" and "speak english"); diff --git a/examples/obelisk.obk b/examples/obelisk.obk new file mode 100644 index 0000000..39dda3f --- /dev/null +++ b/examples/obelisk.obk @@ -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"); diff --git a/meson.build b/meson.build index ccf1892..0bae484 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project('obelisk', 'c', 'cpp', - version : '1.0.0', + version : '1.0.1', license : 'BSD-3-Clause', default_options : [ 'warning_level=3', diff --git a/src/lexer.cpp b/src/lexer.cpp index 91eb20d..f0c50b1 100644 --- a/src/lexer.cpp +++ b/src/lexer.cpp @@ -56,10 +56,10 @@ int obelisk::Lexer::getToken() if (getIdentifier() == "extern") { - return kTokenExtern; + return Token::kTokenExtern; } - return kTokenIdentifier; + return Token::kTokenIdentifier; } if (isdigit(lastChar)) diff --git a/src/lexer.h b/src/lexer.h index 4562611..19a5c3a 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -80,23 +80,27 @@ namespace obelisk * @brief A fact which is a relationship between 2 entities. * */ - kTokenFact = -2, + kTokenFact = -2, + /** * @brief A rule which is a relationship between a new fact a * existing fact. * */ - kTokenRule = -3, + kTokenRule = -3, + /** * @brief An action to take if a fact is true. * */ kTokenAction = -4, + /** * @brief A definition of a new function. * */ - kTokenDef = -5, + kTokenDef = -5, + /** * @brief An external function that will be linked to. * @@ -108,16 +112,18 @@ namespace obelisk * */ kTokenIdentifier = -7, + /** * @brief A double floating point value. * */ - kTokenNumber = -8, + kTokenNumber = -8, + /** * @brief A string. * */ - kTokenString = -9 + kTokenString = -9 }; /**