954,500 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

pls heeeeeeeeelp its urgent.

Hi
I got one assignment to submit within 2 days.I am suppose to build scanner(lexicle analyser) in c,which will take input from standard input stream and print its class.
for example if I input + it will displya "plus",- "minus"
I have to run this program in unix environment.
program will have main function which will accept character from input stream
and call scanner function to get its type.
I have to use getchar(),putcar() and ungetc() functions for this.
I dont know how to use unggetc function withh stdin(standard input).
there will be buffer which will be difeined globally and can be accessed by all the functions.I also want to know how to compile the and run the file in unix enviornment.
I have lost thhe touch with 'c'.Didntdo it from last 2 years.

code will be somewhat like this
main()
{
char msg [][]={"plus","minus"};....(dont know howto use this,gives error char const too long)int code;
char next;
next=getchar();
putchar(next);
ungetc(next);
code=scanner();
while(code!=EOF)
{
print msg;
print buffer;
code=scanner();
}

int scanner()
{
int code;
char next;
if(next=='+')
{
code=get_plus();
}elseif(next=='-')
{code=get_minus();}
return code;
}

vrush
Newbie Poster
2 posts since Oct 2004
Reputation Points: 10
Solved Threads: 0
 

Nope, sorry I dont know.

Young Teck 06
Posting Pro in Training
440 posts since Sep 2004
Reputation Points: 12
Solved Threads: 0
 

Please don't name future threads something like this. We don't really care if your issue is urgent to you or not. I don't mean to be rude to you, but you stating your issue is urgent is rude to the forum, and the other members that have been waiting for help.

If you'll PM me a more appropriate title, I'll change it to something else. But again, please don't be so rude in the future.

alc6379
Cookie... That's it
Team Colleague
2,820 posts since Dec 2003
Reputation Points: 186
Solved Threads: 147
 

your char msg [][] is an array of arrays of char, but the way you initialize it is as an array of char*'s, so how about:

char *msg[] = {"plus","minus"};

Your scanner routine never sets 'next' to anything, so it would be random. Maybe you meant it to be a parameter?

There's a bunch of other stuff, but this is pseudocode pretty devoid of design, so it's hard to critique.

Chainsaw
Posting Pro in Training
436 posts since Jun 2004
Reputation Points: 36
Solved Threads: 11
 

>so it's hard to critique
A critique is not difficult at all: "Your code is crap, post something that actually uses C--not whatever it is you think is C--and we'll help." Simple. :)

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

Thanks Chainsaw I will try declaring it that way.and sorry alc6379.

vrush
Newbie Poster
2 posts since Oct 2004
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You