Author: kjs
Date: Fri Mar 30 13:34:04 2007
New Revision: 17865
Added:
trunk/compilers/pirc/src/no_output.c (contents, props changed)
trunk/compilers/pirc/src/no_output.h (contents, props changed)
Modified:
trunk/compilers/pirc/src/pirmain.c
trunk/compilers/pirc/src/pirparser.c
trunk/compilers/pirc/src/pirvtable.h
trunk/config/gen/makefiles/pirc.in
Log:
compilers/pirc:
* fix in macro (p should be P)
* add "no_output" to specify type of output
Added: trunk/compilers/pirc/src/no_output.c
==============================================================================
--- (empty file)
+++ trunk/compilers/pirc/src/no_output.c Fri Mar 30 13:34:04 2007
@@ -0,0 +1,19 @@
+#include "pirvtable.h"
+#include "pirparser.h"
+#include <stdlib.h>
+
+
+static void
+none(struct parser_state *p) {
+ /* do nothing */
+}
+
+pirvtable *
+init_none_vtable(void) {
+ pirvtable *vtable = (pirvtable *)malloc(sizeof(pirvtable));
+
+ vtable->sub_start = none;
+ vtable->sub_end = none;
+
+ return vtable;
+}
Added: trunk/compilers/pirc/src/no_output.h
==============================================================================
--- (empty file)
+++ trunk/compilers/pirc/src/no_output.h Fri Mar 30 13:34:04 2007
@@ -0,0 +1,8 @@
+#ifndef __NO_OUTPUT_H
+# define __NO_OUTPUT_H
+
+struct pirvtable;
+
+extern struct pirvtable *init_none_vtable(void);
+
+#endif
Modified: trunk/compilers/pirc/src/pirmain.c
==============================================================================
--- trunk/compilers/pirc/src/pirmain.c (original)
+++ trunk/compilers/pirc/src/pirmain.c Fri Mar 30 13:34:04 2007
@@ -19,7 +19,7 @@
/* create a new parser, specifying the file name */
- p = new_parser(argv[1], OUTPUT_PAST);
+ p = new_parser(argv[1], OUTPUT_NONE);
/* start parsing */
TOP(p);
Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c (original)
+++ trunk/compilers/pirc/src/pirparser.c Fri Mar 30 13:34:04 2007
@@ -59,6 +59,7 @@
#include "pirout.h" /* for test output */
#include "pastout.h" /* experimental output of PAST */
+#include "no_output.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
@@ -168,6 +169,9 @@
p->heredoc_index = 0;
switch (output) {
+ case OUTPUT_NONE:
+ p->vtable = init_none_vtable();
+ break;
case OUTPUT_PIR:
p->vtable = init_pir_vtable();
break;
@@ -1811,7 +1815,6 @@
emit_sub_start(p);
sub_flags(p);
-
match(p, T_NEWLINE);
parameters(p);
instructions(p);
Modified: trunk/compilers/pirc/src/pirvtable.h
==============================================================================
--- trunk/compilers/pirc/src/pirvtable.h (original)
+++ trunk/compilers/pirc/src/pirvtable.h Fri Mar 30 13:34:04 2007
@@ -13,10 +13,13 @@
} pirvtable;
+
+
/* #defines for cleaner invocation syntax */
+# define emit_sub_start(P) (*P->vtable->sub_start)(P)
+# define emit_sub_end(P) (*P->vtable->sub_end) (P)
+
-# define emit_sub_start(P) (*p->vtable->sub_start)(P)
-# define emit_sub_end(P) (*p->vtable->sub_end) (P)
#endif
Modified: trunk/config/gen/makefiles/pirc.in
==============================================================================
--- trunk/config/gen/makefiles/pirc.in (original)
+++ trunk/config/gen/makefiles/pirc.in Fri Mar 30 13:34:04 2007
@@ -36,11 +36,15 @@
src/pirout.c \
src/pirout.h \
src/pastout.c \
- src/pastout.h
+ src/pastout.h \
+ src/no_output.c \
+ src/no_output.h \
+ src/pirvtable.h
-pirc: pirmain$(O) pirparser$(O) pirlexer$(O) pirout$(O) pastout$(O)
- $(CC) -o pirc$(EXE) pirmain$(O) pirparser$(O) pirlexer$(O) pirout$(O)
pastout$(O)
+pirc: pirmain$(O) pirparser$(O) pirlexer$(O) pirout$(O) pastout$(O)
no_output$(O)
+ $(CC) -o pirc$(EXE) pirmain$(O) pirparser$(O) pirlexer$(O) pirout$(O)
pastout$(O) \
+ no_output$(O)
pirmain$(O): src/pirmain.c src/pirparser.h
$(CC) $(CFLAGS) -c src/pirmain.c
@@ -57,6 +61,9 @@
pastout$(O): src/pastout.c src/pastout.h
$(CC) $(CFLAGS) -c src/pastout.c
+no_output$(O): src/no_output.c src/no_output.h
+ $(CC) $(CFLAGS) -c src/no_output.c
+
# This is a listing of all targets, that are meant to be called by users
help:
@echo ""