From 6dd2fc0001a3701984a66f1cbc6187e9c40ff959 Mon Sep 17 00:00:00 2001 From: Markus Pfeiffer Date: Thu, 5 Jul 2018 23:14:47 +0100 Subject: [PATCH] Compile functions to Syntax Trees Adds a kernel function SYNTAX_TREE that translates a previously coded GAP function into a syntax tree by using GAP records. --- Makefile.rules | 1 + doc/ref/language.xml | 11 + doc/ref/makedocreldata.g | 1 + lib/read8.g | 3 + lib/syntaxtree.gd | 17 + lib/syntaxtree.gi | 15 + src/modules-builtin.c | 4 + src/syntaxtree.c | 898 +++++++++++++++++++++++++++++++++ src/syntaxtree.h | 13 + tst/testinstall/syntaxtree.tst | 33 ++ 10 files changed, 996 insertions(+) create mode 100644 lib/syntaxtree.gd create mode 100644 lib/syntaxtree.gi create mode 100644 src/syntaxtree.c create mode 100644 src/syntaxtree.h create mode 100644 tst/testinstall/syntaxtree.tst diff --git a/Makefile.rules b/Makefile.rules index 7fece58762..38a3be359c 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -94,6 +94,7 @@ SOURCES += src/set.c SOURCES += src/stats.c SOURCES += src/streams.c SOURCES += src/stringobj.c +SOURCES += src/syntaxtree.c SOURCES += src/sysfiles.c SOURCES += src/sysmem.c SOURCES += src/system.c diff --git a/doc/ref/language.xml b/doc/ref/language.xml index 2c25e4420a..5401c190aa 100644 --- a/doc/ref/language.xml +++ b/doc/ref/language.xml @@ -1979,6 +1979,17 @@ For examples of return statements, see the functions fib and +
+ Syntax Trees + + This section describes the tools available to manipulate &GAP; syntax + programmatically. + + <#Include Label="SyntaxTree"> + <#Include Label="CleanupCompiler"> + <#Include Label="PrintCompiler"> +
+