tecgraf.javautils.jexpression.parser
Class JParser
java.lang.Object
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 |
JParser
public JParser()
- Construtor.
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.