Being the Resident Curmudgeon (self-described and not universally acclaimed), I figured I'd jump in with another viewpoint or two.

First, let me say I think this project could definitely be done well in Rev. I haven't seen anything in your requirements or this discussion that leads me to believe otherwise. That said, I think your performance concerns may be valid on some level. I don't think you need to (or necessarily should) conceive of your script interpreter as a nested ball of if-then-else or CASE statements. I think a table-driven approach might be far better, given Rev's ability to deal with 2-D arrays and strings. So I'd see a data structure like:

doplay,playTheGame,param1, param2
doscore, calcScore, param1, param2, param3

Then your code just locates the right line/row of the data structure to find out what command to call and everything else on the line is parametric data. I'm sure I'm probably oversimplifying here, but perhaps my point is clear anyway.

Two other things occur.

First, at the risk of causing a firestorm here, REALBasic includes a full-blown script interpreter, RBScript, that might completely avoid the need for writing your own scripting language interpreter. To be sure, development in RB is probably substantially slower than in Rev, but for an Open Source project, it has some advantages that are probably self-evident. Being object-oriented and given your experience with Python, you might find yourself quite at home in that world.

Second, if you do decide to do an interpreter, check out YACC (Yet Another Compiler Compiler) at http://dinosaur.compilertools.net/ yacc/ . The tool may or may not be useful to help you generate what you need here but I bet it'll help you think about your needs in a more structured way.

Good luck with the project. Sounds like fun.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dan Shafer, Revolution Consultant and Author
http://www.shafermedia.com
Get my book, "Revolution: Software at the Speed of Thought"
From http://www.revolutionpros.com, Click "My Stuff"



_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to