#include <stdio.h>
#include <string.h>
#include <ctype.h>
void analyzeTokens(const char input[]) {
for (size_t i
= 0; i
< strlen(input
); ++i
) { char currentChar = input[i];
// 1. Skip whitespace
if (isspace((unsigned char)currentChar
)) { continue;
}
// 2. Check for potential operator characters
if (currentChar == '+' || currentChar == '-' || currentChar == '*' ||
currentChar == '/' || currentChar == '>' || currentChar == '<' ||
currentChar == '=' || currentChar == '!') {
// 3. The Lookahead: Check if the NEXT character is '='
if (i
+ 1 < strlen(input
) && input
[i
+ 1] == '=') { // It's a two-character operator
printf("OPERATOR: %c=\n", currentChar
); i++; // IMPORTANT: Increment 'i' again to consume the '='
} else {
// It's just a single-character operator
printf("OPERATOR: %c\n", currentChar
); }
}
// Note: You would add 'else if' blocks here to handle letters (identifiers)
// and numbers (literals) if expanding the analyzer further.
}
}
int main() {
char codeSnippet[1000];
printf("Enter a simple C code snippet: "); fgets(codeSnippet
, sizeof(codeSnippet
), stdin
);
analyzeTokens(codeSnippet);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+Cgp2b2lkIGFuYWx5emVUb2tlbnMoY29uc3QgY2hhciBpbnB1dFtdKSB7CiAgICBwcmludGYoIlxuVG9rZW5zIEZvdW5kOlxuIik7CgogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oaW5wdXQpOyArK2kpIHsKICAgICAgICBjaGFyIGN1cnJlbnRDaGFyID0gaW5wdXRbaV07CgogICAgICAgIC8vIDEuIFNraXAgd2hpdGVzcGFjZQogICAgICAgIGlmIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKWN1cnJlbnRDaGFyKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vIDIuIENoZWNrIGZvciBwb3RlbnRpYWwgb3BlcmF0b3IgY2hhcmFjdGVycwogICAgICAgIGlmIChjdXJyZW50Q2hhciA9PSAnKycgfHwgY3VycmVudENoYXIgPT0gJy0nIHx8IGN1cnJlbnRDaGFyID09ICcqJyB8fAogICAgICAgICAgICBjdXJyZW50Q2hhciA9PSAnLycgfHwgY3VycmVudENoYXIgPT0gJz4nIHx8IGN1cnJlbnRDaGFyID09ICc8JyB8fAogICAgICAgICAgICBjdXJyZW50Q2hhciA9PSAnPScgfHwgY3VycmVudENoYXIgPT0gJyEnKSB7CgogICAgICAgICAgICAvLyAzLiBUaGUgTG9va2FoZWFkOiBDaGVjayBpZiB0aGUgTkVYVCBjaGFyYWN0ZXIgaXMgJz0nCiAgICAgICAgICAgIGlmIChpICsgMSA8IHN0cmxlbihpbnB1dCkgJiYgaW5wdXRbaSArIDFdID09ICc9JykgewogICAgICAgICAgICAgICAgLy8gSXQncyBhIHR3by1jaGFyYWN0ZXIgb3BlcmF0b3IKICAgICAgICAgICAgICAgIHByaW50ZigiT1BFUkFUT1I6ICVjPVxuIiwgY3VycmVudENoYXIpOwogICAgICAgICAgICAgICAgaSsrOyAvLyBJTVBPUlRBTlQ6IEluY3JlbWVudCAnaScgYWdhaW4gdG8gY29uc3VtZSB0aGUgJz0nCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBJdCdzIGp1c3QgYSBzaW5nbGUtY2hhcmFjdGVyIG9wZXJhdG9yCiAgICAgICAgICAgICAgICBwcmludGYoIk9QRVJBVE9SOiAlY1xuIiwgY3VycmVudENoYXIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBOb3RlOiBZb3Ugd291bGQgYWRkICdlbHNlIGlmJyBibG9ja3MgaGVyZSB0byBoYW5kbGUgbGV0dGVycyAoaWRlbnRpZmllcnMpCiAgICAgICAgLy8gYW5kIG51bWJlcnMgKGxpdGVyYWxzKSBpZiBleHBhbmRpbmcgdGhlIGFuYWx5emVyIGZ1cnRoZXIuCiAgICB9Cn0KCmludCBtYWluKCkgewogICAgY2hhciBjb2RlU25pcHBldFsxMDAwXTsKCiAgICBwcmludGYoIkVudGVyIGEgc2ltcGxlIEMgY29kZSBzbmlwcGV0OiAiKTsKICAgIGZnZXRzKGNvZGVTbmlwcGV0LCBzaXplb2YoY29kZVNuaXBwZXQpLCBzdGRpbik7CgogICAgYW5hbHl6ZVRva2Vucyhjb2RlU25pcHBldCk7CgogICAgcmV0dXJuIDA7Cn0=