|
From: <ha...@us...> - 2008-07-27 23:59:49
|
Revision: 2097
http://cogkit.svn.sourceforge.net/cogkit/?rev=2097&view=rev
Author: hategan
Date: 2008-07-27 23:59:47 +0000 (Sun, 27 Jul 2008)
Log Message:
-----------
parser optimizations
Modified Paths:
--------------
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/BeginElement.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/CommaSeparator.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/EndElement.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Identifier.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/MultiLineComment.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/SingleLineComment.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/StringValue.java
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/BeginElement.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/BeginElement.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/BeginElement.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -40,7 +40,7 @@
}
public static class Eval implements Evaluator {
- private final String name;
+ private String name;
private final int line;
public Eval(String name, int line) {
@@ -64,5 +64,9 @@
public int getLine() {
return line;
}
+
+ public void setName(String name) {
+ this.name = name;
+ }
}
}
\ No newline at end of file
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/CommaSeparator.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/CommaSeparator.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/CommaSeparator.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -9,6 +9,10 @@
*/
package org.globus.cog.karajan.translator.predicates;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
import org.globus.cog.karajan.parser.ParserContext;
import org.globus.cog.karajan.parser.ParsingException;
import org.globus.cog.karajan.parser.Stack;
@@ -17,18 +21,33 @@
public class CommaSeparator extends AbstractPredicate {
- public boolean parse(final ParserContext context, final Stack<Evaluator> stack) throws ParsingException {
- boolean comma = false;
- while(context.tok.hasMoreChars()) {
- final char c = context.tok.peekChar();
- if (c == ',') {
- comma = true;
- }
- else if (!Character.isWhitespace(c)) {
- return comma;
- }
- context.tok.nextChar();
- }
- return false;
- }
+ public boolean parse(final ParserContext context,
+ final Stack<Evaluator> stack) throws ParsingException {
+ boolean comma = false;
+ while (context.tok.hasMoreChars()) {
+ final char c = context.tok.peekChar();
+ if (c == ',') {
+ comma = true;
+ }
+ else if (!Character.isWhitespace(c)) {
+ return comma;
+ }
+ context.tok.nextChar();
+ }
+ return false;
+ }
+
+ private static final List<Character> chars = Arrays.asList(new Character[] {
+ ',', ' ', '\t', '\n', '\r' });
+
+ @Override
+ public Collection<Character> getFirstChars() {
+ return chars;
+ }
+
+ @Override
+ public String toString() {
+ return "COMMASEP()";
+ }
+
}
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/EndElement.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/EndElement.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/EndElement.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -71,6 +71,7 @@
}
public void write(Writer wr, IndentationLevel l) throws IOException, EvaluationException {
+ checkTypedecl();
l.write(wr);
wr.write("<");
wr.write(begin.getName());
@@ -103,7 +104,18 @@
}
}
- public void setProperty(String name, String value) {
+ private void checkTypedecl() {
+ if (begin.getName().equals("k.named") && children.size() > 0) {
+ KarajanEvaluator child = (KarajanEvaluator) children.get(0);
+ if (child instanceof Eval) {
+ if (((Eval) child).begin.getName().equals("k.typedecl")) {
+ begin.setName("k.set");
+ }
+ }
+ }
+ }
+
+ public void setProperty(String name, String value) {
if (properties == null) {
properties = new HashMap<String, String>();
}
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Identifier.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Identifier.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Identifier.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -63,8 +63,18 @@
return isCharOk0(c);
}
}
+
+ @Override
+ public String toString() {
+ if (value != null) {
+ return "IDENTIFIER(" + value + ")";
+ }
+ else {
+ return "IDENTIFIER()";
+ }
+ }
- public boolean parse(final ParserContext context, final Stack<Evaluator> stack) throws ParsingException {
+ public boolean parse(final ParserContext context, final Stack<Evaluator> stack) throws ParsingException {
if (value != null) {
stack.push(new Eval(value));
return true;
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/MultiLineComment.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/MultiLineComment.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/MultiLineComment.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -9,6 +9,9 @@
*/
package org.globus.cog.karajan.translator.predicates;
+import java.util.Collection;
+import java.util.Collections;
+
import org.globus.cog.karajan.parser.ParserContext;
import org.globus.cog.karajan.parser.ParsingException;
import org.globus.cog.karajan.parser.Stack;
@@ -39,4 +42,15 @@
}
return true;
}
+
+ @Override
+ public Collection<Character> getFirstChars() {
+ return Collections.singletonList('/');
+ }
+
+ @Override
+ public String toString() {
+ return "MULTILINECOMMENT()";
+ }
+
}
\ No newline at end of file
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/SingleLineComment.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/SingleLineComment.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/SingleLineComment.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -11,6 +11,8 @@
import java.io.IOException;
import java.io.Writer;
+import java.util.Collection;
+import java.util.Collections;
import org.globus.cog.karajan.parser.ParserContext;
import org.globus.cog.karajan.parser.ParsingException;
@@ -34,8 +36,22 @@
stack.push(new Eval(sb.toString()));
return true;
}
+
+
- public static class Eval extends AbstractKarajanEvaluator {
+ @Override
+ public Collection<Character> getFirstChars() {
+ return Collections.singletonList('/');
+ }
+
+ @Override
+ public String toString() {
+ return "SINGLELINECOMMENT()";
+ }
+
+
+
+ public static class Eval extends AbstractKarajanEvaluator {
private final String value;
public Eval(String value) {
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/StringValue.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/StringValue.java 2008-07-27 23:59:16 UTC (rev 2096)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/StringValue.java 2008-07-27 23:59:47 UTC (rev 2097)
@@ -11,6 +11,8 @@
import java.io.IOException;
import java.io.Writer;
+import java.util.Collection;
+import java.util.Collections;
import org.globus.cog.karajan.parser.Lexer;
import org.globus.cog.karajan.parser.ParserContext;
@@ -82,7 +84,16 @@
return false;
}
}
+
+ public String toString() {
+ return "STRINGVALUE()";
+ }
+ @Override
+ public Collection<Character> getFirstChars() {
+ return Collections.singletonList('"');
+ }
+
private char gc(Lexer l) throws ParsingException {
if (!l.hasMoreChars()) {
throw new ParsingException("Unterminated string literal");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|