Ver código fonte

debugged some errors

master
Nathan R 3 anos atrás
pai
commit
168d34af45
1 arquivos alterados com 16 adições e 12 exclusões
  1. +16
    -12
      ccmeta.leg

+ 16
- 12
ccmeta.leg Ver arquivo

@ -34,7 +34,7 @@
#define DO_C_PROTOS() \ #define DO_C_PROTOS() \
_DO(Comment) _DO(Token) \ _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_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_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) \ _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, switchTok_symbol, switchTok);
map_set(object, lparen_symbol, lParen); map_set(object, lparen_symbol, lParen);
map_set(object, expression_symbol, expression); map_set(object, expression_symbol, expression);
map_set(object, rParen, rParen);
map_set(object, rparen_symbol, rParen);
map_set(object, statements_symbol, statement); map_set(object, statements_symbol, statement);
return object; return object;
} }
@ -486,11 +486,10 @@ char *unescape(char *s)
return t; 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) { 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, attributeL_symbol, attributeList);
map_set(object, rlparen_symbol, rlParen); map_set(object, rlparen_symbol, rlParen);
map_set(object, rrparen_symbol, rrParen); map_set(object, rrparen_symbol, rrParen);
printf("Fin\n");
return object; 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, lparen_symbol, lParen);
map_set(object, typeName_symbol, typeName); map_set(object, typeName_symbol, typeName);
map_set(object, rparen_symbol, rParen); 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, initList_symbol, initList);
map_set(object, comma_symbol, comma); map_set(object, comma_symbol, comma);
map_set(object, rightCurly_symbol, rightCurly); map_set(object, rightCurly_symbol, rightCurly);
@ -1235,7 +1233,7 @@ hexadecimalEscapeSequence = '\\x' hexadecimalDigit+
stringLiteral = { listBegin(); } stringLiteral = { listBegin(); }
( s:stringLiteralPart { listAppend(s) } ( s:stringLiteralPart { listAppend(s) }
)+ { $$= newString(listEnd()) }
)+ { $$= new_C_string(listEnd()) }
stringLiteralPart = < '"' sCharSequence '"' > { $$= new_C_char(yytext) } - stringLiteralPart = < '"' sCharSequence '"' > { $$= new_C_char(yytext) } -
| < 'L''"' sCharSequence '"' > { $$= new_C_char(yytext) } - | < 'L''"' sCharSequence '"' > { $$= new_C_char(yytext) } -
@ -3066,6 +3064,9 @@ void outputNode(oop node)
case t_C_float: case t_C_float:
outputNode(map_get(node, text_symbol)); outputNode(map_get(node, text_symbol));
break; break;
case t_C_string:
outputNode(map_get(node, text_symbol));
break;
case t_C_char: case t_C_char:
outputNode(map_get(node, value_symbol)); outputNode(map_get(node, value_symbol));
break; break;
@ -3247,13 +3248,13 @@ void outputNode(oop node)
outputNode(map_get(node, lparen_symbol)); outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, text_symbol)); outputNode(map_get(node, text_symbol));
outputNode(map_get(node, element_symbol)); outputNode(map_get(node, element_symbol));
outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, rparen_symbol));
break; break;
case t_C_asmExprArg: case t_C_asmExprArg:
outputNode(map_get(node, text_symbol)); outputNode(map_get(node, text_symbol));
outputNode(map_get(node, lparen_symbol)); outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, expression_symbol)); outputNode(map_get(node, expression_symbol));
outputNode(map_get(node, lparen_symbol));
outputNode(map_get(node, rparen_symbol));
break; break;
case t_C_declaration: case t_C_declaration:
outputNode(map_get(node, specifiers_symbol)); outputNode(map_get(node, specifiers_symbol));
@ -3431,6 +3432,9 @@ void outputTree(oop node, int depth)
CASE(float) CASE(float)
OUT(text); OUT(text);
break; break;
CASE(string)
OUT(text);
break;
CASE(char) CASE(char)
OUT(value); OUT(value);
break; break;

Carregando…
Cancelar
Salvar