• R/O
  • SSH
  • HTTPS

awkium: コミット


コミットメタ情報

リビジョン78 (tree)
日時2014-02-19 08:12:31
作者y-moriguchi

ログメッセージ

Java6 scripting framework

変更サマリ

差分

--- awkium-nano/java/src/net/morilib/awk/nano/parser/AwkParser.java (revision 77)
+++ awkium-nano/java/src/net/morilib/awk/nano/parser/AwkParser.java (revision 78)
@@ -1054,6 +1054,35 @@
10541054 * @return プログラムの中間表現
10551055 * @throws IOException
10561056 */
1057+ public static AwkExpression parseStatement(AwkNamespace ns,
1058+ AwkLexer rd) throws IOException {
1059+ AwkFunctionPrototype f;
1060+ boolean cl;
1061+
1062+ if(rd.getToken().equals(AwkReserved.FUNC)) {
1063+ if(rd.nextToken().equals(AwkOperator.FIELD)) {
1064+ // function$ { ... } -> closure
1065+ cl = true; rd.nextToken();
1066+ } else {
1067+ cl = false;
1068+ }
1069+ f = funcp(rd);
1070+ f.defun(ns, cl);
1071+ rd.eatTokenOpt(AwkReserved.SEMICL);
1072+ return f;
1073+ } else {
1074+ return parseStatement(rd);
1075+ }
1076+ }
1077+
1078+ /**
1079+ * awkiumプログラムをコンパイルします。
1080+ *
1081+ * @param ns 名前空間
1082+ * @param rd lexer
1083+ * @return プログラムの中間表現
1084+ * @throws IOException
1085+ */
10571086 public static AwkProgram parse(AwkNamespace ns,
10581087 AwkLexer rd) throws IOException {
10591088 List<AwkExecutable> l = new ArrayList<AwkExecutable>();
--- awkium-nano/java/src/net/morilib/awk/nano/Awk.java (revision 77)
+++ awkium-nano/java/src/net/morilib/awk/nano/Awk.java (revision 78)
@@ -274,7 +274,7 @@
274274 for(;;) {
275275 try {
276276 v = AwkUndefined.UNDEF;
277- x = AwkParser.parseStatement(l);
277+ x = AwkParser.parseStatement(r, l);
278278 x = x.compileInternally();
279279 v = x.eval(r, f);
280280 } catch(AwkNextException e) {
旧リポジトリブラウザで表示