approach to solving a problem

D

darren

I can't decide how much detail to provide for this question. I don't want to
overdo the details. I'm not trying to make you dig for information either.
I just don't want you to have to sift through a lengthy question looking for
the relevant details. Anyway . . .

The question I have is how to approach translating a procedurally structured
program written in C into a properly structured Ruby program. I have a
Pascal-like compiler that was written in C by my class last semester. As an
exercise to learn Ruby and better understand the Pascal compiler, I thought
I'd try to rewrite the compiler with Ruby. But, I'm getting confused on how
to think this procedural solution in object oriented terms.

So far, in Ruby, I am opening the source code file and echoing it back out to
screen. Now, I want to parse the source file, checking that its syntax
matches the syntax rules for our Pascal-like language. Even though I don't
have all of the regular expressions written, generally, I think I can handle
the regex part. I don't even think I'm going to get bogged down in the Ruby
code (although I'm sure I'll have plenty of unexpected qestions). But, I
have the Pickaxe 2nd ed. by my side and Google is my friend. Plus, I have
had a semester of Smalltalk. So, I'm suspecting the Ruby code is going to be
less trouble than just getting the overall idea of how to visualize laying it
all out.

The C source code file is really too long to ask anybody to spend time looking
at it. But, I'll post it anyway. And, I'll post a sample Pascal source
file, too. If anyone is interested in looking at the C code. Save yourself
some time, just jump down to the bottom of the code to find "main". The
first procedure that executes in main is block(). It's kinda easy to see
what's going on in block(). We're just checking for valid block identifiers,
if we get one, we move on, if not, we call statement(). We call identifiers
"SYMS". The process is pretty much that way all the way through. And, I
don't think it is all that important for this question.

Here are the links:
C code: http://www.usmstudent.com/tmp/c.txt
Pascal-like source text: http://www.usmstudent.com/tmp/pas.txt

TIA,
Darren
 
F

Florian Gross

darren said:
The question I have is how to approach translating a procedurally structured
program written in C into a properly structured Ruby program. I have a
Pascal-like compiler that was written in C by my class last semester. As an
exercise to learn Ruby and better understand the Pascal compiler, I thought
I'd try to rewrite the compiler with Ruby. But, I'm getting confused on how
to think this procedural solution in object oriented terms.

While I'm not generally sure of what the best design for compilers or
parsers in object orientation terms is, Racc might be of help here.
There's documentation available on
http://i.loveruby.net/en/man/racc/usage.html

BTW: I don't see the C code actually emitting anyway. Is it just a
Pascal parser?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top