Skip to content

Commit

Permalink
Work on libmarpa BOCAGE interface
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeffrey Kegler authored and Jeffrey Kegler committed Dec 21, 2011
1 parent 74372f7 commit a9ad0b8
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 93 deletions.
9 changes: 5 additions & 4 deletions r2/libmarpa/dev/api.texi
Original file line number Diff line number Diff line change
Expand Up @@ -414,22 +414,23 @@ Return value: %NULL if the GLib library is compatible with the
@deftypefun void marpa_b_unref (Marpa_Bocage @var{b})
@end deftypefun

@deftypefun Marpa_Grammar marpa_b_g(Marpa_Bocage @var{b})
@deftypefun Marpa_Grammar marpa_b_g (Marpa_Bocage @var{b})
@end deftypefun

@node Order
@chapter Order objects

@deftypefun gint marpa_o_and_order_set ( @
Marpa_Bocage b, @
Marpa_Recognizer r, @
Marpa_Or_Node_ID or_node_id, @
Marpa_And_Node_ID* and_node_ids, @
gint length)
@end deftypefun

@deftypefun Marpa_And_Node_ID marpa_o_and_order_get ( @
Marpa_Bocage b, @
Marpa_Or_Node_ID or_node_id, gint ix)
Marpa_Recognizer r, @
Marpa_Or_Node_ID or_node_id, @
gint ix)
@end deftypefun

@node Error handling
Expand Down
18 changes: 14 additions & 4 deletions r2/libmarpa/dev/marpa.w
Original file line number Diff line number Diff line change
Expand Up @@ -11314,16 +11314,21 @@ A purist might insist this needs to be reflected in a structure,
but to my mind doing this portably makes the code more obscure,
not less.
@<Function definitions@> =
gint marpa_o_and_order_set(Marpa_Bocage b,
gint marpa_o_and_order_set(Marpa_Recognizer r,
Marpa_Or_Node_ID or_node_id,
Marpa_And_Node_ID* and_node_ids,
gint length)
{
OR or_node;
ORDER order;
@<Return |-2| on failure@>@;
@<Unpack bocage objects@>@;
@<Unpack recognizer objects@>@;
@<Fail if fatal error@>@;
BOCAGE b = B_of_R(r);
if (!b) {
MARPA_DEV_ERROR("no bocage");
return failure_indicator;
}
@<Check |or_node_id|; set |or_node|@>@;
{
ANDID** and_node_orderings;
Expand Down Expand Up @@ -11422,12 +11427,17 @@ static inline ANDID and_order_get(BOCAGE b, OR or_node, gint ix)
return First_ANDID_of_OR(or_node) + ix;
}

Marpa_And_Node_ID marpa_o_and_order_get(Marpa_Bocage b,
Marpa_And_Node_ID marpa_o_and_order_get(Marpa_Recognizer r,
Marpa_Or_Node_ID or_node_id, gint ix)
{
OR or_node;
@<Return |-2| on failure@>@;
@<Unpack bocage objects@>
@<Unpack recognizer objects@>
BOCAGE b = B_of_R(r);
if (!b) {
MARPA_DEV_ERROR("no bocage");
return failure_indicator;
}
@<Fail if fatal error@>@;
@<Check |or_node_id|; set |or_node|@>@;
if (ix < 0) {
Expand Down
Loading

0 comments on commit a9ad0b8

Please sign in to comment.