I wanted to make a simple parser, for a "pseudo code" like language(kept rigid), in Java.
A sample pseudo code would be -
//This is a comment
$x1 = readint
$x2 = readint
$dx = $x2 - $x1
#f = $dx / 2
if ($dx > 0)
{
loop while(#f > 1)
{
print(#f)
#f = #f / 2
}
}
Note that above code is rigid in that, there can not be more than one statement on a line, integers start with $, floats start with # etc.
To parse such code, first I can use StringTokenizer
, and then regular expression, to match integer-variables, float-variables, or Keywords.
Is this approach good? For statements in loop, how can i store expressions, so that i don't have to tokenize in each iteration?
I could think of converting expressions (like #f = #f / 2) to polish notation, and then to store in stack. And in each iteration, while popping operands I could replace value for each variable. But is this efficient enough?
Thanks in advance, for any suggestion.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…