Difference between revisions of "Fall 2021: System Programming Lab"

From MKWiki
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
* LEX & YACC TUTORIAL by Tom Niemann [https://www.epaperpress.com/lexandyacc/index.html]
 
* LEX & YACC TUTORIAL by Tom Niemann [https://www.epaperpress.com/lexandyacc/index.html]
 
* Lex on Windows [http://www.surajgaikwad.com/2013/10/compile-lex-and-yacc-progs-on-windows.html]
 
* Lex on Windows [http://www.surajgaikwad.com/2013/10/compile-lex-and-yacc-progs-on-windows.html]
 +
* YACC tutorial on [https://www.geeksforgeeks.org/introduction-to-yacc/?ref=rp geeksforgeeks]
  
 
== '''Lab 1: Getting Started''' ( week of 02<sup>nd</sup> August 2021 ) ==
 
== '''Lab 1: Getting Started''' ( week of 02<sup>nd</sup> August 2021 ) ==
Line 49: Line 50:
 
|-
 
|-
 
| 2 || Write a Lex program that distinguishes keywords, integers, floats, identifiers, operators, and comments in any simple programming language. || Lab Exercise No. 4 ||  
 
| 2 || Write a Lex program that distinguishes keywords, integers, floats, identifiers, operators, and comments in any simple programming language. || Lab Exercise No. 4 ||  
 +
|}
 +
 +
== '''Lab 4 and Lab 5:''' ( week of 06<sup>th</sup> &  13<sup>th</sup>September 2021 ) ==
 +
{| class="wikitable" style="text-align: left; width: 100%";
 +
|-
 +
! Q. NO. 
 +
! Program 
 +
! Lab Exercise No. 
 +
! Remarks
 +
|-
 +
| style="width: 8%"  | 1
 +
| style="width: 60%" | Write a Lex program to count the number of identifiers in a c file.
 +
| style="width: 15%" | Lab Exercise No. 5 ||
 +
|-
 +
| 2 || Write a Lex program to count the number of words ,characters ,blank spaces and lines in c file. || Lab Exercise No. 6 ||
 +
|}
 +
 +
== '''Lab 6:''' ( week of 20<sup>th</sup> September 2021 ) ==
 +
{| class="wikitable" style="text-align: left; width: 100%";
 +
|-
 +
! Q. NO. 
 +
! Program 
 +
! Lab Exercise No. 
 +
! Remarks
 +
|-
 +
| style="width: 8%"  | 1
 +
| style="width: 60%" | Write a Lex specification program that generates a C program which takes a string “abcd” and prints the following output:<br>
 +
abcd <br>
 +
abc<br>
 +
ab<br>
 +
a
 +
| style="width: 15%" | Lab Exercise No. 7 ||
 +
|-
 +
| 2 || Write a Lex program to recognize a valid arithmetic expression. || Lab Exercise No. 8 ||
 +
|}
 +
 +
== '''Lab 7: Last week of Lex''' ( week of 27<sup>th</sup> September 2021 ) ==
 +
{| class="wikitable" style="text-align: left; width: 100%";
 +
|-
 +
! Q. NO. 
 +
! Program 
 +
! Lab Exercise No. 
 +
! Remarks
 +
|-
 +
| style="width: 8%"  | 
 +
| style="width: 60%" |  Complete all the Lex programs (1-8)
 +
| style="width: 15%" |  ||
 +
|}
 +
 +
== '''YACC Programs''' ==
 +
{| class="wikitable" style="text-align: left; width: 100%";
 +
|-
 +
! Q. NO. 
 +
! Program 
 +
! Lab Exercise No. 
 +
! Remarks
 +
|-
 +
| style="width: 8%"  | 1
 +
| style="width: 60%" | A Program in YACC to evaluate an expression (simple calculator program for addition and subtraction, multiplication, division).
 +
| style="width: 15%" | Lab Exercise No. 11 ||
 +
|-
 +
| 2 || Write a YACC program to find the validity of a given expression (for operators + - * and /). || Lab Exercise No. 9 ||
 +
|-
 +
| 3 || A Program in YACC which recognizes a valid variable which starts with letter followed by a digit. The letter should be in lowercase only.. || Lab Exercise No. 10 ||
 +
|-
 +
| 4 || Program in YACC to recognize the strings “ab”, “aabb”, ”aaabbb”,… of the language (𝑎<sup>𝑛</sup> 𝑏<sup>𝑛</sup> ,n>=1). || Lab Exercise No. 12 ||
 +
|-
 +
| 5 || Program in YACC to recognize the language (𝑎<sup>𝑛</sup> 𝑏 , n>=10). (Output to say input is valid or not). || Lab Exercise No. 13 ||
 
|}
 
|}

Latest revision as of 12:50, 2 November 2021

Resources

  • An introductory tutorial on Lex.
  • LEX & YACC TUTORIAL by Tom Niemann [1]
  • Lex on Windows [2]
  • YACC tutorial on geeksforgeeks

Lab 1: Getting Started ( week of 02nd August 2021 )

Q. NO. Program Lab Exercise No. Remarks
1 Write a Lex program to count the number of lines and characters in the input file. Lab Exercise No. 1
2 Write a Lex Program to count number of words. Practice Set No. 1(1)
3 Write a Lex Program to count the number of lines, tabs and spaces used in the input. Practice Set No. 1(2)
4 Write a Lex Program to count the number of lines, words, small letters, capital letters, digits, special characters, and finally all characters. Practice Set No. 1(3)

Lab 2: ( week of 09th August 2021 )

Q. NO. Program Lab Exercise No. Remarks
1 Write a Lex program that implements the Caesar cipher. It replaces every letter with the one three letters after(right shift) in an alphabetical order, wrapping around at Z e.g a is replaced by d ,b by e ,and so on z by c. Lab Exercise No. 2 Read about Caesar Cipher from [3]

Lab 3: ( week of 23rd August 2021 )

Q. NO. Program Lab Exercise No. Remarks
1 Write a Lex program that finds the longest word (defined as a contiguous string of upper and lower case letters) in the input. Lab Exercise No. 3
2 Write a Lex program that distinguishes keywords, integers, floats, identifiers, operators, and comments in any simple programming language. Lab Exercise No. 4

Lab 4 and Lab 5: ( week of 06th & 13thSeptember 2021 )

Q. NO. Program Lab Exercise No. Remarks
1 Write a Lex program to count the number of identifiers in a c file. Lab Exercise No. 5
2 Write a Lex program to count the number of words ,characters ,blank spaces and lines in c file. Lab Exercise No. 6

Lab 6: ( week of 20th September 2021 )

Q. NO. Program Lab Exercise No. Remarks
1 Write a Lex specification program that generates a C program which takes a string “abcd” and prints the following output:

abcd
abc
ab
a

Lab Exercise No. 7
2 Write a Lex program to recognize a valid arithmetic expression. Lab Exercise No. 8

Lab 7: Last week of Lex ( week of 27th September 2021 )

Q. NO. Program Lab Exercise No. Remarks
Complete all the Lex programs (1-8)

YACC Programs

Q. NO. Program Lab Exercise No. Remarks
1 A Program in YACC to evaluate an expression (simple calculator program for addition and subtraction, multiplication, division). Lab Exercise No. 11
2 Write a YACC program to find the validity of a given expression (for operators + - * and /). Lab Exercise No. 9
3 A Program in YACC which recognizes a valid variable which starts with letter followed by a digit. The letter should be in lowercase only.. Lab Exercise No. 10
4 Program in YACC to recognize the strings “ab”, “aabb”, ”aaabbb”,… of the language (𝑎𝑛 𝑏𝑛 ,n>=1). Lab Exercise No. 12
5 Program in YACC to recognize the language (𝑎𝑛 𝑏 , n>=10). (Output to say input is valid or not). Lab Exercise No. 13