From 6052f7efee89006921b4ceb1182654526dd67f37 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Sun, 25 Oct 2020 13:23:34 +0200 Subject: Add genie project for the bison demo --- demo/bison/calc/genie.lua | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 demo/bison/calc/genie.lua diff --git a/demo/bison/calc/genie.lua b/demo/bison/calc/genie.lua new file mode 100644 index 0000000..62af249 --- /dev/null +++ b/demo/bison/calc/genie.lua @@ -0,0 +1,38 @@ +solution 'BisonDemos' + configurations {'debug', 'release'} + flags { + 'Cpp14', + 'Symbols', + } + configuration '*' + + local root = 'build/' + + + configuration 'debug' + targetdir(root .. 'bin/debug') + objdir(root .. 'obj/debug') + + configuration 'release' + targetdir(root .. 'bin/release') + objdir(root .. 'obj/release') + flags 'OptimizeSpeed' + configuration '*' + + project 'Calc' + kind 'ConsoleApp' + language 'C' + uuid(os.uuid('Calc')) + files { + 'lex.yy.c', + 'parser.tab.c', + } + project 'DebugCalc' + kind 'ConsoleApp' + language 'C' + uuid(os.uuid('DebugCalc')) + defines 'YYDEBUG=1' + files { + 'lex.yy.c', + 'parser.tab.c', + } -- cgit v1.3.1-23-gd82d From d8cfd3b88c7c2f3e8c3811379d56658660a41912 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Sun, 25 Oct 2020 13:24:22 +0200 Subject: Fix bison demo build --- demo/bison/calc/lex.yy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/bison/calc/lex.yy.c b/demo/bison/calc/lex.yy.c index 452fff5..8c0e8b8 100644 --- a/demo/bison/calc/lex.yy.c +++ b/demo/bison/calc/lex.yy.c @@ -1371,7 +1371,7 @@ static void yy_load_buffer_state (void) b->yy_bs_column = 0; } - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + b->yy_is_interactive = 0;//file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } -- cgit v1.3.1-23-gd82d From caa0952182984f866061a9e45cb55a06d3da5e87 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 26 Oct 2020 20:55:09 +0200 Subject: Make the parser debuggability optional --- demo/bison/calc/parser.tab.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/bison/calc/parser.tab.c b/demo/bison/calc/parser.tab.c index 2395da5..b3cfa78 100644 --- a/demo/bison/calc/parser.tab.c +++ b/demo/bison/calc/parser.tab.c @@ -67,7 +67,7 @@ #include int yylex(); int yyerror(const char* error); -#define YYDEBUG 1 + #line 73 "parser.tab.c" /* yacc.c:339 */ -- cgit v1.3.1-23-gd82d From 9c590f68332ec562285e3df2a99c18887e3bcde5 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 26 Oct 2020 21:02:16 +0200 Subject: Fix some errors in the vm_intro slides --- website/content/slides/05_vm_intro/_index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/content/slides/05_vm_intro/_index.md b/website/content/slides/05_vm_intro/_index.md index 5ee5e73..2879fa1 100644 --- a/website/content/slides/05_vm_intro/_index.md +++ b/website/content/slides/05_vm_intro/_index.md @@ -27,6 +27,7 @@ outputs: ["Reveal"] - Implement a computational model - Just like real machines AKA computers - run on top of the real machine +- you can have a hardware implementation of VM --- @@ -282,6 +283,7 @@ Instructions will be between 1 and 25 bytes. - 6 bits for OpCode - we have up to 64 opcodes - 2 bits - n - length of the arguments - 2^n bytes per agrument + - up to 3 arguments per instruction --- ### Instruction set @@ -297,7 +299,7 @@ https://docs.google.com/spreadsheets/d/1Q90x60BF-7T0jqPngScsjlaGBXXHRx4tszwCTSRY - 0 - count of arguments - -1 - first argument - -n - n-th argument -4. caller calls `ret reg`, which removes all locals and arguments and leaves +4. callee calls `ret reg`, which removes all locals and arguments and leaves `reg` on top of the stack 5. caller pops the result from the stack -- cgit v1.3.1-23-gd82d From 697b9b13964c1b47266a864c672c42a4a330e5a1 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 26 Oct 2020 21:02:38 +0200 Subject: Add timeline to the course contents --- website/content/post/contents.md | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/website/content/post/contents.md b/website/content/post/contents.md index 49140f7..a5fcc96 100644 --- a/website/content/post/contents.md +++ b/website/content/post/contents.md @@ -10,6 +10,8 @@ Table of contents for the course. +## Contents + 0. Course introduction - [slides]({{< ref "/slides/00_intro" >}}), [doc]({{< ref "/intro" >}}) @@ -19,10 +21,10 @@ Table of contents for the course. 0. Lexical analysis - [slides]({{< ref "/slides/02_lexical_analysis" >}}), [doc]({{< ref "/lexer" >}}) - + +## Timeline + + +| Week | Date | Topic | +|------|------------|--------| +| 1 | 06.10.2020 | Intro | +| 2 | 13.10.2020 | Lexers | +| 3 | 20.10.2020 | Parser | +| 4 | 27.10.2020 | Parser | +| 5 | 03.11.2020 | AST | +| 6 | 10.11.2020 | Bytecode | +| 7 | 17.11.2020 | Bytecode | +| 8 | 24.11.2020 | VM | +| 9 | 01.12.2020 | VM | +| 10 | 15.12.2020 | VM | +| 11 | 05.01.2021 | GC | +| 12 | 12.01.2021 | GC | +| 13 | 19.01.2021 | JIT | +| 14 | 26.01.2021 | JIT | +| 15 | 02.02.2021 | AOT | + -- cgit v1.3.1-23-gd82d From 2a27207cdb84ab512df53f4d369523dfffb52dd2 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 26 Oct 2020 21:08:33 +0200 Subject: Add parser generators post --- website/content/post/contents.md | 6 +++--- website/content/post/parser_generator.md | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 website/content/post/parser_generator.md diff --git a/website/content/post/contents.md b/website/content/post/contents.md index a5fcc96..a70e97d 100644 --- a/website/content/post/contents.md +++ b/website/content/post/contents.md @@ -24,10 +24,10 @@ Table of contents for the course. 0. Parsing - [slides]({{< ref "/slides/03_parsing" >}}), [doc]({{< ref "/parser" >}}) - + +[Slideshow]({{< ref "/slides/04_parser_generators" >}}) + +--- + +{{% readpost file="/slides/04_parser_generators/_index.md" markdown=true %}} -- cgit v1.3.1-23-gd82d From f74278927f1b55662a90676cd1b4ed99f2697aa0 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 26 Oct 2020 21:10:07 +0200 Subject: Fix post filename --- website/content/post/parser_generator.md | 17 ----------------- website/content/post/parser_generators.md | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 website/content/post/parser_generator.md create mode 100644 website/content/post/parser_generators.md diff --git a/website/content/post/parser_generator.md b/website/content/post/parser_generator.md deleted file mode 100644 index 4320dcc..0000000 --- a/website/content/post/parser_generator.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Parser Generators" -date: 2020-10-26 -draft: false ---- - -Overview of parsers generators and how to use them. - -This lecture will be entirely online - see the [Facebook group]({{< ref "/facebook" >}}) - - - -[Slideshow]({{< ref "/slides/04_parser_generators" >}}) - ---- - -{{% readpost file="/slides/04_parser_generators/_index.md" markdown=true %}} diff --git a/website/content/post/parser_generators.md b/website/content/post/parser_generators.md new file mode 100644 index 0000000..4320dcc --- /dev/null +++ b/website/content/post/parser_generators.md @@ -0,0 +1,17 @@ +--- +title: "Parser Generators" +date: 2020-10-26 +draft: false +--- + +Overview of parsers generators and how to use them. + +This lecture will be entirely online - see the [Facebook group]({{< ref "/facebook" >}}) + + + +[Slideshow]({{< ref "/slides/04_parser_generators" >}}) + +--- + +{{% readpost file="/slides/04_parser_generators/_index.md" markdown=true %}} -- cgit v1.3.1-23-gd82d From fd8ff0746d375f1f0a6bbcf8934a9bbf883777f3 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Tue, 27 Oct 2020 23:22:57 +0200 Subject: Explain that one of parsing homeworks is required --- website/content/slides/03_parsing/_index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/content/slides/03_parsing/_index.md b/website/content/slides/03_parsing/_index.md index 8d7f3ed..7fccdcc 100644 --- a/website/content/slides/03_parsing/_index.md +++ b/website/content/slides/03_parsing/_index.md @@ -523,5 +523,7 @@ Extend the xxx2html tool to: cyclomatic complexity ranging from light green to light read. 3. Produce html where control structures can be collapsed. +Do only one of these. + --- # ? -- cgit v1.3.1-23-gd82d From 032e5676d23cf801e34c530731ca6a57e0b7c2f4 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Tue, 3 Nov 2020 17:59:15 +0200 Subject: Add VM intro to the site --- website/content/post/contents.md | 4 ++-- website/content/post/vm_intro.md | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 website/content/post/vm_intro.md diff --git a/website/content/post/contents.md b/website/content/post/contents.md index a70e97d..5cbbf6a 100644 --- a/website/content/post/contents.md +++ b/website/content/post/contents.md @@ -27,11 +27,11 @@ Table of contents for the course. 0. Parser generators - [slides]({{< ref "/slides/04_parser_generators" >}}), [doc]({{< ref "/parser_generators" >}}) - + +[Slideshow]({{< ref "/slides/05_vm_intro" >}}) + +--- + +{{% readpost file="/slides/05_vm_intro/_index.md" markdown=true %}} -- cgit v1.3.1-23-gd82d