On 29/10/2010, at 1:58 AM, Erick Tryzelaar wrote:

> I changed some things around in fbuild which should fix the problem.
> Here's how to fix it:
> 
> % cd $FELIX
> % git remote set-url origin git://github.com/erickt/felix.git
> % cd fbuild
> % git remote set-url origin git://github.com/erickt/fbuild.git
> % cd ../src/compiler/dypgen
> % git remote set-url origin git://github.com/erickt/dypgen.git
> % cd ../ocs
> % git remote set-url origin git://github.com/erickt/ocs.git
> % cd ../../..
> % git submodule init
> % git submodule update
> 
> That should hopefully get you back up and running. By the way John, I
> think I forgot to tell you to set the dypgen and ocs paths.

Yeah, but done now.

BTW: I am getting a weird error:

~/felix>flx --test=build/release-optimized/ tools/webserver 
--root=build/release-optimized/
SYSTEM FAILURE
Binding error, cannot find in table: getcwd_mf_1875 index 1875, parent 6176

However I suspect the message is plain wrong, here's the Ocaml:

  let str_parent = function | Some i -> string_of_int i | None -> "global" in
  Flx_mtypes2.iter_bids begin fun i ->
    match
      try Some (Flx_sym_table.find_with_parent state.sym_table i)
      with Not_found -> None
    with
    | None -> ()
    | Some (parent, symdef) ->
        try bbind_symbol state bsym_table i parent symdef
        with Not_found ->
          try match hfind "bbind" state.sym_table i with { Flx_sym.id=id } ->
            failwith ("Binding error, cannot find in table: " ^ id ^ " index " ^
              string_of_bid i ^ ", parent " ^ str_parent parent)
          with Not_found ->
            failwith ("Binding error UNKNOWN SYMBOL, index " ^ string_of_bid i)
  end dummy_bid !(state.syms.counter)

The message is SURE to be wrong!  If the symbol is not found in sym_table,
you just get "None". Otherwise, we try a match on a second lookup
in the same table (which can't fail, because we just found it) and
then if we can't bind it due to a Not_found error we say we can't
find it. We already found it .. TWICE.

The real problem is that bbind_symbol is throwing a Not_found.
It seems there may be a problem here:

~/felix>grep _mf_ src/compiler/*/*
src/compiler/flx_desugar/flx_desugar.ml:      name ^ "_mf_" ^ string_of_bid 
match_function_index
src/compiler/flx_desugar/flx_desugar.ml:    let match_id = name^ "_mf_" ^ 
string_of_bid match_index in

which is translating

  return if C_hack::isNULL p then "" else string p endif; 

into 

return match ... with | true => p | false => string p endmatch

[Felix does not have any "conditional" expressions other than "match"]

Such translations are typically done by generating a wrapper and calling
it, to avoid lookup problems, there is no lookup using the synthesised names,
instead the actual table index of the wrapper is used.


--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to