On 2017-11-07 17:42, Mike Kerner via use-livecode wrote:
No, the ERP is written in HP BASIC, so I would want to emulate the
language, given the breadth and number of programs. I was thinking about writing wrappers for the various commands and functions of the language,
but it won't be easy, no matter what I do.

In this case 'ease' is probably related to the breadth of the language and how complex individual commands/functions are - if you have a good architecture for the emulator, most of the work will be in recreating that functionality, rather than the parsing/execution mechanism.

There are also binary resources that I would have to have recreated such as forms and dialogs, and I would have to take the db schemas and convert them to a modern database, which seems like the least work of this entire silly
idea.

From what you've said it doesn't sound like a silly idea at all.

Would it be less work to rewrite it? I doubt it. Would it be less effort to cough up for an off-the-self ERP package? Possibly, but the one piece that is extremely valuable is the payroll piece, because it is so expensive
to hire a service or to pay for someone else's payroll software.  For
example, look at the time and attendance piece.  I was able to write a
timeclock app that runs on a tablet for a tiny fraction of what it would
cost to replace the existing timeclocks.  Timekeeping software is also
crazy expensive, and payroll is akin to highway robbery.

If it is a system you've been maintaining for 30 years, then I suspect you are correct - it won't be less work to rewrite as you'll spend a lot of time making things work as they did before... After all, I suspect that after 30 years working on it even you can't remember where all the bodies are buried!

(I certainly find zombies popping up now and again to bite me in the LiveCode engine from things I've done in the past!)

Would it be easier to try to build an emulator in Xojo? I've thought about
it, but before I add yet another development tool to the mix, here, I
thought I'd chase this idea, first.

Well I can certainly say that LiveCode is perfectly capable, and indeed very good for writing compilers/interpreters because of the way its arrays work (copy-on-write in particular), and the ability to pass references to array elements to functions. (I've writing a few such things in the last 12 months - the SVG compiler being the most recent example).

I'd generally recommend using a LiveCode array to represent the source structure (after parsing - which will be a tree), and then write a recursive evaluator for it, threading through the node which is being executed and a mutable context array which contains all the current execution state:

  on langExecute @xContext, pNode
- dispatch to do what you need to do for node, using state from xContext
  end langExecute

If you can figure out how to map the source language to (essentially) a sequence of command invocations, then you can write the each piece of functionality provided by the language (i.e. the bits other than variable manipulations and control transfer) as a single handler which takes the xContext parameter.

Okay, so all the above is a bit vague - but it is just to give an idea of how I've found the best way to structure such things in LiveCode.

Warmest Regards,

P.S. Do you have the online links for the reference manuals? I'm intrigued...

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to