This commit is contained in:
Michael Zhang 2020-10-31 23:04:29 -05:00
commit 35288b2ca7
Signed by: michael
GPG key ID: BDA47A31A3C8EE6B
4 changed files with 72 additions and 0 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
*.i
*.c
*.xml
ableC.jar

33
Makefile Normal file
View file

@ -0,0 +1,33 @@
ABLEC_BASE ?= ~/Projects/melt-umn/ableC
EXTS_BASE ?= ~/Projects/melt-umn/extensions
ABLEC_JAR = ableC.jar
ARTIFACT = artifact
GRAMMAR_DIRS = $(ABLEC_BASE)/grammars $(wildcard $(EXTS_BASE)/*/grammars)
GRAMMAR_SOURCES = $(shell find $(GRAMMAR_DIRS) -name *.sv -print0 | xargs -0)
XC_INCLUDE_DIRS = $(wildcard $(EXTS_BASE)/*/include)
override XCFLAGS += $(addprefix -I,$(XC_INCLUDE_DIRS))
override SVFLAGS += $(addprefix -I ,$(GRAMMAR_DIRS))
all: multiclip
$(ABLEC_JAR): $(GRAMMAR_SOURCES)
touch $(wildcard $(ARTIFACT)/*.sv)
silver-ableC -o $@ $(SVFLAGS) $(ARTIFACT)
multiclip: main.c
gcc -o $@ -lgc $<
main.c: main.xc $(ABLEC_JAR)
java -jar $(ABLEC_JAR) $< -o $@ $(XCFLAGS)
clean:
rm -f multiclip
rm -f *.gen_cpp
rm -f *.c
rm -f *.xml
.PHONY: all clean

23
artifact/Artifact.sv Normal file
View file

@ -0,0 +1,23 @@
grammar artifact;
{- This Silver specification does litte more than list the desired
extensions, albeit in a somewhat stylized way.
Files like this can easily be generated automatically from a simple
list of the desired extensions.
-}
import edu:umn:cs:melt:ableC:concretesyntax as cst;
import edu:umn:cs:melt:ableC:drivers:compile;
parser extendedParser :: cst:Root {
edu:umn:cs:melt:ableC:concretesyntax;
edu:umn:cs:melt:exts:ableC:string;
}
function main
IOVal<Integer> ::= args::[String] io_in::IO
{
return driver(args, io_in, extendedParser);
}

12
main.xc Normal file
View file

@ -0,0 +1,12 @@
#include <string.xh>
#include <stdio.h>
int main(int argc, char** argv) {
string a;
a = "abc";
printf("a: %s\n", a.text);
}
// vim: set ft=c :