Skip to content

jParsec 3.0 #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
6 changes: 3 additions & 3 deletions org.coreasm.engine/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
<useIncrementalCompilation>false</useIncrementalCompilation>
</configuration>
</plugin>
Expand All @@ -128,7 +128,7 @@
<dependency>
<groupId>org.jparsec</groupId>
<artifactId>jparsec</artifactId>
<version>2.1</version>
<version>3.1</version>
</dependency>
<dependency>
<groupId>concurrent</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

import java.io.Serializable;

import org.codehaus.jparsec.Token;
import org.jparsec.Token;
import org.coreasm.engine.Specification;
import org.coreasm.engine.parser.CharacterPosition;
import org.coreasm.engine.parser.Parser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BinaryOperator;
import java.util.function.UnaryOperator;

import org.codehaus.jparsec.OperatorTable;
import org.codehaus.jparsec.Parser;
import org.codehaus.jparsec.functors.Binary;
import org.codehaus.jparsec.functors.Unary;
import org.jparsec.OperatorTable;
import org.jparsec.Parser;
import org.coreasm.engine.ControlAPI;
import org.coreasm.engine.EngineError;
import org.coreasm.engine.interpreter.ASTNode;
Expand Down Expand Up @@ -233,7 +233,7 @@ private Parser<UnaryMap> createUnaryParser(String opr, String pluginNames, OpTyp
private Parser<IndexMap> createIndexParser(String opr1, String opr2, String pluginNames) {
return ParserTools.seq(
ParserTools.getOprParser(opr1),
termParser.optional(),
termParser.optional(null),
ParserTools.getOprParser(opr2)
).map(new IndexParseMap(opr1, opr2, pluginNames, OpType.INDEX));
}
Expand Down Expand Up @@ -303,7 +303,7 @@ private void addOperator(Map<String, Integer> oprs, OperatorRule oprRule) {
}

/* Special unary map class */
public static class UnaryMap implements Unary<Node> {
public static class UnaryMap implements UnaryOperator<Node> {

//private String pluginNames;
private String opr;
Expand All @@ -329,7 +329,8 @@ public UnaryMap(String opr, String pluginNames, OpType type, Object[] nodes) {
/**
* Creates a tree for this operator with an {@link ASTNode} as its root.
*/
public Node map(Node child) {
@Override
public Node apply(Node child) {
Node node = null;
if (type == OpType.POSTFIX) {
node = new ASTNode(
Expand Down Expand Up @@ -364,14 +365,15 @@ public UnaryParseMap(String opr, String pluginName, OpType type) {
this.type = type;
}

public UnaryMap map(Object[] v) {
@Override
public UnaryMap apply(Object[] v) {
return new UnaryMap(opr, pluginName, type, v);
}

}

/* Special binary map class */
public static class BinaryMap implements Binary<Node> {
public static class BinaryMap implements BinaryOperator<Node> {

//private String pluginNames;
private String opr;
Expand All @@ -397,7 +399,8 @@ public BinaryMap(String opr, String pluginNames, OpType type, Object[] cnodes) {
/**
* Creates a tree for this operator with an {@link ASTNode} as its root.
*/
public Node map(Node o1, Node o2) {
@Override
public Node apply(Node o1, Node o2) {
Node node = new ASTNode(
null, ASTNode.BINARY_OPERATOR_CLASS, "", ((Node)cnodes[1]).getToken(), o1.getScannerInfo());
node.addChild(o1);
Expand All @@ -423,14 +426,15 @@ public BinaryParseMap(String opr, String pluginName, OpType type) {
this.type = type;
}

public BinaryMap map(Object[] v) {
@Override
public BinaryMap apply(Object[] v) {
return new BinaryMap(opr, pluginName, type, v);
}

}

/* Special index map class */
public static class IndexMap implements Unary<Node> {
public static class IndexMap implements UnaryOperator<Node> {

//private String pluginNames;
private String opr1;
Expand Down Expand Up @@ -458,9 +462,9 @@ public IndexMap(String opr1, String opr2, String pluginNames, OpType type, Objec
/**
* Creates a tree for this operator with an {@link ASTNode} as its root.
*/
public Node map(Node child) {
Node node = null;
node = new ASTNode(
@Override
public Node apply(Node child) {
Node node = new ASTNode(
null, ASTNode.INDEX_OPERATOR_CLASS, "", opr1 + OperatorRule.OPERATOR_DELIMITER + opr2, child.getScannerInfo());
node.addChild(child);
for (Object obj: cnodes)
Expand All @@ -484,7 +488,8 @@ public IndexParseMap(String opr1, String opr2, String pluginName, OpType type) {
this.type = type;
}

public IndexMap map(Object[] v) {
@Override
public IndexMap apply(Object[] v) {
return new IndexMap(opr1, opr2, pluginName, type, v);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public ImportRuleParseMap() {
super(Kernel.PLUGIN_NAME);
}

public Node map(Object[] v) {
@Override
public Node apply(Object[] v) {
Node node = new ASTNode(
null,
ASTNode.RULE_CLASS,
Expand Down
57 changes: 33 additions & 24 deletions org.coreasm.engine/src/org/coreasm/engine/kernel/Kernel.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
import java.util.Map.Entry;
import java.util.Set;

import org.codehaus.jparsec.Parser;
import org.codehaus.jparsec.Parsers;
import org.jparsec.Parser;
import org.jparsec.Parsers;
import org.coreasm.compiler.interfaces.CompilerPlugin;
import org.coreasm.compiler.plugins.kernel.CompilerKernelPlugin;
import org.coreasm.engine.ControlAPI;
Expand Down Expand Up @@ -314,8 +314,9 @@ public Map<String, GrammarRule> getParsers() {
parserTools.getKeywParser("use", this.getName()),
idParser,
new ParseMap2(getName()) {

public Node map(Node a, Node b) {

@Override
public Node apply(Node a, Node b) {
Node node = new ASTNode(
pluginName,
ASTNode.DECLARATION_CLASS,
Expand All @@ -337,8 +338,9 @@ public Node map(Node a, Node b) {
parserTools.getKeywParser("init", this.getName()),
idParser,
new ParseMap2(getName()) {

public Node map(Node a, Node b) {

@Override
public Node apply(Node a, Node b) {
Node node = new ASTNode(
null,
null,
Expand All @@ -362,7 +364,7 @@ public Node map(Node a, Node b) {
parserTools.getOprParser("("),
parserTools.csplus(idParser),
parserTools.getOprParser(")")
).optional(),
).optional(null),
}).map(new ParserTools.RuleSignatureParseMap());
refRuleSignatureParser.set(rulesignParser);
parsers.put("RuleSignature", new GrammarRule("RuleSignature", "ID ( '(' ID (',' ID)* ')' )?", refRuleSignatureParser.lazy(), this.getName()));
Expand All @@ -386,14 +388,14 @@ public Node map(Node a, Node b) {
Parser<Node> coreASMParser = Parsers.array(new Parser[] {
parserTools.getKeywParser("CoreASM", this.getName()),
idParser,
parserTools.star(
Parsers.or(
useClauseParser,
refHeaderParser.lazy(),
initializationParser,
ruleDeclarationParser
)
)
parserTools.many(
Parsers.or(
useClauseParser,
refHeaderParser.lazy(),
initializationParser,
ruleDeclarationParser
)
)
}).map(new ParserTools.CoreASMParseMap())
.followedBy(Parsers.EOF);
parsers.put("CoreASM", new GrammarRule("CoreASM",
Expand Down Expand Up @@ -448,7 +450,8 @@ private void createRuleParser(Map<String, GrammarRule> parsers) {
// Rule : 'skip'
Parser<Node> skipRuleParser = parserTools.getKeywParser("skip", PLUGIN_NAME).map(
new ParseMap<Node, Node>(PLUGIN_NAME) {
public Node map(Node v) {
@Override
public Node apply(Node v) {
return new SkipRuleNode(v.getScannerInfo());
}});
parsers.put("SkipRule", new GrammarRule("SkipRule", "'skip'", skipRuleParser, PLUGIN_NAME));
Expand All @@ -471,7 +474,8 @@ public Node map(Node v) {
Parser<Node> macroCallRule = Parsers.array(refFuncRuleTermParser.lazy()).map(
new ParseMap<Object[], Node>(PLUGIN_NAME) {

public Node map(Object[] vals) {
@Override
public Node apply(Object[] vals) {
Node node = new MacroCallRuleNode(((Node)vals[0]).getScannerInfo());
node.addChild("alpha", (Node)vals[0]);
return node;
Expand Down Expand Up @@ -529,7 +533,7 @@ private Parser<Node> createTermParser(Map<String, GrammarRule> parsers) {
// TupleTerm: '(' ( Term ( ',' Term )* )? ')'
Parser<Node> ttParser = Parsers.array( //parserTools.seq(
parserTools.getOprParser("("),
parserTools.csplus(refTermParser.lazy()).optional(),
parserTools.csplus(refTermParser.lazy()).optional(null),
parserTools.getOprParser(")")
).map(new TupleTermParseMap());
refTupleTermParser.set(ttParser);
Expand Down Expand Up @@ -561,7 +565,7 @@ private void createFunctionRuleTermParser() {
Parser<Node> basicFunctionRuleTermParser = Parsers.array(
new Parser[] {
idParser,
refTupleTermParser.lazy().optional()
refTupleTermParser.lazy().optional(null)
}).map(new ParserTools.FunctionRuleTermParseMap());
parsers.put("BasicFunctionRuleTerm",
new GrammarRule("BasicFunctionRuleTerm",
Expand Down Expand Up @@ -613,7 +617,8 @@ private Parser<Node> createExpressionParser() {
parserTools.getKeywParser("undef", PLUGIN_NAME),
parserTools.getKeywParser("self", PLUGIN_NAME)).map(
new ParseMap<Node, Node>(PLUGIN_NAME) {
public Node map(Node v) {
@Override
public Node apply(Node v) {
Node node = new ASTNode(
pluginName,
ASTNode.EXPRESSION_CLASS,
Expand All @@ -633,7 +638,8 @@ public Node map(Node v) {
parserTools.getKeywParser("true", PLUGIN_NAME),
parserTools.getKeywParser("false", PLUGIN_NAME)).map(
new ParseMap<Node, Node>(PLUGIN_NAME) {
public Node map(Node v) {
@Override
public Node apply(Node v) {
Node node = new ASTNode(
pluginName,
ASTNode.EXPRESSION_CLASS,
Expand All @@ -659,7 +665,8 @@ public Node map(Node v) {
parserTools.getOprParser(")")
).map(new ParseMap<Object[], Node>(PLUGIN_NAME){

public Node map(Object[] v) {
@Override
public Node apply(Object[] v) {
Node node = new EnclosedTermNode(((Node)v[0]).getScannerInfo());
for (Object o:v) node.addChild((Node)o);
return node;
Expand Down Expand Up @@ -739,7 +746,8 @@ private void createBasicTerm(Parser<Node> functionRuleTermParser) {

new ParseMap2(PLUGIN_NAME) {

public Node map(Node a, Node b) {
@Override
public Node apply(Node a, Node b) {
Node node = new ASTNode(
pluginName,
ASTNode.EXPRESSION_CLASS,
Expand All @@ -764,7 +772,8 @@ public Node map(Node a, Node b) {
idParser,
new ParseMap2(PLUGIN_NAME) {

public Node map(Node a, Node d) {
@Override
public Node apply(Node a, Node d) {
Node node = new RuleOrFuncElementNode(a.getScannerInfo());
node.addChild(a);
node.addChild("alpha", d);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

package org.coreasm.engine.kernel;

import org.codehaus.jparsec.Parser;
import org.jparsec.Parser;

import org.coreasm.engine.interpreter.Node;
import org.coreasm.engine.plugin.PluginServiceInterface;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ public class TupleTermParseMap extends ParseMap<Object[], Node> {
public TupleTermParseMap() {
super(Kernel.PLUGIN_NAME);
}

public Node map(Object[] v) {

@Override
public Node apply(Object[] v) {
Node node = new ASTNode(
null,
"",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public UpdateRuleParseMap() {
super(Kernel.PLUGIN_NAME);
}

public Node map(Object[] v) {
@Override
public Node apply(Object[] v) {
Node node = new UpdateRuleNode(((Node)v[0]).getScannerInfo());

for (int i=0; i < v.length; i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import java.util.Hashtable;
import java.util.Iterator;

import org.codehaus.jparsec.Parser;
import org.jparsec.Parser;
import org.coreasm.engine.interpreter.Node;
import org.coreasm.engine.parser.GrammarRule.GRType;
import org.coreasm.util.CoreASMGlobal;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@

import org.coreasm.engine.interpreter.Node;

import org.codehaus.jparsec.Parser;
import org.jparsec.Parser;

/**
* A structure to hold a grammar rule, and a {@link jfun.parsec.Parser} instance
* A structure to hold a grammar rule, and a {@link org.jparsec.Parser} instance
* for that grammar rule.
*
* @author Roozbeh Farahbod
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public class JParsecParser implements Parser {
private boolean headerParsed = false;

/** the actual parser -- a JParsec parser */
private org.codehaus.jparsec.Parser<Node> parser;
private org.jparsec.Parser<Node> parser;

/** the root grammar rule */
private GrammarRule rootGrammarRule;
Expand Down Expand Up @@ -167,11 +167,11 @@ public void parseSpecification() throws ParserException {
this.rootGrammarRule = ((ParserPlugin)kernel).getParsers().get("CoreASM");
this.parser = rootGrammarRule.parser;
try {
org.codehaus.jparsec.Parser<Node> _parser = parser.from(parserTools.getTokenizer(), parserTools.getIgnored());
org.jparsec.Parser<Node> _parser = parser.from(parserTools.getTokenizer(), parserTools.getIgnored());
rootNode = (ASTNode) _parser.parse(specification.getText());
} catch (Throwable e) {
if (e instanceof org.codehaus.jparsec.error.ParserException) {
org.codehaus.jparsec.error.ParserException pe = (org.codehaus.jparsec.error.ParserException) e;
if (e instanceof org.jparsec.error.ParserException) {
org.jparsec.error.ParserException pe = (org.jparsec.error.ParserException) e;
Throwable cause = pe.getCause();
String msg = pe.getMessage();
msg = msg.substring(msg.indexOf("\n")+1);
Expand All @@ -185,8 +185,7 @@ public void parseSpecification() throws ParserException {
}
logger.error(errorLogMsg);

throw new ParserException(msg,
new CharacterPosition(pe.getLocation().line, pe.getLocation().column));
throw new ParserException(msg, new CharacterPosition(pe.getLine(), pe.getColumn()));
}
throw new ParserException(e);
}
Expand Down
Loading