lex_by_file( FileName ) :-
get_input_from_file( FileName, TokenList ),
lex( TokenList, OutputList ),
%write_output( OutputList ), !.
maplist(writeln,OutputList),!.
%% atom_number(atom, number)
lex([],[]).
lex(['int' | T], ['TYPE: int' | R]) :- lex(T, R).
lex(['bool' | T], ['TYPE: bool'] | R) :- lex(T, R).
lex([',' | T], ['COMMA: ,'] | R) :- lex(T, R).
lex([X | T], [X | R]) :- lex(T, R).
bGV4X2J5X2ZpbGUoIEZpbGVOYW1lICkgOi0KCWdldF9pbnB1dF9mcm9tX2ZpbGUoIEZpbGVOYW1lLCBUb2tlbkxpc3QgKSwKCWxleCggVG9rZW5MaXN0LCBPdXRwdXRMaXN0ICksCgkld3JpdGVfb3V0cHV0KCBPdXRwdXRMaXN0ICksICEuCgltYXBsaXN0KHdyaXRlbG4sT3V0cHV0TGlzdCksIS4KCiUlIGF0b21fbnVtYmVyKGF0b20sIG51bWJlcikKbGV4KFtdLFtdKS4KbGV4KFsnaW50JyB8IFRdLCBbJ1RZUEU6IGludCcgfCBSXSkgOi0gIGxleChULCBSKS4KbGV4KFsnYm9vbCcgfCBUXSwgWydUWVBFOiBib29sJ10gfCBSKSA6LSBsZXgoVCwgUikuCmxleChbJywnIHwgVF0sIFsnQ09NTUE6ICwnXSB8IFIpIDotIGxleChULCBSKS4KbGV4KFtYIHwgVF0sIFtYIHwgUl0pIDotIGxleChULCBSKS4K
JXsKI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CgpGSUxFICpvdXRGaWxlOwolfQoKJSUKJnF1b3Q7Ly8mcXVvdDsuKiAgICAgIHsgLyogUmVtb3ZlIHNpbmdsZS1saW5lIGNvbW1lbnRzICovIH0KJnF1b3Q7LyomcXVvdDsoLnxcbikqPyZxdW90OyovJnF1b3Q7ICB7IC8qIFJlbW92ZSBtdWx0aS1saW5lIGNvbW1lbnRzICovIH0KLiAgICAgICAgICAgeyBmcHV0Yyh5eXRleHRbMF0sIG91dEZpbGUpOyB9ICAvLyBXcml0ZSBvdGhlciBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlCiUlCgppbnQgbWFpbigpIHsKICAgIEZJTEUgKmluRmlsZSA9IGZvcGVuKCZxdW90O2lucHV0LmMmcXVvdDssICZxdW90O3ImcXVvdDspOwogICAgb3V0RmlsZSA9IGZvcGVuKCZxdW90O291dC5jJnF1b3Q7LCAmcXVvdDt3JnF1b3Q7KTsKCiAgICBpZiAoIWluRmlsZSB8fCAhb3V0RmlsZSkgewogICAgICAgIHByaW50ZigmcXVvdDtFcnJvciBvcGVuaW5nIGZpbGVzIVxuJnF1b3Q7KTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICB5eWluID0gaW5GaWxlOwogICAgeXlsZXgoKTsgLy8gU3RhcnQgbGV4aWNhbCBhbmFseXNpcwoKICAgIGZjbG9zZShpbkZpbGUpOwogICAgZmNsb3NlKG91dEZpbGUpOwoKICAgIHByaW50ZigmcXVvdDtDb21tZW50cyByZW1vdmVkIHN1Y2Nlc3NmdWxseSEgQ2hlY2sgb3V0LmNcbiZxdW90Oyk7CgogICAgcmV0dXJuIDA7Cn0KCmludCB5eXdyYXAoKSB7CiAgICByZXR1cm4gMTsgLy8gRW5kIG9mIGlucHV0Cn0K
%{
#include <stdio.h>
FILE *outFile;
%}
%%
"//".* { /* Remove single-line comments */ }
"/*"(.|\n)*?"*/" { /* Remove multi-line comments */ }
. { fputc(yytext[0], outFile); } // Write other characters as they are
%%
int main() {
FILE *inFile = fopen("input.c", "r");
outFile = fopen("out.c", "w");
if (!inFile || !outFile) {
printf("Error opening files!\n");
return 1;
}
yyin = inFile;
yylex(); // Start lexical analysis
fclose(inFile);
fclose(outFile);
printf("Comments removed successfully! Check out.c\n");
return 0;
}
int yywrap() {
return 1; // End of input
}