📄 oaaprolognetparse.g-latin1
字号:
IDENT^<AST=IclASTStruct> | PLUS^<AST=IclASTStruct> | MINUS^<AST=IclASTStruct> | STAR^<AST=IclASTStruct> | DIV^<AST=IclASTStruct> | EQUAL^<AST=IclASTStruct>| TURNSTILE^<AST=IclASTStruct> | COLON^<AST=IclASTStruct> | DBL_COLON^<AST=IclASTStruct> | BACKSLASH^<AST=IclASTStruct> | LESS_THAN^<AST=IclASTStruct> | IS_LITERAL^<AST=IclASTStruct> | UNIV^<AST=IclASTStruct> | NUM_EQUAL^<AST=IclASTStruct> | NOT_NUM_EQUAL^<AST=IclASTStruct> | LITERALLY_EQUAL^<AST=IclASTStruct> | LESS_THAN_OR_EQUAL^<AST=IclASTStruct> | NOT_EQUAL^<AST=IclASTStruct> | NOT_LITERALLY_EQUAL^<AST=IclASTStruct> | GREATER_THAN^<AST=IclASTStruct> | GREATER_THAN_OR_EQUAL^<AST=IclASTStruct> | BEFORE^<AST=IclASTStruct> | AFTER^<AST=IclASTStruct> | NOT_BEFORE^<AST=IclASTStruct> | NOT_AFTER^<AST=IclASTStruct> | HAT^<AST=IclASTStruct> | QUOTE^<AST=IclASTStruct>)
LPAREN!
commaSeparatedStructs
RPAREN!
{currentAST.root.setType(STRUCT);}
;
str
:
//BANG<AST=IclASTStr>
// | SEMI<AST=IclASTStr>
//|
STRING_LITERAL<AST=IclASTStr>
| SPECIAL_CHAR_LITERAL<AST=IclASTStr>
//| STAR<AST=IclASTStr>
//| PLUS<AST=IclASTStr>
//| MINUS<AST=IclASTStr>
//| DIV<AST=IclASTStr>
//| EQUAL<AST=IclASTStr>
//| TURNSTILE<AST=IclASTStr>
| IDENT<AST=IclASTStr>
| TERM_LITERAL<AST=IclASTStr>
| ICLDATAQ_LITERAL<AST=IclASTStr>
| IS_LITERAL<AST=IclASTStr>
{currentAST.root.setType(STR);}
;
class OaaPrologLexer extends Lexer;
options {
k = 2;
exportVocab = OaaPrologVocab;
testLiterals = true;
charVocabulary = '\u0000'..'\u00FF';
}
{
private boolean throwOnEOF = false;
public final void setThrowOnEOF(boolean t)
{
throwOnEOF = t;
}
public final boolean getThrowOnEOF()
{
return throwOnEOF;
}
public final void uponEOF() throws TokenStreamException, CharStreamException {
if(getThrowOnEOF()) {
throw new TokenStreamEOF("EOF");
}
}
}
//IS options { paraphrase = "is"; } : "is" (('a'..'z'|'A'..'Z'|'_'|'0'..'9'){_ttype=IDENT;})?;
//stuff that starts with ':'
COLON options { paraphrase = ":"; } :
':' { $setText("':'");}(
( (':'){ _ttype=DBL_COLON;}{ $setText("'::'");} ) |
( ('-'){ _ttype=TURNSTILE;}{ $setText("':-'");}) |
( ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+{_ttype=SPECIAL_CHAR_LITERAL;})
)?;
//stuff that starts with =
EQUAL options { paraphrase = "="; } :
'=' { $setText("'='"); } (
( ('.' '.'){ _ttype=UNIV;}{ $setText("'=..'"); })|
( (':' '='){ _ttype=NUM_EQUAL;}{ $setText("'=:='"); })|
( ('\\' '='){ _ttype=NOT_NUM_EQUAL;}{ $setText("'=\\='"); })|
( ('='){_ttype=LITERALLY_EQUAL;}{ $setText("'=='"); }) |
( ('<'){_ttype=LESS_THAN_OR_EQUAL;}{ $setText("'=<'"); }) |
( ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+{_ttype=SPECIAL_CHAR_LITERAL;})
)?
;
//stuff that starts with \
BACKSLASH options { paraphrase = "\\"; } :
'\\' { $setText("'\\'"); } (
( ('=') {_ttype=NOT_EQUAL;}{$setText("'\\='");} (
( ('=') {_ttype=NOT_LITERALLY_EQUAL;} {$setText("'\\=='");}) |
( ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+{_ttype=SPECIAL_CHAR_LITERAL;}) )? ) |
( ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+{_ttype=SPECIAL_CHAR_LITERAL;})
)?;
//stuff that starts with <
LESS_THAN options { paraphrase = "<"; } :
'<' { $setText("'<'");} (
( ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+{_ttype=SPECIAL_CHAR_LITERAL;})
)?;
//stuff that starts with >
GREATER_THAN options { paraphrase = ">"; } :
'>' { $setText("'>'");} (
(('=') {_ttype=GREATER_THAN_OR_EQUAL;} { $setText("'>='");}) |
( ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+{_ttype=SPECIAL_CHAR_LITERAL;})
)?;
BEFORE options { paraphrase = "@<"; } :
'@' '<' { $setText("'@<'");};
AFTER options { paraphrase = "@>"; } : '@' '>' { $setText("'@>'");};
NOT_BEFORE options { paraphrase = "@>="; } : '@' '>' '=' { $setText("'@>='");} ;
NOT_AFTER options { paraphrase = "@=<"; } : '@' '=' '<' { $setText("'@=<'");} ;
HAT options { paraphrase = "^"; } : '^' { $setText("'^'");} ;
QUOTE options { paraphrase = "'"; } : '\'';
PLUS options { paraphrase = "+";} : '+';
MINUS options { paraphrase = "-";} : '-';
STAR options { paraphrase = "*";} : '*';
DIV options { paraphrase = "/";} : '/';
LPAREN options { paraphrase = "("; } : '(';
RPAREN options { paraphrase = ")"; } : ')';
LBRACE options { paraphrase = "{"; } : '{';
RBRACE options { paraphrase = "}"; } : '}';
LBRACK options { paraphrase = "["; } : '[';
RBRACK options { paraphrase = "]"; } : ']';
SEMI options { paraphrase = ";"; } : ';';
COMMA options { paraphrase = ","; } : ',';
DBLQUOTE options { paraphrase = "\""; } : '"';
TILDE options { paraphrase = "~";} : '~';
PIPE options { paraphrase = "|";} : '|';
// Whitespace
WS : ( ' '
| '\t'
| '\f'
// newlines
| ( "\r\n"
| '\r'
| '\n'
)
{ newline(); }
)
{ _ttype = Token.SKIP; }
;
STRING_LITERAL options {paraphrase = "string literal";}
:'\'' ( "''" | ~'\'' )* '\''
;
DBLQUOTED options {paraphrase = "double quoted data";}
:DBLQUOTE (( "\"\"" | ~'"' )*) DBLQUOTE
;
// SPECIAL_CHAR_LITERAL options {paraphrase = "special character literal";}
// {boolean isTurnstile=false; boolean isDblColon=false; boolean isPlus=false; boolean isMinus=false; boolean isStar=false; boolean isDiv=false; boolean isEqual=false; boolean isColon=false; boolean isBackslash=false;}
// : ("+" {_ttype = PLUS; isPlus=true;})
// {isPlus}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isPlus=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// | ("-" {_ttype = MINUS; isMinus=true;})
// {isMinus}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isMinus=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// | ("*" {_ttype = STAR; isStar=true;})
// {isStar}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isStar=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// | ("/" {_ttype = DIV; isDiv=true;})
// {isDiv}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isDiv=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// | ("=" {_ttype = EQUAL; isEqual=true;})
// {isEqual}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isEqual=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// | ("\\" {_ttype = BACKSLASH; isBackslash=true;})
// {isBackslash}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isBackslash=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// // : PLUS ('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+
// // | MINUS ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+
// // | STAR ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+
// // | DIV ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+
// | (':' {_ttype = COLON; isColon=true;})
// {isColon}?
// (
// ('-' {_ttype = TURNSTILE; isColon=false; isTurnstile=true;})
// {isTurnstile}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isTurnstile=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// |
// (':' {_ttype = DBL_COLON; isColon=false; isDblColon=true;})
// {isDblColon}?
// (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isDblColon=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// )?
// // | (":-" {_ttype = TURNSTILE; isTurnstile=true;})
// // {isTurnstile}?
// // (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isTurnstile=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// // | ("::" {_ttype = DBL_COLON; isDblColon=true;})
// // {isDblColon}?
// // (('+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {isDblColon=false; _ttype = SPECIAL_CHAR_LITERAL;})?
// | ('^' | '<' | '>' | '`' | ':' | '?' | '@' | '#' | '$' | '&' | '\\') ( '+' | '*' | '=' | '^' | '<' | '>' | '=' | '`' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\') ( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')*
// | ('^' | '<' | '>' | '`' | ':' | '?' | '@' | '#' | '$' | '&' | '\\')+
// ;
NUM_INT options {paraphrase = "number";}
{boolean isDecimal=false; boolean isFloat = false;}
: '.' {_ttype = DOT;}
( (('0'..'9')+ (EXPONENT)? { _ttype = NUM_FLOAT;})
// | (( '+' | '-' | '*' | '^' | '<' | '>' | '=' | '`' | ':' | '.' | '?' | '@' | '#' | '$' | '&' | '/' | '\\')+ {_ttype = SPECIAL_CHAR_LITERAL;})
)?
| ('0'..'9') ('0'..'9')* {isDecimal = true;}
{isDecimal}?
( ('.' ('0'..'9')* (EXPONENT)?) { _ttype = NUM_FLOAT;}
| SIGNED_EXPONENT { _ttype = NUM_FLOAT;}
| ((('E' | 'e') ('0'..'9')+) {_ttype = NUM_FLOAT; isFloat = true;}
{isFloat}?
// DH edited Mar 2005
// (('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')* {_ttype = IDENT;})?
(('a'..'z'|'A'..'Z'|'_'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de')* {_ttype = IDENT;})?
)
)?
;
IDENT options {paraphrase = "atom";}
// DH edited Mar 2005
// : ('a'..'z') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*
: ('a'..'z'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de')*
;
VARIABLE options {paraphrase = "variable";}
// DH edited Mar 2005
: ('A'..'D' | 'F'..'Z' | '_'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de')*
| 'E' ('0'..'9')* ('a'..'z'|'A'..'Z'|'_'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00df'..'\u00f6'|'\u00f8'..'\u00ff'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00de')*
| 'E'
;
protected
EXPONENT options {paraphrase = "exponent";}
: ('E'|'e') ('+'|'-')? ('0'..'9')+
;
protected
SIGNED_EXPONENT options {paraphrase = "signed exponent";}
: ('E'|'e') ('+'|'-') ('0'..'9')+
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -