Difference between revisions of "Fall 2020: System Programming Lab"
Jump to navigation
Jump to search
(80 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | == ''' | + | ==''' Resources'''== |
− | * | + | * An introductory tutorial on [[Lex Tutorial|Lex]]. |
+ | * LEX & YACC TUTORIAL by Tom Niemann [https://www.epaperpress.com/lexandyacc/index.html] | ||
+ | * Lex Basics on javatpoint [https://www.javatpoint.com/lex] | ||
+ | * Lex on Windows [http://www.surajgaikwad.com/2013/10/compile-lex-and-yacc-progs-on-windows.html] | ||
+ | == '''Lab 1: Getting Started''' ( week of 10<sup>th</sup> August 2020 ) == | ||
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 10: | Line 14: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | | + | | style="width: 60%" | Write a Lex Program to count number of words |
− | | style="width: 15%" | | + | | style="width: 15%" | Practice Set No. 1(1) || |
− | | | ||
|- | |- | ||
− | | 2 || | + | | 2 || Write a Lex program to count the number of lines and characters in the input file. || Lab Exercise No. 1 || |
|- | |- | ||
− | | 3 || | + | | 3 || Write a Lex Program to count the number of lines, tabs and spaces used in the input. || Practice Set No. 1(2) || |
|- | |- | ||
− | | 4 || | + | | 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) || |
− | |||
− | |||
− | |||
− | |||
− | || Practice Set No. | ||
|} | |} | ||
− | == '''Lab 2 | + | == '''Lab 2-3''' ( week of 17<sup>th</sup> & 24<sup>th</sup> August 2020 ) == |
− | |||
− | |||
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 37: | Line 33: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | | + | | style="width: 60%" | Write a Lex program to count the number of vowels and consonants in a given string |
− | | style="width: 15%" | Practice Set No. | + | | style="width: 15%" | Practice Set No. 2(1) || |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | 2 || 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 ,d by e ,and so on z by c. || Lab Exercise No. 2 || Read about Caesar Cipher from [https://en.wikipedia.org/wiki/Caesar_cipher] |
|} | |} | ||
− | == '''Lab | + | == '''Lab 4''' ( week of 31<sup>st</sup> August 2020 ) == |
− | |||
− | |||
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 61: | Line 48: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | | + | | style="width: 60%" | Write a Lex program that finds the longest word (defined as a contiguous string of upper and lower case letters) in the input. |
− | | style="width: 15%" | Lab Exercise No. | + | | style="width: 15%" | Lab Exercise No. 3 || |
− | | | ||
|- | |- | ||
− | | 2 || | + | | 2 || Write a Lex program that distinguishes keywords, integers, floats, identifiers, operators, and comments in any simple programming language. || Lab Exercise No. 4 || |
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
− | == '''Lab | + | == '''Lab 5-6''' ( week of 7<sup>th</sup> & 14<sup>th</sup> September 2020 ) == |
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 81: | Line 63: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | | + | | style="width: 60%" | Write a Lex program to count the number of identifiers in a c file. |
− | + | | style="width: 15%" | Lab Exercise No. 5 || | |
− | |||
− | |||
− | |||
− | | style="width: 15%" | | ||
− | | | ||
|- | |- | ||
− | | 2 | + | | 2 || Write a Lex program to count the number of words ,characters ,blank spaces and lines in c file. || Lab Exercise No. 6 || |
− | |||
− | |||
|} | |} | ||
− | == '''Lab | + | == '''Lab 7-8''' ( week of 21<sup>st</sup> & 28<sup>th</sup> September 2020 ) == |
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 103: | Line 78: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | | + | | 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 || | |
− | | style="width: 15%" | | ||
− | | | ||
|- | |- | ||
− | | 2 | + | | 2 || Write a Lex program to recognize a valid arithmetic expression. || Lab Exercise No. 8 || |
− | |||
− | |||
|} | |} | ||
− | == '''Lab | + | == '''Lab 9''' ( week of 5<sup>th</sup> October 2020 ) == |
− | |||
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 126: | Line 96: | ||
! Remarks | ! Remarks | ||
|- | |- | ||
− | | | + | | colspan="4" style="text-align: center;| Complete all the Lex programs i.e., '''Lab Exercise No.1 - Lab Exercise No.8''' |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
− | == '''Lab | + | == '''Lab 10-11''' ( week of 2<sup>nd</sup> & 9<sup>th</sup> November 2020 ) == |
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 145: | Line 108: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | Write a program | + | | style="width: 60%" | Write a Program in YACC to evaluate an expression (simple calculator program for addition, subtraction, multiplication, and division). |
− | + | | style="width: 15%" | Lab Exercise No. 10 || | |
− | |||
− | |||
− | | style="width: 15%" | | ||
− | | | ||
|- | |- | ||
− | | 2 || Write a program to | + | | 2 || Write a YACC program to find the validity of a given expression( for operator + - * and / ). 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. 9 || |
− | |||
− | |||
|} | |} | ||
− | == '''Lab | + | == '''Final Lab''' == |
− | |||
{| class="wikitable" style="text-align: left; width: 100%"; | {| class="wikitable" style="text-align: left; width: 100%"; | ||
|- | |- | ||
Line 167: | Line 123: | ||
|- | |- | ||
| style="width: 8%" | 1 | | style="width: 8%" | 1 | ||
− | | style="width: 60%" | | + | | style="width: 60%" | Program in YACC to recognize the string "abbb‟, "ab‟, "a‟ of the langauge (a<sup>n</sup>b<sup>n</sup>, n>=1). |
− | + | | style="width: 15%" | Lab Exercise No. 11 || | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | style="width: 15%" | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | | | ||
− | |||
− | |||
|- | |- | ||
− | | | + | | 2 || Program in YACC to recognize the language (a<sup>n</sup>b , n>=10). (output to say input is valid or not) || Lab Exercise No. 12 || |
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | | | ||
|} | |} |
Latest revision as of 01:10, 16 November 2020
Contents
- 1 Resources
- 2 Lab 1: Getting Started ( week of 10th August 2020 )
- 3 Lab 2-3 ( week of 17th & 24th August 2020 )
- 4 Lab 4 ( week of 31st August 2020 )
- 5 Lab 5-6 ( week of 7th & 14th September 2020 )
- 6 Lab 7-8 ( week of 21st & 28th September 2020 )
- 7 Lab 9 ( week of 5th October 2020 )
- 8 Lab 10-11 ( week of 2nd & 9th November 2020 )
- 9 Final Lab
Resources
- An introductory tutorial on Lex.
- LEX & YACC TUTORIAL by Tom Niemann [1]
- Lex Basics on javatpoint [2]
- Lex on Windows [3]
Lab 1: Getting Started ( week of 10th August 2020 )
Q. NO. | Program | Lab Exercise No. | Remarks |
---|---|---|---|
1 | Write a Lex Program to count number of words | Practice Set No. 1(1) | |
2 | Write a Lex program to count the number of lines and characters in the input file. | Lab Exercise No. 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-3 ( week of 17th & 24th August 2020 )
Q. NO. | Program | Lab Exercise No. | Remarks |
---|---|---|---|
1 | Write a Lex program to count the number of vowels and consonants in a given string | Practice Set No. 2(1) | |
2 | 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 ,d by e ,and so on z by c. | Lab Exercise No. 2 | Read about Caesar Cipher from [4] |
Lab 4 ( week of 31st August 2020 )
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 5-6 ( week of 7th & 14th September 2020 )
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 7-8 ( week of 21st & 28th September 2020 )
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 |
Lab Exercise No. 7 | |
2 | Write a Lex program to recognize a valid arithmetic expression. | Lab Exercise No. 8 |
Lab 9 ( week of 5th October 2020 )
Q. NO. | Program | Lab Exercise No. | Remarks |
---|---|---|---|
Complete all the Lex programs i.e., Lab Exercise No.1 - Lab Exercise No.8 |
Lab 10-11 ( week of 2nd & 9th November 2020 )
Q. NO. | Program | Lab Exercise No. | Remarks |
---|---|---|---|
1 | Write a Program in YACC to evaluate an expression (simple calculator program for addition, subtraction, multiplication, and division). | Lab Exercise No. 10 | |
2 | Write a YACC program to find the validity of a given expression( for operator + - * and / ). 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. 9 |
Final Lab
Q. NO. | Program | Lab Exercise No. | Remarks |
---|---|---|---|
1 | Program in YACC to recognize the string "abbb‟, "ab‟, "a‟ of the langauge (anbn, n>=1). | Lab Exercise No. 11 | |
2 | Program in YACC to recognize the language (anb , n>=10). (output to say input is valid or not) | Lab Exercise No. 12 |