actExpr(0),
tokstartExpr(0),
tokendExpr(0),
+ dataExpr(0),
lowerNum(0),
upperNum(0),
fileName(fileName),
tokstartExpr = inlineList;
else if ( strcmp( var, "tokend" ) == 0 )
tokendExpr = inlineList;
+ else if ( strcmp( var, "data" ) == 0 )
+ dataExpr = inlineList;
else
set = false;
InlineList *actExpr;
InlineList *tokstartExpr;
InlineList *tokendExpr;
+ InlineList *dataExpr;
/* The alphabet range. */
char *lowerNum, *upperNum;
out << "</tokend_expr>\n";
}
+ if ( pd->dataExpr != 0 ) {
+ out << " <data_expr>";
+ writeInlineList( pd->dataExpr );
+ out << "</data_expr>\n";
+ }
+
writeExports();
writeMachine();
InlineList *actExpr;
InlineList *tokstartExpr;
InlineList *tokendExpr;
+ InlineList *dataExpr;
KeyOps thisKeyOps;
bool wantComplete;
token TAG_write, TAG_access, TAG_break, TAG_arg, TAG_cs_expr;
token TAG_p_expr, TAG_pe_expr, TAG_cs_expr, TAG_top_expr,
- TAG_stack_expr, TAG_act_expr, TAG_tokstart_expr, TAG_tokend_expr;
+ TAG_stack_expr, TAG_act_expr, TAG_tokstart_expr, TAG_tokend_expr,
+ TAG_data_expr;
}%%
%% write instance_data;
ragel_def_item: tag_act_expr;
ragel_def_item: tag_tokstart_expr;
ragel_def_item: tag_tokend_expr;
+ragel_def_item: tag_data_expr;
tag_export_list: TAG_exports export_list '/' TAG_exports;
final { cgd->tokstartExpr = $2->inlineList; };
tag_tokend_expr: TAG_tokend_expr inline_list '/' TAG_tokend_expr
final { cgd->tokendExpr = $2->inlineList; };
+tag_data_expr: TAG_data_expr inline_list '/' TAG_data_expr
+ final { cgd->dataExpr = $2->inlineList; };
tag_write: tag_write_head write_option_list '/' TAG_write
act_expr, TAG_act_expr
tokstart_expr, TAG_tokstart_expr
tokend_expr, TAG_tokend_expr
+data_expr, TAG_data_expr
}
else {
/* Expression for retrieving the key, use simple dereference. */
- ret << "data[" << P() << "]";
+ ret << DATA() << "[" << P() << "]";
}
return ret.str();
}
return ret.str();
}
+string JavaTabCodeGen::DATA()
+{
+ ostringstream ret;
+ if ( dataExpr == 0 )
+ ret << ACCESS() + "data";
+ else {
+ ret << "(";
+ INLINE_LIST( ret, dataExpr, 0, false );
+ ret << ")";
+ }
+ return ret.str();
+}
+
string JavaTabCodeGen::GET_WIDE_KEY()
{
string TOKSTART();
string TOKEND();
string ACT();
+ string DATA();
string DATA_PREFIX();
string PM() { return "_" + DATA_PREFIX() + "partition_map"; }
}
else {
/* Expression for retrieving the key, use simple dereference. */
- ret << "data[" << P() << "]";
+ ret << DATA() << "[" << P() << "]";
}
return ret.str();
}
return ret.str();
}
+string RubyCodeGen::DATA()
+{
+ ostringstream ret;
+ if ( dataExpr == 0 )
+ ret << ACCESS() + "data";
+ else {
+ //ret << "(";
+ INLINE_LIST( ret, dataExpr, 0, false );
+ //ret << ")";
+ }
+ return ret.str();
+}
+
string RubyCodeGen::GET_WIDE_KEY()
{
string ACT();
string TOKSTART();
string TOKEND();
+ string DATA();
string DATA_PREFIX();
string PM() { return "_" + DATA_PREFIX() + "partition_map"; }