mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-13 06:49:36 -04:00
removed unused static code from hdl parser
This commit is contained in:
parent
73af7bc235
commit
b30f70142f
@ -57,7 +57,6 @@ public class Parser {
|
||||
|
||||
private ArrayList<Reference> refRead;
|
||||
private final Tokenizer tok;
|
||||
private Context staticContext;
|
||||
|
||||
/**
|
||||
* Create a new instance
|
||||
@ -76,7 +75,6 @@ public class Parser {
|
||||
*/
|
||||
public Parser(Reader reader, String srcFile) {
|
||||
tok = new Tokenizer(reader, srcFile);
|
||||
staticContext = new Context();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -138,25 +136,10 @@ public class Parser {
|
||||
s.add(c -> c.print(t));
|
||||
}
|
||||
}
|
||||
while (!nextIs(EOF)) {
|
||||
if (nextIs(STATIC)) {
|
||||
Statement stat = parseStatement();
|
||||
try {
|
||||
stat.execute(staticContext);
|
||||
} catch (HGSEvalException e) {
|
||||
throw newParserException("error evaluating static code: " + e.getMessage());
|
||||
}
|
||||
} else
|
||||
s.add(parseStatement());
|
||||
}
|
||||
return s.optimize();
|
||||
}
|
||||
while (!nextIs(EOF))
|
||||
s.add(parseStatement());
|
||||
|
||||
/**
|
||||
* @return the static context of this template
|
||||
*/
|
||||
public Context getStaticContext() {
|
||||
return staticContext;
|
||||
return s.optimize();
|
||||
}
|
||||
|
||||
private Statement parseStatement() throws IOException, ParserException {
|
||||
|
@ -17,7 +17,7 @@ class Tokenizer {
|
||||
enum Token {
|
||||
UNKNOWN, IDENT, AND, OR, XOR, NOT, OPEN, CLOSE, NUMBER, EOL, EOF, SHIFTLEFT, SHIFTRIGHT, COMMA, EQUAL,
|
||||
ADD, SUB, MUL, GREATER, LESS, DIV, MOD, END, IF, ELSE, FOR, WHILE, SEMICOLON, NOTEQUAL, STRING,
|
||||
OPENBRACE, CLOSEDBRACE, CODEEND, OPENSQUARE, CLOSEDSQUARE, DOT, STATIC, FUNC, GREATEREQUAL, LESSEQUAL,
|
||||
OPENBRACE, CLOSEDBRACE, CODEEND, OPENSQUARE, CLOSEDSQUARE, DOT, FUNC, GREATEREQUAL, LESSEQUAL,
|
||||
REPEAT, RETURN, COLON, UNTIL, DOUBLE, EXPORT, TRUE, FALSE
|
||||
}
|
||||
|
||||
@ -129,9 +129,6 @@ class Tokenizer {
|
||||
case '.':
|
||||
token = Token.DOT;
|
||||
break;
|
||||
case '@':
|
||||
token = Token.STATIC;
|
||||
break;
|
||||
case ':':
|
||||
token = Token.COLON;
|
||||
break;
|
||||
|
@ -389,25 +389,6 @@ public class ParserTest extends TestCase {
|
||||
assertEquals(7, flag);
|
||||
}
|
||||
|
||||
public void testStatic() throws IOException, ParserException, HGSEvalException {
|
||||
Parser p = new Parser("generic a; <? @gen[0]:=\"a\"; ?>");
|
||||
final ArrayList<Object> generics = new ArrayList<>();
|
||||
p.getStaticContext().declareVar("gen", generics);
|
||||
p.parse();
|
||||
|
||||
assertEquals(1, generics.size());
|
||||
assertEquals("a", generics.get(0));
|
||||
}
|
||||
|
||||
public void testFunctionStatic() throws IOException, ParserException, HGSEvalException {
|
||||
Parser p = new Parser("<? @f:=func(a){return a*a+2;}; print(f(4));?>");
|
||||
p.parse();
|
||||
Object fObj = p.getStaticContext().getVar("f");
|
||||
assertTrue(fObj instanceof Function);
|
||||
Function f = (Function) fObj;
|
||||
assertEquals(11L, f.call(3));
|
||||
}
|
||||
|
||||
public void testFunction() throws IOException, ParserException, HGSEvalException {
|
||||
assertEquals("18", exec("<? f:=func(a){return a*a+2;}; print(f(4));?>").toString());
|
||||
assertEquals("5", exec("<? f:=func(a,b){return a+2*b;}; print(f(1,2));?>").toString());
|
||||
|
Loading…
x
Reference in New Issue
Block a user