From 4b562ff629d5181fc13bf33855cb5a798898d7be Mon Sep 17 00:00:00 2001 From: Vank143 <78201359+Vank143@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:30:23 +0200 Subject: [PATCH] Update lexer.c --- lexer.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lexer.c b/lexer.c index 92dc1f2..c6057b7 100644 --- a/lexer.c +++ b/lexer.c @@ -8,7 +8,8 @@ typedef struct Exploration Exploration; enum opcode { STRING, - AND + AND, + STAR }; struct Exploration { @@ -78,6 +79,13 @@ Node *mkAnd(Node *node1, Node *node2) return node; } +Node *mkStar(Node *child) +{ + Node *node= mkNode(STAR); + node->children[0]= child; + return node; +} + int execute(Node *node, Exploration *in) { @@ -107,6 +115,10 @@ int execute(Node *node, Exploration *in) return execute(node->children[1], in); } } + case STAR: { + //TODO + return 0; + } } printf("this cannot happen\n"); abort(); @@ -118,21 +130,22 @@ int main(int argc, char **argv) Exploration *in= mkExploration("aabbcc"); /*Node *program= - mkString("aabbcc");*/ + mkString("aabbcc"); Node *program= mkAnd(mkString("aab"), - mkString("bcc")); + mkString("bcc"));*/ - /*Node *program= + Node *program= mkAnd(mkString("aa"), mkAnd(mkString("bb"), - mkString("cc")); + mkString("cc"))); - Node *program= + /*Node *program= mkAnd(mkStar(mkString("a")), // "a"*"b"*"c"* mkAnd(mkStar(mkString("b")), mkStar(mkString("c")));*/ + if (execute(program, in)<=0) { printf("no match\n");