Solved

Script Parsing

Posted on 1998-10-15
10
219 Views
Last Modified: 2010-04-15
I have a test script syntax of the form:
1. READ TRACK_1 & (TRACK_2 | TRACK_3)
2. WRITE TRACK_1 | TRACK_2

The first implies that tracks 1 is required AND either if tracks 2 or 3. The second implies that either track 1 or 2 is OK.  These are left associative. READ, WRITE, TRACK_1, TRACK_2, TRACK_3 are the only keywords.

I have to find a general (but efficient) algorithm to do these.  I also want to be able to store the order of evaluation to a structure that I can pass to any routine (that way, I don't have to parse again).  I already have a tokenizing routine so that's one out.

Any ideas?  (This is usually directed to anyone with an experience in compilers and translators).
0
Comment
Question by:ealva
  • 3
  • 3
  • 2
  • +2
10 Comments
 
LVL 3

Expert Comment

by:braveheart
ID: 1253588
To write this from scratch in C would be fairly pointless when there are so many useful tools such as lex, yacc and bison about which can do the job for you quite efficiently.
0
 

Author Comment

by:ealva
ID: 1253589
No. This is not a full-fledged language. I do not need yacc and lex.
0
 
LVL 3

Expert Comment

by:elfie
ID: 1253590
If you already have a tokenizing routine, why not give each token a  number (like LEX) and then call a routine with variable number of parameters. That way you can pass a list of number, representing the parsed sentence
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 3

Expert Comment

by:braveheart
ID: 1253591
You could use "strtok".
0
 
LVL 5

Expert Comment

by:scrapdog
ID: 1253592
Elfie:  isn't that what the definition of tokenization is?

Tokenizing is the easy part, the hard part is determining the order of evaluation.

I would go about it by first converting the infix espression to postfix, and then using a stack to evaluate the postfix expression.
0
 
LVL 84

Expert Comment

by:ozo
ID: 1253593
Rather than bother with converting and then stacking, I would just do a recursive descent.
0
 
LVL 5

Expert Comment

by:scrapdog
ID: 1253594
>>I also want to be able to store the order of evaluation

If you want to STORE the order of evaluation, a postfix expression is most efficient.
0
 

Author Comment

by:ealva
ID: 1253595
scrapdog is right. I do have to first convert to postfix in order to determine the order of evaluation. How do I award the answer?

0
 
LVL 5

Accepted Solution

by:
scrapdog earned 200 total points
ID: 1253596
>scrapdog is right. I do have to first convert to postfix in
>order to determine the order of evaluation. How do I award the
>answer?

If it was my answer you were talking about, grade it :)
.if not, reject it.

Btw, if you need infix to postfix algorithms, I can show you some (in Pascal though...).  These are (almost) generic;  you would have to change them to accommodate your needs.
0
 

Author Comment

by:ealva
ID: 1253597
Thanks, scrapdog.
0

Featured Post

ScreenConnect 6.0 Free Trial

Want empowering updates? You're in the right place! Discover new features in ScreenConnect 6.0, based on partner feedback, to keep you business operating smoothly and optimally (the way it should be). Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question