Question: I want interpreter For (If else ) in Java using this Parse //^_^ ------------------------------------------------------------------------------------- import java.io.*; public class Parser { private static StreamTokenizer tokens; private

I want interpreter For (If else ) in Java using this Parse //^_^

-------------------------------------------------------------------------------------

import java.io.*; public class Parser { private static StreamTokenizer tokens; private static int token; public static void main(String argv[]) throws IOException { InputStreamReader reader; if (argv.length > 0) reader = new InputStreamReader(new FileInputStream("x.txt")); else reader = new InputStreamReader(System.in); // create the tokenizer: tokens = new StreamTokenizer(reader); tokens.ordinaryChar('.'); tokens.ordinaryChar('-'); tokens.ordinaryChar('/'); // advance to the first token on the input: getToken(); // parse expression and get calculated value: int value = expr(); // check if expression ends with ';' and print value if (token == (int)';') System.out.println("Value = " + value); else System.out.println("Syntax error"); } // getToken - ad1vance to the next token on the input private static void getToken() throws IOException { token = tokens.nextToken(); } // expr - parse -> private static int expr() throws IOException { int subtotal = term(); return term_tail(subtotal); } // term - parse -> private static int term() throws IOException { int subtotal = factor(); return factor_tail(subtotal); } // term_tail - parse -> | empty private static int term_tail(int subtotal) throws IOException { if (token == (int)'+') { getToken(); int termvalue = term(); return term_tail(subtotal + termvalue); } else if (token == (int)'-') { getToken(); int termvalue = term(); return term_tail(subtotal - termvalue); } else return subtotal; } // factor - parse -> '(' ')' | '-' | identifier | number private static int factor() throws IOException { if (token == (int)'(') { getToken(); int value = expr(); if (token == (int)')') getToken(); else System.out.println("closing ')' expected"); return value;} else if (token == (int)'-') { getToken(); return -factor(); } else if (token == tokens.TT_WORD) { getToken(); getToken(); // ignore variable names return 0; } else if (token == tokens.TT_NUMBER) { getToken(); return (int)tokens.nval; } else { System.out.println("factor expected"); return 0;} } // factor_tail - parse -> | empty private static int factor_tail(int subtotal) throws IOException { if (token == (int)'*') { getToken(); int factorvalue = factor(); return factor_tail(subtotal * factorvalue); } else if (token == (int)'/') { getToken(); int factorvalue = factor(); return factor_tail(subtotal / factorvalue); } else return subtotal; } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!