Solved

# example in yacc

Posted on 1998-11-16
212 Views
Could some one write and example program in yacc that shows how to use the pseudovariables \$1,\$2,etc.. to get the value of a variable and puts it in a char variable?
Thanks
Will give more points later.
0
Question by:laeuchli
• 4
• 2
• 2
• +2

LVL 5

Author Comment

come on guys, a comment at least.
0

Expert Comment

Here's an example, perhaps this helps:

actualparams
:S_LB actualparamlist S_RB
{ \$\$ = \$2; }
|
{ \$\$ = NULL; }
;

The \$1 is the first term of the definiton, \$2 the second, and so on.
e.g.

term: '(' term ')'
-> \$1 = '('
-> \$2 = term
-> \$3 = ')'
And: \$\$ is the result (the left side, "term").
0

LVL 3

Expert Comment

Sorry don't have time to make a small  example  but you cvan check

http://www.cs.um.edu.mt/~hzarb/CSM201/notes/lecture13/node24.html
0

LVL 3

Expert Comment

another exaple and 'manuals'

http://www-iiuf.unifr.ch/idp/applications/bison.html

check here the infix notation calculator: calc (23.0)

ps: remember bison is the GNU equivalent of yacc.
0

LVL 5

Author Comment

sorry, mkahlert,I want more complete sample code.Start from the start of a yacc program.

0

LVL 27

Expert Comment

>> Will give more points later.

Should give the point now! (to elfie)
0

Expert Comment

Very easy, it only recognizes this expression: "1+2", but it works.

Code:

%%

result: '1' '+' '2'
{ \$\$ = \$1 + \$3; }

%%

it parses that expression and gives to the "result" (\$\$), the value of the addition of '1' (\$1) and '2' (\$3). In this case, \$2 is '+'.

You must do now a mini-lex and a main, that can be defined in the yacc-file if you want... Anyway as mkahlert pointed, the idea is that the variables \$1,... represent the values of the respective position-field. In the example \$\$ = value of "result", and if we use a rule like this:

result : var '+' var

the variables \$1 and \$3 will have the value of each var, that is is you parse the string: 1+2, "result" will store the value 3 at the end of the parsing.

0

LVL 5

Author Comment

well how do you print the value of \$\$?

0

Accepted Solution

avigon earned 10 total points
You just put:

%%

result: '1' '+' '2'
{ \$\$ = \$1 + \$3;
printf("%d",\$\$);  }

%%

For example.
0

LVL 5

Author Comment

Ok,but what if I wanted to do this with a char? and is the one and two the first two of the tokens for that section or for the whole program. Thanks.

0

## Featured Post

### Suggested Solutions

This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The goal of this video is to provide viewers with basic examples to understand opening and writing to files in the C programming language.
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.