3 Ревизии

Автор SHA1 Съобщение Дата
  Nathan R 168d34af45 debugged some errors преди 3 години
  Nathan R 0127f27442 test now passes преди 3 години
  Nathan R 69342e0140 updated makefile to debug more easily преди 3 години
променени са 3 файла, в които са добавени 33 реда и са изтрити 13 реда
  1. +8
    -1
      Makefile
  2. +16
    -12
      ccmeta.leg
  3. +9
    -0
      tests-std/test51.out

+ 8
- 1
Makefile Целия файл

@ -11,6 +11,10 @@ tree : all .FORCE
test : all .FORCE
./dotest
debug : all .FORCE
./$(MAIN) < debug.c > debug.out
#diff debug.out debug.c
$(MAIN) : $(MAIN).c object.c buffer.h
$(CC) $(CFLAGS) -o $@ $@.c $(LDLIBS)
@ -26,6 +30,9 @@ clean : .FORCE
tidy : .FORCE
rm -f *~ $(MAIN)-tree.out
spotless : clean tidy
cleansed : .FORCE
rm -f debug.out
spotless : clean tidy cleansed
.FORCE :

+ 16
- 12
ccmeta.leg Целия файл

@ -34,7 +34,7 @@
#define DO_C_PROTOS() \
_DO(Comment) _DO(Token) \
_DO(C_declaration) \
_DO(C_declaration) _DO(C_string) \
_DO(C_if) _DO(C_int) _DO(C_float) _DO(C_char) _DO(C_id) _DO(C_while) _DO(C_do) _DO(C_for) \
_DO(C_binary) _DO(C_initializer) _DO(C_range) _DO(C_conditional) _DO(C_index) \
_DO(C_designation) _DO(C_attribution) _DO(C_deref) _DO(C_block) _DO(C_call) _DO(C_subexpr) \
@ -359,7 +359,7 @@ oop new_C_switch(oop switchTok, oop lParen, oop expression, oop rParen, oop stat
map_set(object, switchTok_symbol, switchTok);
map_set(object, lparen_symbol, lParen);
map_set(object, expression_symbol, expression);
map_set(object, rParen, rParen);
map_set(object, rparen_symbol, rParen);
map_set(object, statements_symbol, statement);
return object;
}
@ -486,11 +486,10 @@ char *unescape(char *s)
return t;
}
oop newString(oop str)
{ assert(is(String, str));
oop string = newObject(String_proto);
map_set(string, value_symbol, str);
return string;
oop new_C_string(oop str) {
oop object = newObject(C_string_proto);
map_set(object, text_symbol, str);
return object;
}
oop new_C_char(char *s) {
@ -972,7 +971,6 @@ oop new_C_attributeSpec(oop attributeTok, oop llParen, oop lrParen, oop attribut
map_set(object, attributeL_symbol, attributeList);
map_set(object, rlparen_symbol, rlParen);
map_set(object, rrparen_symbol, rrParen);
printf("Fin\n");
return object;
}
@ -981,7 +979,7 @@ oop new_C_aggregate(oop lParen, oop typeName, oop rParen, oop leftCurly, oop ini
map_set(object, lparen_symbol, lParen);
map_set(object, typeName_symbol, typeName);
map_set(object, rparen_symbol, rParen);
map_set(object, leftCurly_symbol, leftCurly_symbol);
map_set(object, leftCurly_symbol, leftCurly);
map_set(object, initList_symbol, initList);
map_set(object, comma_symbol, comma);
map_set(object, rightCurly_symbol, rightCurly);
@ -1235,7 +1233,7 @@ hexadecimalEscapeSequence = '\\x' hexadecimalDigit+
stringLiteral = { listBegin(); }
( s:stringLiteralPart { listAppend(s) }
)+ { $$= newString(listEnd()) }
)+ { $$= new_C_string(listEnd()) }
stringLiteralPart = < '"' sCharSequence '"' > { $$= new_C_char(yytext) } -
| < 'L''"' sCharSequence '"' > { $$= new_C_char(yytext) } -
@ -3066,6 +3064,9 @@ void outputNode(oop node)
case t_C_float:
outputNode(map_get(node, text_symbol));
break;
case t_C_string:
outputNode(map_get(node, text_symbol));
break;
case t_C_char:
outputNode(map_get(node, value_symbol));
break;
@ -3247,13 +3248,13 @@ void outputNode(oop node)
outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, text_symbol));
outputNode(map_get(node, element_symbol));
outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, rparen_symbol));
break;
case t_C_asmExprArg:
outputNode(map_get(node, text_symbol));
outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, expression_symbol));
outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, rparen_symbol));
break;
case t_C_declaration:
outputNode(map_get(node, specifiers_symbol));
@ -3431,6 +3432,9 @@ void outputTree(oop node, int depth)
CASE(float)
OUT(text);
break;
CASE(string)
OUT(text);
break;
CASE(char)
OUT(value);
break;

+ 9
- 0
tests-std/test51.out Целия файл

@ -0,0 +1,9 @@
main() {
if (nerror) cleanup();
else if (argc < 1) faterror("no input file%s", cmdusage);
else for (; 0 < argc; cleanup(), ++argv, --argc) {
targetdelta = 0;
ffree();
}
}

Зареждане…
Отказ
Запис