develop #19

Merged
cromer merged 6 commits from develop into master 2023-02-28 22:17:52 -03:00
6 changed files with 36 additions and 8 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
builddir builddir
*.kb *.kb
*.obk *.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', project('obelisk',
'c', 'c',
'cpp', 'cpp',
version : '1.0.0', version : '1.0.1',
license : 'BSD-3-Clause', license : 'BSD-3-Clause',
default_options : [ default_options : [
'warning_level=3', 'warning_level=3',

View File

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

View File

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