Print_tokens and Print_tokens2

### Program Information

Name: Print_tokens and Print_tokens2
Domain: Algorithm
Functionality: Read a sequence of strings from a file, group these strings into tokens, identify token categories and print out all the tokens and their categories in order.
Input: The input files in source test case and follow-up test case are denoted as $I_s$ and $I_f$, respectively.
Output: Their respective outputs are denoted as $O_s$ and $O_f$. Each element in $O_s$ and $O_f$ has two attributes: the token category and the string of this token.

#### Reference

 Metamorphic slice: An application in spectrum-based fault localization https://doi.org/10.1016/j.infsof.2012.08.008

### MR Information

#### MR1------ Changing lower case into upper case

Description:
Property: In this MR, $I_f$ is constructed from $I_s$ by changing all characters in $I_s$ with lower cases into their upper cases. Since $print_tokens$ attempts to identify tokens and their categories, we have the size of $O_f$ equal to the size of $O_s$ . Besides, since all ‘‘keywords’’ are case-sensitive, all the elements with categories of ‘‘keyword’’ in $O_s$ become ‘‘identifier’’ in $O_f$. For the non-keyword elements of $O_s$ , the corresponding categories remain the same in $O_f$.
Source input:
Source output:
Follow-up input:
Follow-up output:
Input relation:
Output relation:
Pattern:

Description:
Property: In this MR, $I_f$ is constructed from $I_s$ by deleting all comments in $I_s$ . Then, we have $O_s = O_f$.
Source input:
Source output:
Follow-up input:
Follow-up output:
Input relation:
Output relation:
Pattern:

Description:
Property: In this MR, $I_f$ is constructed from $I_s$ by inserting the comment symbol ‘‘;’’ at the very beginning of some arbitrarily chosen lines. Then, we have $O_f \subseteq O_s$
Source input:
Source output:
Follow-up input:
Follow-up output:
Input relation:
Output relation:
Pattern: