Java - StreamTokenizer resetSyntax() method



Description

The Java StreamTokenizer resetSyntax() method resets this tokenizer's syntax table so that all characters are "ordinary." See the ordinaryChar method for more information on a character being ordinary.

Declaration

Following is the declaration for java.io.StreamTokenizer.resetSyntax() method.

 public void resetSyntax() 

Parameters

NA

Return Value

This method does not return a value.

Exception

NA

Example - Usage of StreamTokenizer resetSyntax() method

The following example shows the usage of StreamTokenizer resetSyntax() method.

StreamTokenizerDemo.java

 package com.tutorialspoint; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Reader; import java.io.StreamTokenizer; public class StreamTokenizerDemo { public static void main(String[] args) { String text = "Hello. This is a text \n that will be split " + "into tokens. 1 + 1 = 2"; try { // create a new file with an ObjectOutputStream FileOutputStream out = new FileOutputStream("test.txt"); ObjectOutputStream oout = new ObjectOutputStream(out); // write something in the file oout.writeUTF(text); oout.flush(); // create an ObjectInputStream for the file we created before ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.txt")); // create a new tokenizer Reader r = new BufferedReader(new InputStreamReader(ois)); StreamTokenizer st = new StreamTokenizer(r); // print the stream tokens boolean eof = false; do { int token = st.nextToken(); switch (token) { case StreamTokenizer.TT_EOF: System.out.println("End of File encountered."); eof = true; break; case StreamTokenizer.TT_EOL: System.out.println("End of Line encountered."); break; case StreamTokenizer.TT_WORD: System.out.println("Word: " + st.sval); break; case StreamTokenizer.TT_NUMBER: // when a number is met, reset syntax st.resetSyntax(); System.out.println("Number: " + st.nval); break; default: System.out.println((char) token + " encountered."); if (token == '!') { eof = true; } } } while (!eof); } catch (Exception ex) { ex.printStackTrace(); } } } 

Output

Let us compile and run the above program, this will produce the following result −

 Word: AHello. Word: This Word: is Word: a Word: text Word: that Word: will Word: be Word: split Word: into Word: tokens. Number: 1.0 encountered. + encountered. encountered. 1 encountered. encountered. = encountered. encountered. 2 encountered. End of File encountered. 

Example - Parse only lowercase letters as words

The following example shows the usage of StreamTokenizer resetSyntax() method.

StreamTokenizerDemo.java

 package com.tutorialspoint; import java.io.IOException; import java.io.Reader; import java.io.StreamTokenizer; import java.io.StringReader; public class StreamTokenizerDemo { public static void main(String[] args) throws IOException { String input = "abc DEF 123"; Reader reader = new StringReader(input); StreamTokenizer tokenizer = new StreamTokenizer(reader); tokenizer.resetSyntax(); // Clear all syntax tokenizer.wordChars('a', 'z'); // Only lowercase letters are word characters tokenizer.whitespaceChars(' ', ' '); // Space is whitespace System.out.println("Tokens:"); while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) { if (tokenizer.ttype == StreamTokenizer.TT_WORD) { System.out.println("Word: " + tokenizer.sval); } else { System.out.println("Char: " + (char) tokenizer.ttype); } } } } 

Output

Let us compile and run the above program, this will produce the following result−

 Tokens: Word: abc Char: D Char: E Char: F Char: 1 Char: 2 Char: 3 

Explanation

  • After resetSyntax(), only a−z are recognized as word characters.

  • DEF and 123 are treated as individual characters.

Example - Parse digits only, everything else is ignored or treated literally

The following example shows the usage of StreamTokenizer resetSyntax() method.

StreamTokenizerDemo.java

 package com.tutorialspoint; import java.io.IOException; import java.io.Reader; import java.io.StreamTokenizer; import java.io.StringReader; public class StreamTokenizerDemo { public static void main(String[] args) throws IOException { String input = "abc123XYZ"; Reader reader = new StringReader(input); StreamTokenizer tokenizer = new StreamTokenizer(reader); tokenizer.resetSyntax(); // Reset all defaults tokenizer.wordChars('0', '9'); // Only digits are word characters System.out.println("Tokens:"); while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) { if (tokenizer.ttype == StreamTokenizer.TT_WORD) { System.out.println("Number: " + tokenizer.sval); } else { System.out.println("Char: " + (char) tokenizer.ttype); } } } } 

Output

Let us compile and run the above program, this will produce the following result−

 Tokens: Char: a Char: b Char: c Number: 123 Char: X Char: Y Char: Z 

Explanation

  • Only digits are treated as part of a word token.

  • All other characters are treated literally.

java_io_streamtokenizer.htm
Advertisements