Revision: 18590
http://sourceforge.net/p/gate/code/18590
Author: ian_roberts
Date: 2015-03-02 15:37:33 +0000 (Mon, 02 Mar 2015)
Log Message:
-----------
Allow hyphens in phase and rule names, converting them to underscores when
building the RHS action class names (which must be valid Java identifiers).
Modified Paths:
--------------
gate/trunk/src/main/gate/jape/parser/ParseCpsl.java
gate/trunk/src/main/gate/jape/parser/ParseCpsl.jj
Modified: gate/trunk/src/main/gate/jape/parser/ParseCpsl.java
===================================================================
--- gate/trunk/src/main/gate/jape/parser/ParseCpsl.java 2015-02-26 14:15:49 UTC
(rev 18589)
+++ gate/trunk/src/main/gate/jape/parser/ParseCpsl.java 2015-03-02 15:37:33 UTC
(rev 18590)
@@ -127,6 +127,10 @@
}
}
+ protected String toJavaIdentifier(String japeIdentifier) {
+ return japeIdentifier.replace("-", "_");
+ }
+
/**
* Append the given string to the end of the given buffer as a Java string
* literal. If <code>str</code> is <code>null</code>, we append the four
@@ -518,6 +522,7 @@
SinglePhaseTransducer SinglePhaseTransducer(String javaimportblock) throws
ParseException {ruleNumber = 0;
Token phaseNameTok = null;
+ String phaseName = null;
Token inputTok = null;
SinglePhaseTransducer t = null;
Rule newRule = null;
@@ -526,7 +531,8 @@
Token optionValueTok = null;
jj_consume_token(phase);
phaseNameTok = jj_consume_token(ident);
-t = createSinglePhaseTransducer(phaseNameTok.image); curSPT = t;
+phaseName = toJavaIdentifier(phaseNameTok.image);
+ t = createSinglePhaseTransducer(phaseName); curSPT = t;
label_4:
while (true) {
switch (jj_nt.kind) {
@@ -652,7 +658,7 @@
}
switch (jj_nt.kind) {
case rule:{
- newRule = Rule(phaseNameTok.image,javaimportblock);
+ newRule = Rule(phaseName,javaimportblock);
t.addRule(newRule);
break;
}
@@ -742,7 +748,7 @@
bindingNameSet.clear();
jj_consume_token(rule);
ruleNameTok = jj_consume_token(ident);
-ruleName=ruleNameTok.image;
+ruleName=toJavaIdentifier(ruleNameTok.image);
switch (jj_nt.kind) {
case priority:{
jj_consume_token(priority);
@@ -784,7 +790,7 @@
for (String type : set) {
if(!curSPT.hasInput(type)) {
System.err.println(errorMsgPrefix(null)+
- "Rule "+ruleName+" contains unlisted annotation type " +
type);
+ "Rule "+ruleNameTok.image+" contains unlisted annotation
type " + type);
}
}
}
@@ -1849,6 +1855,56 @@
finally { jj_save(1, xla); }
}
+ private boolean jj_3R_17()
+ {
+ if (jj_scan_token(ident)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_22()
+ {
+ if (jj_scan_token(leftBrace)) return true;
+ if (jj_3R_25()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_15()
+ {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_17()) {
+ jj_scanpos = xsp;
+ if (jj_3R_18()) {
+ jj_scanpos = xsp;
+ if (jj_3R_19()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_2()
+ {
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_20()
+ {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_22()) {
+ jj_scanpos = xsp;
+ if (jj_3R_23()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_1()
+ {
+ if (jj_3R_15()) return true;
+ return false;
+ }
+
private boolean jj_3R_27()
{
if (jj_scan_token(pling)) return true;
@@ -1900,12 +1956,6 @@
return false;
}
- private boolean jj_3R_18()
- {
- if (jj_3R_20()) return true;
- return false;
- }
-
private boolean jj_3R_16()
{
if (jj_scan_token(colon)) return true;
@@ -1914,56 +1964,12 @@
return false;
}
- private boolean jj_3R_17()
+ private boolean jj_3R_18()
{
- if (jj_scan_token(ident)) return true;
+ if (jj_3R_20()) return true;
return false;
}
- private boolean jj_3R_22()
- {
- if (jj_scan_token(leftBrace)) return true;
- if (jj_3R_25()) return true;
- return false;
- }
-
- private boolean jj_3_2()
- {
- if (jj_3R_16()) return true;
- return false;
- }
-
- private boolean jj_3R_15()
- {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_17()) {
- jj_scanpos = xsp;
- if (jj_3R_18()) {
- jj_scanpos = xsp;
- if (jj_3R_19()) return true;
- }
- }
- return false;
- }
-
- private boolean jj_3R_20()
- {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_22()) {
- jj_scanpos = xsp;
- if (jj_3R_23()) return true;
- }
- return false;
- }
-
- private boolean jj_3_1()
- {
- if (jj_3R_15()) return true;
- return false;
- }
-
/** Generated Token Manager. */
public ParseCpslTokenManager token_source;
SimpleCharStream jj_input_stream;
Modified: gate/trunk/src/main/gate/jape/parser/ParseCpsl.jj
===================================================================
--- gate/trunk/src/main/gate/jape/parser/ParseCpsl.jj 2015-02-26 14:15:49 UTC
(rev 18589)
+++ gate/trunk/src/main/gate/jape/parser/ParseCpsl.jj 2015-03-02 15:37:33 UTC
(rev 18590)
@@ -152,6 +152,10 @@
}
}
}
+
+ protected String toJavaIdentifier(String japeIdentifier) {
+ return japeIdentifier.replace("-", "_");
+ }
/**
* Append the given string to the end of the given buffer as a Java string
@@ -677,6 +681,7 @@
{
ruleNumber = 0;
Token phaseNameTok = null;
+ String phaseName = null;
Token inputTok = null;
SinglePhaseTransducer t = null;
Rule newRule = null;
@@ -687,7 +692,8 @@
{
<phase> phaseNameTok=<ident>
- { t = createSinglePhaseTransducer(phaseNameTok.image); curSPT = t; }
+ { phaseName = toJavaIdentifier(phaseNameTok.image);
+ t = createSinglePhaseTransducer(phaseName); curSPT = t; }
(
(
@@ -748,7 +754,7 @@
)*
(
- ( newRule=Rule(phaseNameTok.image,javaimportblock) { t.addRule(newRule); }
)
+ ( newRule=Rule(phaseName,javaimportblock) { t.addRule(newRule); } )
|
MacroDef()
|
@@ -816,7 +822,7 @@
bindingNameSet.clear();
}
{
- <rule> ruleNameTok=<ident> { ruleName=ruleNameTok.image; }
+ <rule> ruleNameTok=<ident> { ruleName=toJavaIdentifier(ruleNameTok.image); }
(
<priority> priorityTok=<integer>
{
@@ -853,7 +859,7 @@
for (String type : set) {
if(!curSPT.hasInput(type)) {
System.err.println(errorMsgPrefix(null)+
- "Rule "+ruleName+" contains unlisted annotation type " +
type);
+ "Rule "+ruleNameTok.image+" contains unlisted annotation
type " + type);
}
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs