/*
Author: Brianna Scott
Date: March 25th, 2017
Purpose: Write a small program in the NEW LANGUAGE you're learning that illustrates all FIVE of these concepts.
Insert comments in the code that point out to me where each of these concepts is illustrated.
*/
import java.util.*;
import java.lang.*;
import java.io.*;
class Main
{
{
//Declare The variables
char parenL = '(';
char parenR = ')';
char multi = '*';
char add = '+';
char[] expr;
expr = new char[100];
int i = 0;
//ask for expression input
System.
out.
println("Please enter an expression \n");
//begin the giant for loop that searches for the tokens and lexemes
for (i = 0; expr[i] != null; i++)
{
//If the input is greater than a but less than z
//Look-ahead to the next character in the input stream. If it’s letter or digit, then you have a 3-character ID.
if (expr[i] >= 'a' && expr[i] <= 'z')
{
System.
out.
println(" The lexeme is " + expr
[i
]); System.
out.
println(" and Token is <ID> that only prints lowercase only. \n"); }
//Left parenthesis
else if (expr[i] == parenL)
{
System.
out.
println(" The lexeme is " + expr
[i
]); System.
out.
println(" and Token is parenL.\n"); }
//right parenthesis
else if (expr[i] == parenR)
{
System.
out.
println(" The lexeme is " + expr
[i
]); System.
out.
println(" and Token is parenR.\n"); }
//add operator
else if (expr[i] == add)
{
System.
out.
println(" The lexeme is " + expr
[i
]); System.
out.
println(" and Token is add.\n"); }
//multiplication operator
else if (expr[i] == multi)
{
System.
out.
println(" The lexeme is " + expr
[i
]); System.
out.
println(" and Token is multi.\n"); }
//else if it is invalid, print that it is.
else
{
if (expr[i] != 'a' && expr[i] != 'z')
{
System.
out.
println("ERROR.\n"); System.
out.
println("The lexeme " + expr
[i
]); System.
out.
println(" is invalid.\n");
}
//If the expression is between an uppercase A and Z
if (expr[i] >= 'A' && expr[i] <= 'Z')
{
//check to see if it is an uppercase letter
System.
out.
println("The program will now check to see if the expression is valid.\n"); System.
out.
println(" If the expression contains a uppercase, it will print a 1 (True). Else, It will return a 0 (False).\n");
{
System.
out.
println(" The lexeme is not valid because it is uppercase. The correct version will print in ASCII.\n"); System.
out.
println("The correct version is: \n" + Character.
toLowerCase(expr
[i
])); System.
out.
println(" The program will now break.\n"); break;
}
else
System.
out.
println("Error. Something is incorrect with this program.\n"); break;
}
}
}
}
}
LyoKQXV0aG9yOiBCcmlhbm5hIFNjb3R0CkRhdGU6IE1hcmNoIDI1dGgsIDIwMTcKUHVycG9zZTogV3JpdGUgYSBzbWFsbCBwcm9ncmFtIGluIHRoZSBORVcgTEFOR1VBR0UgeW91J3JlIGxlYXJuaW5nIHRoYXQgaWxsdXN0cmF0ZXMgYWxsIEZJVkUgb2YgdGhlc2UgY29uY2VwdHMuIAoJCSBJbnNlcnQgY29tbWVudHMgaW4gdGhlIGNvZGUgdGhhdCBwb2ludCBvdXQgdG8gbWUgd2hlcmUgZWFjaCBvZiB0aGVzZSBjb25jZXB0cyBpcyBpbGx1c3RyYXRlZC4KKi8KCmltcG9ydCBqYXZhLnV0aWwuKjsKaW1wb3J0IGphdmEubGFuZy4qOwppbXBvcnQgamF2YS5pby4qOwoKY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIHZvaWQgY3NjU2Nhbm5lcihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJLy9EZWNsYXJlIFRoZSB2YXJpYWJsZXMKCQljaGFyIHBhcmVuTCA9ICcoJzsgCgkJY2hhciBwYXJlblIgPSAnKSc7IAoJCWNoYXIgbXVsdGkgPSAnKic7IAoJCWNoYXIgYWRkID0gJysnOyAKCQljaGFyW10gZXhwcjsKCQlleHByID0gbmV3IGNoYXJbMTAwXTsKCQlpbnQgaSA9IDA7CgkKCS8vYXNrIGZvciBleHByZXNzaW9uIGlucHV0CgkJU3lzdGVtLm91dC5wcmludGxuKCJQbGVhc2UgZW50ZXIgYW4gZXhwcmVzc2lvbiBcbiIpOyAKCgkKCS8vYmVnaW4gdGhlIGdpYW50IGZvciBsb29wIHRoYXQgc2VhcmNoZXMgZm9yIHRoZSB0b2tlbnMgYW5kIGxleGVtZXMKCQlmb3IgKGkgPSAwOyBleHByW2ldICE9IG51bGw7IGkrKykgCgkJewoJCS8vSWYgdGhlIGlucHV0IGlzIGdyZWF0ZXIgdGhhbiBhIGJ1dCBsZXNzIHRoYW4gegoJCS8vTG9vay1haGVhZCB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0IHN0cmVhbS4gSWYgaXTigJlzIGxldHRlciBvciBkaWdpdCwgdGhlbiB5b3UgaGF2ZSBhIDMtY2hhcmFjdGVyIElELgoJCQkgaWYgKGV4cHJbaV0gPj0gJ2EnICYmIGV4cHJbaV0gPD0gJ3onKQoJCQkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgVGhlIGxleGVtZSBpcyAiICsgZXhwcltpXSk7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBhbmQgVG9rZW4gaXMgPElEPiB0aGF0IG9ubHkgcHJpbnRzIGxvd2VyY2FzZSBvbmx5LiBcbiIpOwoJCQkgfQoJCS8vTGVmdCBwYXJlbnRoZXNpcyAKCQkJZWxzZSBpZiAoZXhwcltpXSA9PSBwYXJlbkwpIAoJCQkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgVGhlIGxleGVtZSBpcyAiICsgZXhwcltpXSk7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBhbmQgVG9rZW4gaXMgcGFyZW5MLlxuIik7CgkJCSB9CgkJLy9yaWdodCBwYXJlbnRoZXNpcwoJCQllbHNlIGlmIChleHByW2ldID09IHBhcmVuUikgCgkJCSB7IAoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgVGhlIGxleGVtZSBpcyAiICsgZXhwcltpXSk7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBhbmQgVG9rZW4gaXMgcGFyZW5SLlxuIik7CgkJCSB9IAoJCS8vYWRkIG9wZXJhdG9yCgkJCWVsc2UgaWYgKGV4cHJbaV0gPT0gYWRkKSAKCQkJIHsgCgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBUaGUgbGV4ZW1lIGlzICIgKyBleHByW2ldKTsKCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiIGFuZCBUb2tlbiBpcyBhZGQuXG4iKTsgCgkJCSB9IAoJCS8vbXVsdGlwbGljYXRpb24gb3BlcmF0b3IKCQkJZWxzZSBpZiAoZXhwcltpXSA9PSBtdWx0aSkgCgkJCSB7IAoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgVGhlIGxleGVtZSBpcyAiICsgZXhwcltpXSk7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBhbmQgVG9rZW4gaXMgbXVsdGkuXG4iKTsKCQkJIH0KCQkvL2Vsc2UgaWYgaXQgaXMgaW52YWxpZCwgcHJpbnQgdGhhdCBpdCBpcy4KCQkJZWxzZSAgIAoJCQkJewoJCQkJCWlmIChleHByW2ldICE9ICdhJyAmJiBleHByW2ldICE9ICd6JykKCQkJCQkJewoJCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCJFUlJPUi5cbiIpOyAKCQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGhlIGxleGVtZSAiICsgZXhwcltpXSk7IAoJCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgaXMgaW52YWxpZC5cbiIpOyAKCQkJCQkJCQoJCQkJCQl9CgkJCQkvL0lmIHRoZSBleHByZXNzaW9uIGlzIGJldHdlZW4gYW4gdXBwZXJjYXNlIEEgYW5kIFoKCQkJCQlpZiAoZXhwcltpXSA+PSAnQScgJiYgZXhwcltpXSA8PSAnWicpIAoJCQkJCXsKCQkJCQkvL2NoZWNrIHRvIHNlZSBpZiBpdCBpcyBhbiB1cHBlcmNhc2UgbGV0dGVyCgkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGhlIHByb2dyYW0gd2lsbCBub3cgY2hlY2sgdG8gc2VlIGlmIHRoZSBleHByZXNzaW9uIGlzIHZhbGlkLlxuIik7CgkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiIElmIHRoZSBleHByZXNzaW9uIGNvbnRhaW5zIGEgdXBwZXJjYXNlLCBpdCB3aWxsIHByaW50IGEgMSAoVHJ1ZSkuIEVsc2UsIEl0IHdpbGwgcmV0dXJuIGEgMCAoRmFsc2UpLlxuIik7CgkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbihDaGFyYWN0ZXIuaXNVcHBlckNhc2UoZXhwcltpXSkpOwoJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlxuXG4iKTsKCgkJCQkJCWlmIChDaGFyYWN0ZXIuaXNVcHBlckNhc2UoZXhwcltpXSkgPT0gdHJ1ZSkKCQkJCQkJewoJCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgVGhlIGxleGVtZSBpcyBub3QgdmFsaWQgYmVjYXVzZSBpdCBpcyB1cHBlcmNhc2UuIFRoZSBjb3JyZWN0IHZlcnNpb24gd2lsbCBwcmludCBpbiBBU0NJSS5cbiIpOwoJCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCJUaGUgY29ycmVjdCB2ZXJzaW9uIGlzOiBcbiIgKyBDaGFyYWN0ZXIudG9Mb3dlckNhc2UoZXhwcltpXSkpOwoJCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgVGhlIHByb2dyYW0gd2lsbCBub3cgYnJlYWsuXG4iKTsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvci4gU29tZXRoaW5nIGlzIGluY29ycmVjdCB3aXRoIHRoaXMgcHJvZ3JhbS5cbiIpOwoJCQkJCQkJYnJlYWs7CgkJCQkJfSAKCQkJIAl9IAoJCQl9CgkJfQoJfQ==