You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2011/10/19 03:17:18 UTC
[lucy-commits] svn commit: r1185940 - in
/incubator/lucy/branches/clownfish_lemon/clownfish/src: CFCLexHeader.l
CFCParseHeader.y CFCParser.c CFCParser.h
Author: marvin
Date: Wed Oct 19 01:17:17 2011
New Revision: 1185940
URL: http://svn.apache.org/viewvc?rev=1185940&view=rev
Log:
Use accessors rather than direct access for the parser's current text.
Modified:
incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l
incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y
incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c
incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCLexHeader.l Wed Oct 19 01:17:17 2011
@@ -31,13 +31,7 @@
S_save_and_parse(token_type)
static void
S_save_and_parse(int token_type) {
- if (yyleng >= CFCParser_current_state->cap) {
- CFCParser_current_state->text
- = REALLOCATE(CFCParser_current_state->text, yyleng + 1);
- CFCParser_current_state->cap = yyleng + 1;
- }
- strncpy(CFCParser_current_state->text, yytext, yyleng);
- CFCParser_current_state->text[yyleng] = '\0';
+ CFCParser_set_text(CFCParser_current_state, yytext, yyleng);
PARSE(token_type);
}
%}
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParseHeader.y Wed Oct 19 01:17:17 2011
@@ -53,15 +53,11 @@ static const char KW_DOUBLE[] = "doubl
%syntax_error {
state->errors = true;
- FREEMEM(state->text);
- state->text = NULL;
- state->cap = 0;
+ CFCParser_set_text(state, NULL, 0);
}
%parse_accept {
- FREEMEM(state->text);
- state->text = NULL;
- state->cap = 0;
+ CFCParser_set_text(state, NULL, 0);
}
/* Temporary. */
@@ -248,7 +244,7 @@ va_list_type(A) ::= va_list_specifier.
arbitrary_type(A) ::= ARBITRARY.
{
A = (CFCBase*)CFCType_new_arbitrary(CFCParser_get_parcel(),
- CFCParser_current_state->text);
+ CFCParser_get_text(state));
}
object_type(A) ::= object_type_specifier(B) ASTERISK.
@@ -263,12 +259,12 @@ object_type(A) ::= type_qualifier_list(B
object_type_specifier(A) ::= CLASS_NAME_COMPONENT.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
object_type_specifier(A) ::= PREFIXED_OBJECT_TYPE_SPECIFIER.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
type_qualifier(A) ::= CONST. { A = CFCTYPE_CONST; }
@@ -319,24 +315,24 @@ scalar_constant(A) ::= NULL. { A = C
integer_literal(A) ::= INTEGER_LITERAL.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
float_literal(A) ::= FLOAT_LITERAL.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
hex_literal(A) ::= HEX_LITERAL.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
string_literal(A) ::= STRING_LITERAL.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
declarator(A) ::= IDENTIFIER.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
param_variable(A) ::= type(B) declarator(C).
@@ -381,22 +377,22 @@ param_list_elems(A) ::= param_variable(B
docucomment(A) ::= DOCUCOMMENT.
{
- A = (CFCBase*)CFCDocuComment_parse(CFCParser_current_state->text);
+ A = (CFCBase*)CFCDocuComment_parse(CFCParser_get_text(state));
}
class_name(A) ::= CLASS_NAME_MULTI.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
class_name(A) ::= CLASS_NAME_COMPONENT.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
cnick(A) ::= CNICK CLASS_NAME_COMPONENT.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
cblock(A) ::= CBLOCK_START blob(B) CBLOCK_CLOSE.
@@ -406,5 +402,5 @@ cblock(A) ::= CBLOCK_START blob(B) CBLOC
blob(A) ::= BLOB.
{
- A = CFCUtil_strdup(CFCParser_current_state->text);
+ A = CFCUtil_strdup(CFCParser_get_text(state));
}
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.c Wed Oct 19 01:17:17 2011
@@ -94,6 +94,28 @@ CFCParser_parse(CFCParser *self, const c
}
void
+CFCParser_set_text(CFCParserState *self, const char *text, size_t len) {
+ if (text) {
+ if (len >= self->cap) {
+ self->cap = len + 1;
+ self->text = REALLOCATE(self->text, self->cap);
+ }
+ memcpy(self->text, text, len);
+ self->text[len] = '\0';
+ }
+ else {
+ FREEMEM(self->text);
+ self->cap = 0;
+ self->text = NULL;
+ }
+}
+
+const char*
+CFCParser_get_text(CFCParserState *self) {
+ return self->text;
+}
+
+void
CFCParser_set_parcel(CFCParcel *parcel) {
CFCBase_incref((CFCBase*)parcel);
CFCBase_decref((CFCBase*)CFCParser_current_parcel);
Modified: incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h
URL: http://svn.apache.org/viewvc/incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h?rev=1185940&r1=1185939&r2=1185940&view=diff
==============================================================================
--- incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h (original)
+++ incubator/lucy/branches/clownfish_lemon/clownfish/src/CFCParser.h Wed Oct 19 01:17:17 2011
@@ -51,6 +51,11 @@ CFCParser_destroy(CFCParser *self);
struct CFCBase*
CFCParser_parse(CFCParser *self, const char *string);
+void
+CFCParser_set_text(CFCParserState *self, const char *text, size_t len);
+
+const char*
+CFCParser_get_text(CFCParserState *self);
void
CFCParser_set_parcel(struct CFCParcel *parcel);