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
[email protected]
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language