Esempio n. 1
0
/**
 * CTRParserString
 *
 * Generates a node to represent a string.
 */
ctr_tnode* ctr_cparse_string() {
	ctr_tnode* r;
	char* n;
	ctr_size vlen;
	if (ctr_mode_debug) printf("Parsing STRING. \n");
	ctr_clex_tok();
	r = CTR_PARSER_CREATE_NODE();
	r->type = CTR_AST_NODE_LTRSTRING;
	n = ctr_clex_readstr();
	vlen = ctr_clex_tok_value_length();
	r->value = ctr_malloc(sizeof(char) * vlen, 0);
	memcpy(r->value, n, vlen);
	r->vlen = vlen;
	ctr_clex_tok(); /* eat trailing quote. */
	return r;
}
Esempio n. 2
0
/**
 * CTRParserString
 *
 * Generates a node to represent a string.
 */
ctr_tnode *
ctr_cparse_string ()
{
  ctr_tnode *r;
  char *n;
  ctr_size vlen;
  ctr_clex_tok ();
  r = ctr_cparse_create_node (CTR_AST_NODE);
  r->type = CTR_AST_NODE_LTRSTRING;
  n = ctr_clex_readstr ();
  vlen = ctr_clex_tok_value_length ();
  r->value = ctr_heap_allocate_tracked (sizeof (char) * vlen);
  memcpy (r->value, n, vlen);
  r->vlen = vlen;
  ctr_clex_tok ();		/* eat trailing quote. */
  return r;
}
Esempio n. 3
0
/**
 * Prints translatable strings in the program.
 */
char* ctr_translate_string(char* codePointer, ctr_dict* dictionary) {
	char* s;
	ctr_size l;
	char* e;
	char* p;
	p = codePointer;
	if (ctr_string_interpolation) {
		ctr_string_interpolation = 0;
	}
	s = ctr_clex_readstr();
	l =  ctr_clex_tok_value_length(s);
	e = ctr_clex_code_pointer();
	if (ctr_string_interpolation) {
		e -= 3;
	}
	fwrite(p, e-p-l, 1, stdout);
	if (!ctr_translate_translate(s,l,dictionary,'s',NULL)) {
		fwrite(s,l,1,stdout);
	}
	if (!ctr_string_interpolation) {
		ctr_clex_tok();
	}
	return e;
}