diff options
Diffstat (limited to 'java/test/Freeze/complex/Parser.java')
-rw-r--r-- | java/test/Freeze/complex/Parser.java | 242 |
1 files changed, 121 insertions, 121 deletions
diff --git a/java/test/Freeze/complex/Parser.java b/java/test/Freeze/complex/Parser.java index 2fed6eed723..99a1865574d 100644 --- a/java/test/Freeze/complex/Parser.java +++ b/java/test/Freeze/complex/Parser.java @@ -11,150 +11,150 @@ public class Parser { public Complex.Node parse(String buf) - throws ParseError + throws ParseError { - _buf = buf; - _pos = 0; - _token = null; + _buf = buf; + _pos = 0; + _token = null; - return start(); + return start(); } private Complex.Node start() - throws ParseError + throws ParseError { - nextToken(); - Complex.Node node = expr(); - if(_token != null) - { - throw new ParseError("Extra garbage: " + _token); - } - return node; + nextToken(); + Complex.Node node = expr(); + if(_token != null) + { + throw new ParseError("Extra garbage: " + _token); + } + return node; } private Complex.Node expr() - throws ParseError + throws ParseError { - try - { - if(_token == null) - { - return null; - } + try + { + if(_token == null) + { + return null; + } - // - // '(' expr ')' - // - if(_token.charAt(0) == '(') - { - nextToken(); + // + // '(' expr ')' + // + if(_token.charAt(0) == '(') + { + nextToken(); - Complex.Node node = expr(); - if(_token.charAt(0) != ')') - { - throw new ParseError("Expected ')'"); - } + Complex.Node node = expr(); + if(_token.charAt(0) != ')') + { + throw new ParseError("Expected ')'"); + } - nextToken(); - return node; - } + nextToken(); + return node; + } - // - // expr | expr '+' expr | expr '*' expr - // - if(!Character.isDigit(_token.charAt(0))) - { - throw new ParseError("Expected number"); - } - - Complex.NumberNode number = new Complex.NumberNodeI(Integer.parseInt(_token)); - Complex.Node result = number; - - // - // expr? - // - nextToken(); - if(_token != null) - { - // - // expr '+' expr - // - if(_token.charAt(0) == '+') - { - nextToken(); - Complex.Node right = expr(); - result = new Complex.AddNodeI(number, right); - } - - // - // expr '*' expr - // - else if(_token.charAt(0) == '*') - { - nextToken(); - Complex.Node right = expr(); - result = new Complex.MultiplyNodeI(number, right); - } - } - return result; - } - catch(NumberFormatException e) - { - ParseError ex = new ParseError("Error parsing number"); - ex.initCause(e); - throw ex; - } + // + // expr | expr '+' expr | expr '*' expr + // + if(!Character.isDigit(_token.charAt(0))) + { + throw new ParseError("Expected number"); + } + + Complex.NumberNode number = new Complex.NumberNodeI(Integer.parseInt(_token)); + Complex.Node result = number; + + // + // expr? + // + nextToken(); + if(_token != null) + { + // + // expr '+' expr + // + if(_token.charAt(0) == '+') + { + nextToken(); + Complex.Node right = expr(); + result = new Complex.AddNodeI(number, right); + } + + // + // expr '*' expr + // + else if(_token.charAt(0) == '*') + { + nextToken(); + Complex.Node right = expr(); + result = new Complex.MultiplyNodeI(number, right); + } + } + return result; + } + catch(NumberFormatException e) + { + ParseError ex = new ParseError("Error parsing number"); + ex.initCause(e); + throw ex; + } } private void nextToken() { - // - // Eat any whitespace. - // - while(_pos < _buf.length() && Character.isWhitespace(_buf.charAt(_pos))) - { - _pos++; - } + // + // Eat any whitespace. + // + while(_pos < _buf.length() && Character.isWhitespace(_buf.charAt(_pos))) + { + _pos++; + } - // - // At the end-of-buffer? - // - if(_pos >= _buf.length()) - { - _token = null; - return; - } + // + // At the end-of-buffer? + // + if(_pos >= _buf.length()) + { + _token = null; + return; + } - StringBuffer buf = new StringBuffer(); - - // - // Get the next character - // - char c = _buf.charAt(_pos); - - // - // '(', ')', '+' and '*' are tokens. - // - if(c == '(' || c == ')' || c == '+' || c == '*') - { - buf.append(c); - ++_pos; - } - else - { - // - // Otherwise it's a number. - // - while(_pos < _buf.length() && Character.isDigit(_buf.charAt(_pos))) - { - buf.append(_buf.charAt(_pos++)); - } - } - - _token = buf.toString(); + StringBuffer buf = new StringBuffer(); + + // + // Get the next character + // + char c = _buf.charAt(_pos); + + // + // '(', ')', '+' and '*' are tokens. + // + if(c == '(' || c == ')' || c == '+' || c == '*') + { + buf.append(c); + ++_pos; + } + else + { + // + // Otherwise it's a number. + // + while(_pos < _buf.length() && Character.isDigit(_buf.charAt(_pos))) + { + buf.append(_buf.charAt(_pos++)); + } + } + + _token = buf.toString(); } private String _buf; |