tecgraf.javautils.jexpression.parser
Class JParser

java.lang.Object
  extended by tecgraf.javautils.jexpression.parser.JParser

public class JParser
extends Object

Analisador sintático de expressões. Abaixo uma gramática informal das expressões: exp -> exp binop exp | unop exp | doubleValue | funcioncall | var | group | question binop -> '<' | '>' | '<=' | '>=' | '!=' | '==' | '+' | '-' | '*' | '/' | '^' | '.' | '||' | '&&' unop -> '!' | '-' question -> exp '?' exp ':' exp functioncall -> name '(' [exp {',' exp}] ')' group -> '(' exp ')' A análise sintática é feita através do algoritmo tradicional de parser-top-down "Recursive Descent Parser" [1]. Para simplificar a prescedência dos operadores, a gramática implementada é sutilmente diferente. Veja abaixo: exp -> exp1 ['?' exp ':' exp] exp1 -> exp2 {'||' exp2} exp2 -> exp3 {'&&' exp3} exp3 -> exp4 {('<' | '>' | '<=' | '>=' | '!=' | '==') exp4} exp4 -> exp5 {('+' | '-') exp5} exp5 -> exp6 {('*' | '/') exp6} exp6 -> ('!' | '-') exp6 | exp7 exp7 -> exp8 {'^' exp6} exp8 -> exp9 ({'.' name} | {'[' exp ']'}) exp9 -> doubleValue | functioncall | var | group functioncall -> name '(' [exp {',' exp}] ')' var -> name group -> '(' exp ')' [1]http://www.cs.engr.uky.edu/~lewis/essays/compilers/rec-des.html

Author:
Tecgraf
See Also:
TokenMemoization, JScanner

Constructor Summary
JParser()
          Construtor.
 
Method Summary
 Exp parse(String input)
          Faz a análise sintática da entrada e retorna a árvore sintática.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JParser

public JParser()
Construtor.

Method Detail

parse

public Exp parse(String input)
          throws JExpressionSyntaxErrorException
Faz a análise sintática da entrada e retorna a árvore sintática.

Parameters:
input - entrada.
Returns:
árvore sintática.
Throws:
JExpressionSyntaxErrorException - caso a expressão seja inválida.


Copyright © 2007–2014 Tecgraf/PUC-Rio. All rights reserved.