diff --git a/src/main/java/de/neemann/digital/hdl/hgs/Parser.java b/src/main/java/de/neemann/digital/hdl/hgs/Parser.java index e18fbdf64..ad7f5021f 100644 --- a/src/main/java/de/neemann/digital/hdl/hgs/Parser.java +++ b/src/main/java/de/neemann/digital/hdl/hgs/Parser.java @@ -57,7 +57,6 @@ public class Parser { private ArrayList 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 { diff --git a/src/main/java/de/neemann/digital/hdl/hgs/Tokenizer.java b/src/main/java/de/neemann/digital/hdl/hgs/Tokenizer.java index 5a57c5dc0..afbf8b300 100644 --- a/src/main/java/de/neemann/digital/hdl/hgs/Tokenizer.java +++ b/src/main/java/de/neemann/digital/hdl/hgs/Tokenizer.java @@ -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; diff --git a/src/test/java/de/neemann/digital/hdl/hgs/ParserTest.java b/src/test/java/de/neemann/digital/hdl/hgs/ParserTest.java index bfe6abd61..1295278ec 100644 --- a/src/test/java/de/neemann/digital/hdl/hgs/ParserTest.java +++ b/src/test/java/de/neemann/digital/hdl/hgs/ParserTest.java @@ -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; "); - final ArrayList 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(""); - 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("").toString()); assertEquals("5", exec("").toString());