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;
}

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.

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.

>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. :)

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

This article has been dead for over six months. Start a new discussion instead.