all :: itest
itest.c itest.h : indent_test.mdc parsergen
./parsergen -o itest --LALR --tag indent indent_test.mdc
- indent_test.mk: indent_test.mdc md2c
+ indent_test.mk itest.code: indent_test.mdc md2c
./md2c indent_test.mdc
itest: itest.c | $(filter %.o,$(itestLDLIBS))
$(CC) $(itestCFLAGS) $^ $(itestLDLIBS) -o $@
./itest itest.code
checkitest: itest itest.code
@grep -v '^#' itest.out > .tmp.out
- @./itest itest.code | diff -u - .tmp.out || echo itest FAILED
+ @./itest itest.code | diff -u .tmp.out - || echo itest FAILED
@sed -e 'i\
' itest.code > itest2.code
- @./itest itest2.code| diff -u - .tmp.out || echo itest2 FAILED
+ @./itest itest2.code| diff -u .tmp.out - || echo itest2 FAILED
demos :: doitest
tests :: checkitest
# indent: header
- ./parsergen -o itest --LALR indent_test.cgm
- cc -o itest itest.c lib*.o -licuuc -lgmp
- ./itest itest.code
-
struct expression {
struct text op;
struct expression *left, *right;
$*statement
Newlines -> NEWLINE
| Newlines NEWLINE
- Statementlist -> Statements ${ $0 = $<1; }$
- | Newlines Statements ${ $0 = $<2; }$
+ Statementlist -> Statements ${ $0 = $<S; }$
+ | Newlines Statements ${ $0 = $<S1; }$
Statements -> Statements Statement ${
{
| Newlines {
Close -> }
| Newlines }
- Block -> Open Statementlist Close ${ $0 = $<2; }$
- | Open SimpleStatements } ${ $0 = $<2; }$
- | : SimpleStatements ${ $0 = $<2; }$
- | : StatementBlock ${ $0 = $<2; }$
- StatementBlock -> Statementlist $$OUT ${ $0 = $<1; }$
+ Block -> Open Statementlist Close ${ $0 = $<S; }$
+ | Open SimpleStatements } ${ $0 = $<S; }$
+ | : SimpleStatements ${ $0 = $<SS; }$
+ | : StatementBlock ${ $0 = $<SB; }$
+ StatementBlock -> Statementlist $$OUT ${ $0 = $<Sl; }$
SimpleStatements -> SimpleStatements ; SimpleStatement ${
{
struct statement **s;
- $0 = $<1;
+ $0 = $<SSs;
s = &$0;
while (*s)
s = &(*s)->next;
- *s = $<3;
+ *s = $<SS;
}
}$
| SimpleStatement ${ $0 = $<1; }$