#include <stdio.h>
#include <string.h>
#include <ctype.h>
void lexer( char * input) {
int i = 0 ;
while ( i < len) {
i++;
continue ;
}
if ( i + 1 < len) {
char two[ 3 ] = { input[ i] , input[ i+ 1 ] , '\0 ' } ;
printf ( "OPERATOR: %s\n " , two
) ; i += 2 ;
continue ;
}
}
if ( input[ i] == '+' || input[ i] == '-' || input[ i] == '*' ||
input[ i] == '/' || input[ i] == '=' || input[ i] == '>' ||
input[ i] == '<' || input[ i] == '!' ) {
printf ( "OPERATOR: %c\n " , input
[ i
] ) ; i++;
continue ;
}
i++;
}
}
int main( ) {
char input[ ] = "x += 5; y -= 2; z *= 3; w /= 4; a == b; c != d; e >= f; g <= h; i = j + k - l * m / n > o < p ! q" ;
printf ( "Testing Lexer with Hardcoded Input:\n " ) ; lexer( input) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+Cgp2b2lkIGxleGVyKGNoYXIgKmlucHV0KSB7CiAgICBpbnQgaSA9IDA7CiAgICBpbnQgbGVuID0gc3RybGVuKGlucHV0KTsKCiAgICBwcmludGYoIlxuVG9rZW5zIEZvdW5kOlxuIik7CgogICAgd2hpbGUgKGkgPCBsZW4pIHsKCiAgICAgICAgaWYgKGlzc3BhY2UoaW5wdXRbaV0pKSB7CiAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoaSArIDEgPCBsZW4pIHsKICAgICAgICAgICAgY2hhciB0d29bM10gPSB7aW5wdXRbaV0sIGlucHV0W2krMV0sICdcMCd9OwoKICAgICAgICAgICAgaWYgKHN0cmNtcCh0d28sICIrPSIpID09IDAgfHwgc3RyY21wKHR3bywgIi09IikgPT0gMCB8fAogICAgICAgICAgICAgICAgc3RyY21wKHR3bywgIi89IikgPT0gMCB8fCBzdHJjbXAodHdvLCAiKj0iKSA9PSAwIHx8CiAgICAgICAgICAgICAgICBzdHJjbXAodHdvLCAiPj0iKSA9PSAwIHx8IHN0cmNtcCh0d28sICI8PSIpID09IDAgfHwKICAgICAgICAgICAgICAgIHN0cmNtcCh0d28sICI9PSIpID09IDAgfHwgc3RyY21wKHR3bywgIiE9IikgPT0gMCkgewoKICAgICAgICAgICAgICAgIHByaW50ZigiT1BFUkFUT1I6ICVzXG4iLCB0d28pOwogICAgICAgICAgICAgICAgaSArPSAyOyAgCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlucHV0W2ldID09ICcrJyB8fCBpbnB1dFtpXSA9PSAnLScgfHwgaW5wdXRbaV0gPT0gJyonIHx8CiAgICAgICAgICAgIGlucHV0W2ldID09ICcvJyB8fCBpbnB1dFtpXSA9PSAnPScgfHwgaW5wdXRbaV0gPT0gJz4nIHx8CiAgICAgICAgICAgIGlucHV0W2ldID09ICc8JyB8fCBpbnB1dFtpXSA9PSAnIScpIHsKCiAgICAgICAgICAgIHByaW50ZigiT1BFUkFUT1I6ICVjXG4iLCBpbnB1dFtpXSk7CiAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBpKys7CiAgICB9Cn0KCmludCBtYWluKCkgewogICBjaGFyIGlucHV0W10gPSAieCArPSA1OyB5IC09IDI7IHogKj0gMzsgdyAvPSA0OyBhID09IGI7IGMgIT0gZDsgZSA+PSBmOyBnIDw9IGg7IGkgPSBqICsgayAtIGwgKiBtIC8gbiA+IG8gPCBwICEgcSI7CiAgICAgIAogICAgcHJpbnRmKCJUZXN0aW5nIExleGVyIHdpdGggSGFyZGNvZGVkIElucHV0OlxuIik7CiAgICBwcmludGYoIiVzXG4iLCBpbnB1dCk7CiAgICBsZXhlcihpbnB1dCk7CiAgICByZXR1cm4gMDsKfQ==