VIBHU CD Files
VIBHU CD Files
Experiment No: 1
AIM: Write a Program to identify lexemes from a given program.
THEORY: A lexeme is a sequence of alphanumeric characters in a token. The term is used in
both the study of language and in the lexical analysis of computer program compilation. Lexemes
are part of the input stream from which tokens are identified.
PROGRAM:
#include <stdio.h>
main()
{
int i, n, token=1;
char str[50];
printf ("Enter the string: ");
gets(str);
n = strlen(str);
printf("\t");
for(i=0;i<n;i++)
{
if(str[i]!=' ')
{
printf("%c",str[i]);
}
else
{
token++;
printf("\n");
printf("\t");
}
}
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
printf("\n");
printf("Total number of token is : %d",token);
}
OUTPUT:
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
EXPERIMENT NO: 2
AIM: Write a program to identify and remove comment lines from a given program.
PROGRAM:
#include <stdio.h>
char main()
{
int i, n ,token=1;
char str[50];
gets(str);
n = strlen(str);
printf("\t");
for( i =0;i<n;i++)
{
if(str[i]!=' ' || (str[i]=="/" && str[i+1]=="/"))
{
printf("%c",str[i]);
}
else
{
token++;
printf("\n");
printf("\t");
}
}
printf("\n");
printf("total number of token is : %d",token);
}
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
OUTPUT:
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
EXPERIMENT NO: 3
AIM: Write a program to print different tokens such as Keywords, Operators, Special Symbols
and Variables from a given program.
PROGRAM:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
bool isDelimiter(char ch)
{
if (ch == ' ' || ch == '+' || ch == '-' || ch == '*' ||
ch == '/' || ch == ',' || ch == ';' || ch == '>' ||
ch == '<' || ch == '=' || ch == '(' || ch == ')' ||
ch == '[' || ch == ']' || ch == '{' || ch == '}')
return (true);
return (false);
}
bool isOperator(char ch)
{
if (ch == '+' || ch == '-' || ch == '*' ||
ch == '/' || ch == '>' || ch == '<' ||
ch == '=')
return (true);
return (false);
}
bool validIdentifier(char* str)
{
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
if (str[0] == '0' || str[0] == '1' || str[0] == '2' ||
str[0] == '3' || str[0] == '4' || str[0] == '5' ||
str[0] == '6' || str[0] == '7' || str[0] == '8' ||
str[0] == '9' || isDelimiter(str[0]) == true)
return (false);
return (true);
}bool isKeyword(char* str)
{
if (!strcmp(str, "if") || !strcmp(str, "else") ||
!strcmp(str, "while") || !strcmp(str, "do") ||
!strcmp(str, "break") ||
!strcmp(str, "continue") || !strcmp(str, "int")
|| !strcmp(str, "double") || !strcmp(str, "float")
|| !strcmp(str, "return") || !strcmp(str, "char")
|| !strcmp(str, "case") || !strcmp(str, "char")
|| !strcmp(str, "sizeof") || !strcmp(str, "long")
|| !strcmp(str, "short") || !strcmp(str, "typedef")
|| !strcmp(str, "switch") || !strcmp(str, "unsigned")
|| !strcmp(str, "void") || !strcmp(str, "static")
|| !strcmp(str, "struct") || !strcmp(str, "goto"))
return (true);
return (false);
}bool isInteger(char* str)
{
int i, len = strlen(str);
if (len == 0)
return (false);
for (i = 0; i < len; i++) {
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
if (str[i] != '0' && str[i] != '1' && str[i] != '2'
&& str[i] != '3' && str[i] != '4' && str[i] != '5'
&& str[i] != '6' && str[i] != '7' && str[i] != '8'
&& str[i] != '9' || (str[i] == '-' && i > 0))
return (false);
}return (true);
}
bool isRealNumber(char* str)
{
int i, len = strlen(str);
bool hasDecimal = false;
if (len == 0)
return (false);
for (i = 0; i < len; i++) {
if (str[i] != '0' && str[i] != '1' && str[i] != '2'
&& str[i] != '3' && str[i] != '4' && str[i] != '5'
&& str[i] != '6' && str[i] != '7' && str[i] != '8'
&& str[i] != '9' && str[i] != '.' ||
(str[i] == '-' && i > 0))
return (false);
if (str[i] == '.')
hasDecimal = true;
}
return (hasDecimal);
}
char* subString(char* str, int left, int right)
{
int i;
Name: SAUTRAMANI VIBHUTI Admission NO : 2020b0101128
Roll No: 2000320100152 Branch & Section: CSE-C
char* subStr = (char*)malloc(
sizeof(char) * (right - left + 2));
for (i = left; i <= right; i++)
subStr[i - left] = str[i];
subStr[right - left + 1] = '\0';
return (subStr);
}
void parse(char* str)
{
int left = 0, right = 0;
int len = strlen(str);
while (right <= len && left <= right) {
if (isDelimiter(str[right]) == false)
right++;
if (isDelimiter(str[right]) == true && left == right) {
if (isOperator(str[right]) == true)
printf("'%c' IS AN OPERATOR\n", str[right]);
right++;
left = right;
} else if (isDelimiter(str[right]) == true && left != right
|| (right == len && left != right)) {
char* subStr = subString(str, left, right - 1);
if (isKeyword(subStr) == true)
printf("'%s' IS A KEYWORD\n", subStr);
OUTPUT:
Name: VIVEK KUMAR SAROJ Admission NO : 2020b0101018
Roll No: 2000320100194 Branch & Section: CSE-C
EXPERIMENT NO: 4
AIM: Write a program to remove redundant spaces, tabs and new lines from a given program.
OUTPUT: