On Friday, November 26, 2010 at 20:15:19 (+0100) Massimiliano Donini writes:
>
>Can you send complete grammar?
>That error is about lexer rules order.
Ok, added below my sig.
Bill
grammar Command;
@header {
import java.util.ArrayList;
import java.util.List;
}
@parser::members {
private StageParameters stageParameters;
private List<Command> commandList = new ArrayList<Command>();
public void setStageParameters(final StageParameters params) {
stageParameters = params;
}
public List<Command> getCommandList() {
return commandList;
}
}
commands: command+
;
command
scope {
int timeout;
List<String> notifyList;
}
@init {
$command::timeout = -1;
$command::notifyList = new ArrayList<String>();
}
: (cleanlogs|cleanup) (NEWLINE | EOF)
| NEWLINE
;
cleanlogs
@init {
$command::timeout = CleanlogCommand.defaultMinutesToSleep;
}
: 'cleanLogs' command_options? {
commandList.add(new CleanlogCommand(stageParameters,
$command::timeout,
$command::notifyList));
}
;
cleanup
@init {
$command::timeout = CleanlogCommand.defaultMinutesToSleep;
}
: 'cleanup' command_options ? {
commandList.add(new CleanupCommand(stageParameters,
$command::timeout,
$command::notifyList));
}
;
shellCommand
@init {
$command::timeout = ShellCommand.defaultMinutesToSleep;
}
: 'shellCommand' timeoutOption? COMMAND_TEXT {
commandList.add(new ShellCommand(stageParameters,
$COMMAND_TEXT.text));
}
;
command_options:
timeoutOption
| notifyOption
| timeoutOption notifyOption
| notifyOption timeoutOption
;
timeoutOption:
'-timeout' INT { $command::timeout = Integer.parseInt($INT.text); }
;
notifyOption: '-notify' EMAIL {
$command::notifyList.add($EMAIL.text);
}
| '-notify' QUOTED_STRING {
String[] l = $QUOTED_STRING.text.split("\\s+");
for (int i = 0; i < l.length; i++) {
$command::notifyList.add(l[i]);
}
}
;
COMMAND_TEXT: (options {greedy=false;} : . )* '\r'? '\n' {
setText(getText().trim());
}
;
QUOTED_STRING:
'"' ( EscapeSequence | ~('\\'|'"') )* '"' {
setText(getText().substring(1, getText().length() - 1));
}
| '\'' ( EscapeSequence | ~('\\'|'\'') )* '\'' {
setText(getText().substring(1, getText().length() - 1));
}
;
fragment
EscapeSequence : '\\' ('\"'|'\''|'\\') ;
INT: '0'..'9'+
;
ID: 'a'..'z'+
;
EMAIL: ~('\n' | '\r' | ' ' | '"')+
;
NEWLINE:
'\r'? '\n'
;
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' { skip(); }
| '/*' ( options {greedy=false;} : . )* '*/' { skip(); }
;
WS: (' ' | '\t')+ { skip(); }
;
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.