Переглянути джерело

debugged some errors

master
Nathan R 3 роки тому
джерело
коміт
168d34af45
1 змінених файлів з 16 додано та 12 видалено
  1. +16
    -12
      ccmeta.leg

+ 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;

Завантаження…
Відмінити
Зберегти