mirror of
https://codeberg.org/ProgramSnail/truffle-lama.git
synced 2025-12-05 22:38:43 +00:00
most part of attributed grammar (without scopes and string casts) done, if node fixed
This commit is contained in:
parent
515207481f
commit
b08a2e0fff
13 changed files with 1849 additions and 1773 deletions
|
|
@ -4,6 +4,9 @@ import com.oracle.truffle.api.frame.VirtualFrame;
|
||||||
import com.oracle.truffle.api.nodes.UnexpectedResultException;
|
import com.oracle.truffle.api.nodes.UnexpectedResultException;
|
||||||
import com.oracle.truffle.api.profiles.ConditionProfile;
|
import com.oracle.truffle.api.profiles.ConditionProfile;
|
||||||
import org.programsnail.truffle_lama.nodes.LamaExpressionNode;
|
import org.programsnail.truffle_lama.nodes.LamaExpressionNode;
|
||||||
|
import org.programsnail.truffle_lama.runtime.LamaUnit;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public final class LamaIfNode extends LamaExpressionNode {
|
public final class LamaIfNode extends LamaExpressionNode {
|
||||||
@Child
|
@Child
|
||||||
|
|
@ -19,9 +22,10 @@ public final class LamaIfNode extends LamaExpressionNode {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object executeGeneric(VirtualFrame frame) throws UnexpectedResultException {
|
public Object executeGeneric(VirtualFrame frame) throws UnexpectedResultException {
|
||||||
if (this.condition.profile(this.conditionExpr.executeBoolean(frame))) {
|
if (this.condition.profile(this.conditionExpr.executeBoolean(frame))) {
|
||||||
return this.thenExpr.executeGeneric(frame);
|
return this.thenExpr.executeGeneric(frame);
|
||||||
}
|
}
|
||||||
return this.elseExpr; // TODO: cases with no else
|
// TODO: or throw ??
|
||||||
|
return Objects.requireNonNullElse(this.elseExpr, LamaUnit.INSTANCE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ grammar Lama;
|
||||||
{
|
{
|
||||||
// DO NOT MODIFY - generated from Lama.g4
|
// DO NOT MODIFY - generated from Lama.g4
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -110,27 +111,66 @@ public static LamaExpressionNode parseLama(LamaLanguage language, Source source)
|
||||||
|
|
||||||
// parser
|
// parser
|
||||||
|
|
||||||
lama : /* (import_expression)* */ scope_expression EOF;
|
lama returns [LamaExpressionNode result]:
|
||||||
|
/* (import_expression)* */
|
||||||
|
scope_expression { $result = $scope_expression.result; }
|
||||||
|
EOF;
|
||||||
|
|
||||||
//import_expression : 'import' UIDENT ';';
|
//import_expression : 'import' UIDENT ';';
|
||||||
|
|
||||||
scope_expression :
|
scope_expression returns [LamaExpressionNode result]:
|
||||||
definition+ (expression)?
|
definition { $result = $expression.result; }
|
||||||
| expression;
|
(
|
||||||
|
definition { $result = factory.createSeqNode($result, $expression.result); }
|
||||||
|
)* (
|
||||||
|
expression { $result = factory.createSeqNode($result, $expression.result); }
|
||||||
|
)?
|
||||||
|
| expression { $result = $expression.result; }
|
||||||
|
;
|
||||||
|
|
||||||
definition returns [LamaExpressionNode result]:
|
definition returns [LamaExpressionNode result]:
|
||||||
variable_definition
|
variable_definition { $result = $variable_definition.result; }
|
||||||
| function_definition
|
| function_definition { $result = $function_definition.result; }
|
||||||
|
;
|
||||||
// | infix_definition;
|
// | infix_definition;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
variable_definition: ('var' | 'public') variable_definition_sequence;
|
variable_definition returns [LamaExpressionNode result]
|
||||||
variable_definition_sequence : variable_definition_item (',' variable_definition_item)* ';';
|
: { boolean is_public = false; }
|
||||||
variable_definition_item : LIDENT ('=' basic_expression)?;
|
('var' |
|
||||||
function_definition returns [LamaExpressionNode result]: ('public')? 'fun' LIDENT '(' (function_arguments)? ')' function_body;
|
'public' { is_public = true; }
|
||||||
function_arguments : LIDENT (',' LIDENT)*;
|
)
|
||||||
function_body returns [LamaExpressionNode result]: '{' scope_expression '}';
|
variable_definition_sequence[is_public] { $result = $variable_definition_sequence.result; }
|
||||||
|
;
|
||||||
|
variable_definition_sequence[boolean is_public] returns [LamaExpressionNode result]:
|
||||||
|
variable_definition_item { $result = factory.addVarNode($variable_definition_item.name, $variable_definition_item.expr); }
|
||||||
|
(','
|
||||||
|
variable_definition_item { $result = factory.addSeqNode($result, factory.addVarNode($variable_definition_item.name, $variable_definition_item.expr)); }
|
||||||
|
)* ';';
|
||||||
|
variable_definition_item returns [TruffleString name, Optional<LamaExpressionNode> expr]
|
||||||
|
: { $expr = Optional.empty(); }
|
||||||
|
LIDENT { $name = $LIDENT; }
|
||||||
|
('='
|
||||||
|
basic_expression { $expr = Optional.of($basic_expression.result); }
|
||||||
|
)?;
|
||||||
|
function_definition returns [LamaExpressionNode result] // TODO: scopes
|
||||||
|
: { boolean is_public = false; }
|
||||||
|
(
|
||||||
|
'public' { is_public = true; }
|
||||||
|
)? 'fun' LIDENT '(' (function_arguments)? ')' function_body
|
||||||
|
{ $result = factory.addFunctionDefinition($LIDENT, $function_arguments.args, $function_body.result); }
|
||||||
|
;
|
||||||
|
function_arguments returns [List<TruffleString> args]
|
||||||
|
: { $args = new ArrayList<TruffleString>(); }
|
||||||
|
LIDENT { $args.addLast($LIDENT); }
|
||||||
|
(','
|
||||||
|
LIDENT { $args.addLast($LIDENT); }
|
||||||
|
)*;
|
||||||
|
function_body returns [LamaExpressionNode result]:
|
||||||
|
'{'
|
||||||
|
scope_expression { $result = $scope_expression.result; }
|
||||||
|
'}';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
@ -141,93 +181,217 @@ function_body returns [LamaExpressionNode result]: '{' scope_expression '}';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
expression returns [LamaExpressionNode result]: basic_expression (';' expression)?;
|
expression returns [LamaExpressionNode result]:
|
||||||
basic_expression returns [LamaExpressionNode result]: binary_expression;
|
basic_expression { $result = $basic_expression.result; }
|
||||||
binary_expression returns [LamaExpressionNode result]: postfix_expression (any_infix postfix_expression)*;
|
(';'
|
||||||
postfix_expression returns [LamaExpressionNode result]: ('-')? primary (postfix)*;
|
expression { $result = factory.createSeqNode($result, $expression.result); }
|
||||||
postfix :
|
)?; // TODO: additional things, exit scope ??
|
||||||
'(' expression (',' expression)* ')'
|
basic_expression returns [LamaExpressionNode result]: binary_expression { $result = $binary_expression.result; };
|
||||||
|
binary_expression returns [LamaExpressionNode result]:
|
||||||
|
postfix_expression { $result = $postfix_expression.result; }
|
||||||
|
(
|
||||||
|
any_infix
|
||||||
|
postfix_expression { $result = factory.createBinopNode($any_infix.result, $result, $postfix_expression.result); }
|
||||||
|
)*;
|
||||||
|
postfix_expression returns [LamaExpressionNode result]
|
||||||
|
: { boolean with_minus = false; }
|
||||||
|
(
|
||||||
|
MINUS { with_minus = true; }
|
||||||
|
)?
|
||||||
|
primary { $result = $primary.result; }
|
||||||
|
(
|
||||||
|
postfix {
|
||||||
|
if ($postfix.access_index.isPresent()) {
|
||||||
|
$result = factory.createElemNode($result, ($postfix.access_index.get())); // TODO: or RefElem node
|
||||||
|
} else {
|
||||||
|
$result = factory.createCallNode($result, $postfix.args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)*; // TODO: elem or elem ref for access node ??
|
||||||
|
postfix returns [List<LamaExpressionNode> args, Optional<LamaExpressionNode> access_index]
|
||||||
|
: { $args = new ArrayList<LamaExpressionNode>(); $access_index = Option.empty(); }
|
||||||
|
'('
|
||||||
|
expression { $args.addLast($expression.result); }
|
||||||
|
(','
|
||||||
|
expression { $args.addLast($expression.result); }
|
||||||
|
)*
|
||||||
|
')'
|
||||||
| '(' ')'
|
| '(' ')'
|
||||||
| '[' expression ']';
|
| '['
|
||||||
|
expression { $access_index = Option.of($expression.result); }
|
||||||
|
']'
|
||||||
|
;
|
||||||
|
|
||||||
primary returns [LamaExpressionNode result]:
|
primary returns [LamaExpressionNode result]:
|
||||||
DECIMAL_LITERAL
|
DECIMAL_LITERAL { $result = factory.createConstNode($DECIMAL_LITERAL); } // minus - inside decimal literal definition
|
||||||
| STRING_LITERAL
|
| STRING_LITERAL { $result = factory.createStringNode(LamaStrings.convertStringLiteral($STRING_LITERAL)); }
|
||||||
| CHAR_LITERAL
|
| CHAR_LITERAL { $result = factory.createConstNode(LamaStrings.convertCharLiteral($CHAR_LITERAL)); }
|
||||||
| LIDENT
|
| LIDENT { $result = factory.createRefNode($LIDENT); }
|
||||||
| 'true'
|
| 'true' { $result = factory.createConstNode(1); }
|
||||||
| 'false'
|
| 'false' { $result = factory.createConstNode(0); }
|
||||||
| 'infix' any_infix
|
| 'infix' any_infix { $result = factory.createRefNode($any_infix.result); }
|
||||||
| 'fun' '(' function_arguments ')' function_body
|
| 'fun' '(' function_arguments ')' function_body
|
||||||
| 'skip'
|
{ $result = factory.addClosureDefinition($function_arguments.args, $function_body.result); } // TODO: scopes
|
||||||
| '(' scope_expression ')'
|
| 'skip' { $result = factory.createSkipNode(); }
|
||||||
| list_expression
|
| '(' scope_expression ')' { $result = $scope_expression.result; } // add some scope for correct attribution ??
|
||||||
| array_expression
|
| list_expression { $result = $list_expression.result; }
|
||||||
| s_expression
|
| array_expression { $result = $array_expression.result; }
|
||||||
| if_expression
|
| s_expression { $result = $s_expression.result; }
|
||||||
| while_do_expression
|
| if_expression { $result = $if_expression.result; }
|
||||||
| do_while_expression
|
| while_do_expression { $result = $while_do_expression.result; }
|
||||||
| for_expression
|
| do_while_expression { $result = $do_while_expression.result; }
|
||||||
| case_expression
|
| for_expression { $result = $for_expression.result; }
|
||||||
|
| case_expression { $result = $case_expression.result; }
|
||||||
;
|
;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
array_expression returns [LamaExpressionNode result]: '[' (expression (',' expression)* )? ']';
|
array_expression returns [LamaExpressionNode result]
|
||||||
list_expression returns [LamaExpressionNode result]: '{' (expression (',' expression)* )? '}';
|
: { List<LamaExpressionNode> elems = new ArrayList<LamaExpressionNode>(); }
|
||||||
s_expression returns [LamaExpressionNode result]: /*TODO */ UIDENT ('(' (expression (',' expression)* )? ')')?;
|
'[' (
|
||||||
|
expression { elems.addLast($expression.result); }
|
||||||
|
(','
|
||||||
|
expression { elems.addLast($expression.result); }
|
||||||
|
)*
|
||||||
|
)? ']'
|
||||||
|
{ $result = factory.createArrayNode(elems); }
|
||||||
|
;
|
||||||
|
list_expression returns [LamaExpressionNode result]
|
||||||
|
: { List<LamaExpressionNode> elems = new ArrayList<LamaExpressionNode>(); }
|
||||||
|
'{' (
|
||||||
|
expression { elems.addLast($expression.result); }
|
||||||
|
(','
|
||||||
|
expression {elems.addLast($expression.result); }
|
||||||
|
)*
|
||||||
|
)? '}'
|
||||||
|
{ $result = factory.createListSexpNode(elems); }
|
||||||
|
;
|
||||||
|
s_expression returns [LamaExpressionNode result]
|
||||||
|
: { List<LamaExpressionNode> elems = new ArrayList<LamaExpressionNode>(); }
|
||||||
|
UIDENT
|
||||||
|
('(' (
|
||||||
|
expression {elems.addLast($expression.result); }
|
||||||
|
(','
|
||||||
|
expression {elems.addLast($expression.result); }
|
||||||
|
)*
|
||||||
|
)? ')')?
|
||||||
|
{ $result = factory.createSexpNode($UIDENT, elems); }
|
||||||
|
;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
if_expression returns [LamaExpressionNode result]: 'if' expression 'then' scope_expression (else_part)? 'fi';
|
if_expression returns [LamaExpressionNode result]
|
||||||
else_part :
|
: { LamaExpressionNode do_else = null; }
|
||||||
'elif' expression 'then' scope_expression (else_part)?
|
'if' expression 'then' scope_expression (
|
||||||
| 'else' scope_expression;
|
else_part { do_else = $else_part.result; }
|
||||||
|
)? 'fi'
|
||||||
|
{ $result = factory.createIfNode($expression.result, $scope_expression.result, do_else); }
|
||||||
|
;
|
||||||
|
else_part returns [LamaExpressionNode result]:
|
||||||
|
'elif' { LamaExpressionNode do_else = null; } expression 'then' scope_expression (
|
||||||
|
else_part { do_else = $else_part.result; }
|
||||||
|
)? { $result = factory.createIfNode($expression.result, $scope_expression.result, do_else); }
|
||||||
|
| 'else' scope_expression { $result = $scope_expression.result; };
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
while_do_expression returns [LamaExpressionNode result]: 'while' expression 'do' scope_expression 'od';
|
while_do_expression returns [LamaExpressionNode result]: 'while' expression 'do' scope_expression 'od'
|
||||||
do_while_expression returns [LamaExpressionNode result]: 'do' scope_expression 'while' expression 'od';
|
{ $result = factory.createWhileNode($expression.result, $scope_expression.result); };
|
||||||
for_expression returns [LamaExpressionNode result]: 'for' scope_expression ',' expression ',' expression 'do' scope_expression 'od';
|
do_while_expression returns [LamaExpressionNode result]: 'do' scope_expression 'while' expression 'od'
|
||||||
|
{ $result = factory.createDoWhileNode($expression.result, $scope_expression.result); };
|
||||||
|
for_expression returns [LamaExpressionNode result]:
|
||||||
|
'for' init=scope_expression ',' cond=expression ',' inc=expression 'do' expr=scope_expression 'od'
|
||||||
|
// TODO: add scope, etc.
|
||||||
|
{ $result = factory.createSeqNode($init.result, factory.createWhileNode($cond.result, factory.createSeqNode($expr.result, $inc.result))); }
|
||||||
|
;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
pattern returns [LamaPattern result]: cons_pattern | simple_pattern;
|
pattern returns [LamaPattern result]:
|
||||||
cons_pattern returns [LamaPattern result]: simple_pattern ':' pattern;
|
cons_pattern { $result = $cons_pattern.result; }
|
||||||
|
| simple_pattern { $result = $simple_pattern.result; }
|
||||||
|
;
|
||||||
|
cons_pattern returns [LamaPattern result]: simple_pattern ':' pattern { $result = factory.createSexpPattern("cons", {$simple_pattern.result, $pattern.result}); };
|
||||||
simple_pattern returns [LamaPattern result]:
|
simple_pattern returns [LamaPattern result]:
|
||||||
wildcard_pattern
|
wildcard_pattern { $result = $wildcard_pattern.result; }
|
||||||
| s_expr_pattern
|
| s_expr_pattern { $result = $s_expr_pattern.result; }
|
||||||
| array_pattern
|
| array_pattern { $result = $array_pattern.result; }
|
||||||
| list_pattern
|
| list_pattern { $result = $list_pattern.result; }
|
||||||
| LIDENT ('@' pattern)?
|
| LIDENT
|
||||||
| (MINUS)? DECIMAL_LITERAL
|
{ LamaPattern pat = null; }
|
||||||
| STRING_LITERAL
|
('@'
|
||||||
| CHAR_LITERAL
|
pattern { pat = $pattern.result; }
|
||||||
| 'true'
|
)?
|
||||||
| 'false'
|
{ $result = factory.createNamedPattern($LIDENT, Objects.requireNonNullElse(pat, factory.createWildcardPattern()); }
|
||||||
| '#' 'box'
|
| { boolean is_negative = false; }
|
||||||
| '#' 'val'
|
(
|
||||||
| '#' 'str'
|
MINUS { is_negative = true; }
|
||||||
| '#' 'array'
|
)?
|
||||||
| '#''sexp'
|
DECIMAL_LITERAL { $result = is_negative ? factory.createNegativeConstPattern($DECIMAL_LITERAL) : factory.createConstPattern($DECIMAL_LITERAL); }
|
||||||
| '#' 'fun'
|
| STRING_LITERAL { $result = factory.createStringPattern(LamaStrings.convertStringLiteral($STRING_LITERAL)); }
|
||||||
| '(' pattern ')'
|
| CHAR_LITERAL { $result = factory.createConstPattern(LamaStrings.convertCharLiteral($CHAR_LITERAL)); }
|
||||||
|
| 'true' { $result = factory.createConstPattern(1); }
|
||||||
|
| 'false' { $result = factory.createConstPattern(0); }
|
||||||
|
| '#' 'box' { $result = factory.createBoxedPattern(); }
|
||||||
|
| '#' 'val' { $result = factory.createUnBoxedPattern(); }
|
||||||
|
| '#' 'str' { $result = factory.createStringTagPattern(); }
|
||||||
|
| '#' 'array' { $result = factory.createArrayTagPattern(); }
|
||||||
|
| '#''sexp' { $result = factory.createSexpTagPattern(); }
|
||||||
|
| '#' 'fun' { $result = factory.createClosureTagPattern(); }
|
||||||
|
| '(' pattern ')' { $result = $pattern.result; } // add some scope for correct attribution ??
|
||||||
;
|
;
|
||||||
|
|
||||||
wildcard_pattern returns [LamaPattern result]: '_';
|
wildcard_pattern returns [LamaPattern result]: '_' { $result = factory.createWildcardPattern(); };
|
||||||
s_expr_pattern returns [LamaPattern result]: UIDENT ('(' (pattern (',' pattern)*)? ')')?;
|
s_expr_pattern returns [LamaPattern result]
|
||||||
array_pattern returns [LamaPattern result]: '[' (pattern (',' pattern)*)? ']';
|
: { List<LamaPattern> elems = new ArrayList<LamaPattern>(); }
|
||||||
list_pattern returns [LamaPattern result]: '{' (pattern (',' pattern)*)? '}';
|
UIDENT
|
||||||
|
('(' (
|
||||||
|
pattern { elems.addLast($pattern.result); }
|
||||||
|
(','
|
||||||
|
pattern { elems.addLast($pattern.result); }
|
||||||
|
)*)?
|
||||||
|
')')?
|
||||||
|
{ $result = factory.createSexpPattern($UIDENT, elems); }
|
||||||
|
;
|
||||||
|
array_pattern returns [LamaPattern result]
|
||||||
|
: { List<LamaPattern> elems = new ArrayList<LamaPattern>(); }
|
||||||
|
'[' (
|
||||||
|
pattern { elems.addLast($pattern.result); }
|
||||||
|
(','
|
||||||
|
pattern { elems.addLast($pattern.result); }
|
||||||
|
)*)?
|
||||||
|
']'
|
||||||
|
{ $result = factory.createArrayPattern(elems); }
|
||||||
|
;
|
||||||
|
list_pattern returns [LamaPattern result]:
|
||||||
|
'{' (
|
||||||
|
pattern { $result = $pattern.result; }
|
||||||
|
(','
|
||||||
|
pattern { $result = factory.createSexpPattern("cons", {$result, $pattern.result}); } //FIXME: wrong order
|
||||||
|
)*)?
|
||||||
|
'}';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
case_expression returns [LamaExpressionNode result]: 'case' expression 'of' case_branches 'esac';
|
case_expression returns [LamaExpressionNode result]:
|
||||||
case_branches : case_branch ('|' case_branch)*;
|
'case' expression 'of' case_branches 'esac' { $result = factory.createCaseNode($expression.result, $case_branches.pats, $case_branches.exprs); }
|
||||||
case_branch : pattern '->' scope_expression;
|
;
|
||||||
|
case_branches returns [List<LamaPattern> pats, List<LamaExpressionNode> exprs]
|
||||||
|
: { $pats = new ArrayList<LamaPattern>(); $exprs = new ArrayList<LamaExpressionNode> exprs; }
|
||||||
|
case_branch { $pats.addLast($case_branch.pat); $exprs.addLast($case_branch.expr); }
|
||||||
|
('|'
|
||||||
|
case_branch { $pats.addLast($case_branch.pat); $exprs.addLast($case_branch.expr); }
|
||||||
|
)*;
|
||||||
|
case_branch returns [LamaPattern pat, LamaExpressionNode expr]:
|
||||||
|
pattern { $pat = $pattern.result; }
|
||||||
|
'->'
|
||||||
|
scope_expression { $expr = $scope_expression.result; }
|
||||||
|
;
|
||||||
|
|
||||||
//
|
any_infix returns [String result]:
|
||||||
|
INFIX { $result = $INFIX; }
|
||||||
any_infix : INFIX | MINUS;
|
| MINUS { $result = $MINUS; }
|
||||||
|
;
|
||||||
|
|
||||||
// lexer
|
// lexer
|
||||||
|
|
||||||
|
|
@ -239,13 +403,13 @@ fragment NON_ZERO_DIGIT : [1-9];
|
||||||
fragment DIGIT : [0-9];
|
fragment DIGIT : [0-9];
|
||||||
fragment STRING_CHAR : ~('"' | '\r' | '\n');
|
fragment STRING_CHAR : ~('"' | '\r' | '\n');
|
||||||
|
|
||||||
MINUS: '-';
|
MINUS : '-';
|
||||||
INFIX : [+*/%$#@!|&^?<>.:=\-]+;
|
INFIX : [+*/%$#@!|&^?<>.:=\-]+;
|
||||||
UIDENT : [A-Z][a-zA-Z_0-9]*;
|
UIDENT : [A-Z][a-zA-Z_0-9]*;
|
||||||
LIDENT : [a-z][a-zA-Z_0-9]*;
|
LIDENT : [a-z][a-zA-Z_0-9]*;
|
||||||
|
|
||||||
CHAR_LITERAL : '\'' STRING_CHAR '\'';
|
CHAR_LITERAL : '\'' STRING_CHAR '\'';
|
||||||
STRING_LITERAL : '"' STRING_CHAR* '"';
|
STRING_LITERAL : '"' STRING_CHAR* '"';
|
||||||
DECIMAL_LITERAL : '0' | ('-'?) NON_ZERO_DIGIT DIGIT*;
|
DECIMAL_LITERAL : '0' | /*('-'?)*/ NON_ZERO_DIGIT DIGIT*;
|
||||||
|
|
||||||
WORD : [a-zA-Z_0-9]+;
|
WORD : [a-zA-Z_0-9]+;
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -37,66 +37,54 @@ T__35=36
|
||||||
T__36=37
|
T__36=37
|
||||||
T__37=38
|
T__37=38
|
||||||
T__38=39
|
T__38=39
|
||||||
T__39=40
|
WS=40
|
||||||
T__40=41
|
COMMENT=41
|
||||||
T__41=42
|
LINE_COMMENT=42
|
||||||
T__42=43
|
MINUS=43
|
||||||
T__43=44
|
INFIX=44
|
||||||
T__44=45
|
UIDENT=45
|
||||||
T__45=46
|
LIDENT=46
|
||||||
WS=47
|
CHAR_LITERAL=47
|
||||||
COMMENT=48
|
STRING_LITERAL=48
|
||||||
LINE_COMMENT=49
|
DECIMAL_LITERAL=49
|
||||||
WORD=50
|
WORD=50
|
||||||
INFIX=51
|
'var'=1
|
||||||
UIDENT=52
|
'public'=2
|
||||||
LIDENT=53
|
','=3
|
||||||
CHAR_LITERAL=54
|
';'=4
|
||||||
STRING_LITERAL=55
|
'='=5
|
||||||
DECIMAL_LITERAL=56
|
'fun'=6
|
||||||
'import'=1
|
'('=7
|
||||||
';'=2
|
')'=8
|
||||||
'var'=3
|
'{'=9
|
||||||
'public'=4
|
'}'=10
|
||||||
','=5
|
'['=11
|
||||||
'='=6
|
']'=12
|
||||||
'fun'=7
|
'true'=13
|
||||||
'('=8
|
'false'=14
|
||||||
')'=9
|
'infix'=15
|
||||||
'{'=10
|
'skip'=16
|
||||||
'}'=11
|
'if'=17
|
||||||
'infix'=12
|
'then'=18
|
||||||
'infixl'=13
|
'fi'=19
|
||||||
'infixr'=14
|
'elif'=20
|
||||||
'at'=15
|
'else'=21
|
||||||
'before'=16
|
'while'=22
|
||||||
'after'=17
|
'do'=23
|
||||||
'-'=18
|
'od'=24
|
||||||
'['=19
|
'for'=25
|
||||||
']'=20
|
':'=26
|
||||||
'true'=21
|
'@'=27
|
||||||
'false'=22
|
'#'=28
|
||||||
'skip'=23
|
'box'=29
|
||||||
'if'=24
|
'val'=30
|
||||||
'then'=25
|
'str'=31
|
||||||
'fi'=26
|
'array'=32
|
||||||
'elif'=27
|
'sexp'=33
|
||||||
'else'=28
|
'_'=34
|
||||||
'while'=29
|
'case'=35
|
||||||
'do'=30
|
'of'=36
|
||||||
'od'=31
|
'esac'=37
|
||||||
'for'=32
|
'|'=38
|
||||||
'|'=33
|
'->'=39
|
||||||
':'=34
|
'-'=43
|
||||||
'@'=35
|
|
||||||
'#'=36
|
|
||||||
'box'=37
|
|
||||||
'val'=38
|
|
||||||
'str'=39
|
|
||||||
'array'=40
|
|
||||||
'sexp'=41
|
|
||||||
'_'=42
|
|
||||||
'case'=43
|
|
||||||
'of'=44
|
|
||||||
'esac'=45
|
|
||||||
'->'=46
|
|
||||||
|
|
|
||||||
|
|
@ -24,18 +24,6 @@ public class LamaBaseListener implements LamaListener {
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitLama(LamaParser.LamaContext ctx) { }
|
@Override public void exitLama(LamaParser.LamaContext ctx) { }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterImport_expression(LamaParser.Import_expressionContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitImport_expression(LamaParser.Import_expressionContext ctx) { }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
|
@ -132,54 +120,6 @@ public class LamaBaseListener implements LamaListener {
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitFunction_body(LamaParser.Function_bodyContext ctx) { }
|
@Override public void exitFunction_body(LamaParser.Function_bodyContext ctx) { }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterInfix_definition(LamaParser.Infix_definitionContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitInfix_definition(LamaParser.Infix_definitionContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterInfix_head(LamaParser.Infix_headContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitInfix_head(LamaParser.Infix_headContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterInfixity(LamaParser.InfixityContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitInfixity(LamaParser.InfixityContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void enterLevel(LamaParser.LevelContext ctx) { }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation does nothing.</p>
|
|
||||||
*/
|
|
||||||
@Override public void exitLevel(LamaParser.LevelContext ctx) { }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
|
@ -468,6 +408,18 @@ public class LamaBaseListener implements LamaListener {
|
||||||
* <p>The default implementation does nothing.</p>
|
* <p>The default implementation does nothing.</p>
|
||||||
*/
|
*/
|
||||||
@Override public void exitCase_branch(LamaParser.Case_branchContext ctx) { }
|
@Override public void exitCase_branch(LamaParser.Case_branchContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void enterAny_infix(LamaParser.Any_infixContext ctx) { }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation does nothing.</p>
|
||||||
|
*/
|
||||||
|
@Override public void exitAny_infix(LamaParser.Any_infixContext ctx) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,6 @@ public class LamaBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements L
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitLama(LamaParser.LamaContext ctx) { return visitChildren(ctx); }
|
@Override public T visitLama(LamaParser.LamaContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation returns the result of calling
|
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
|
||||||
*/
|
|
||||||
@Override public T visitImport_expression(LamaParser.Import_expressionContext ctx) { return visitChildren(ctx); }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
|
@ -82,34 +75,6 @@ public class LamaBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements L
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitFunction_body(LamaParser.Function_bodyContext ctx) { return visitChildren(ctx); }
|
@Override public T visitFunction_body(LamaParser.Function_bodyContext ctx) { return visitChildren(ctx); }
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation returns the result of calling
|
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
|
||||||
*/
|
|
||||||
@Override public T visitInfix_definition(LamaParser.Infix_definitionContext ctx) { return visitChildren(ctx); }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation returns the result of calling
|
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
|
||||||
*/
|
|
||||||
@Override public T visitInfix_head(LamaParser.Infix_headContext ctx) { return visitChildren(ctx); }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation returns the result of calling
|
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
|
||||||
*/
|
|
||||||
@Override public T visitInfixity(LamaParser.InfixityContext ctx) { return visitChildren(ctx); }
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*
|
|
||||||
* <p>The default implementation returns the result of calling
|
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
|
||||||
*/
|
|
||||||
@Override public T visitLevel(LamaParser.LevelContext ctx) { return visitChildren(ctx); }
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
|
@ -278,4 +243,11 @@ public class LamaBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements L
|
||||||
* {@link #visitChildren} on {@code ctx}.</p>
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
*/
|
*/
|
||||||
@Override public T visitCase_branch(LamaParser.Case_branchContext ctx) { return visitChildren(ctx); }
|
@Override public T visitCase_branch(LamaParser.Case_branchContext ctx) { return visitChildren(ctx); }
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
|
* <p>The default implementation returns the result of calling
|
||||||
|
* {@link #visitChildren} on {@code ctx}.</p>
|
||||||
|
*/
|
||||||
|
@Override public T visitAny_infix(LamaParser.Any_infixContext ctx) { return visitChildren(ctx); }
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -25,9 +25,8 @@ public class LamaLexer extends Lexer {
|
||||||
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
|
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
|
||||||
T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
|
T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31,
|
||||||
T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
|
T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38,
|
||||||
T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45,
|
T__38=39, WS=40, COMMENT=41, LINE_COMMENT=42, MINUS=43, INFIX=44, UIDENT=45,
|
||||||
T__45=46, WS=47, COMMENT=48, LINE_COMMENT=49, WORD=50, INFIX=51, UIDENT=52,
|
LIDENT=46, CHAR_LITERAL=47, STRING_LITERAL=48, DECIMAL_LITERAL=49, WORD=50;
|
||||||
LIDENT=53, CHAR_LITERAL=54, STRING_LITERAL=55, DECIMAL_LITERAL=56;
|
|
||||||
public static String[] channelNames = {
|
public static String[] channelNames = {
|
||||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||||
};
|
};
|
||||||
|
|
@ -42,22 +41,21 @@ public class LamaLexer extends Lexer {
|
||||||
"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
|
"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
|
||||||
"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
|
"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
|
||||||
"T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
|
"T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
|
||||||
"T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40",
|
"T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "WS", "COMMENT",
|
||||||
"T__41", "T__42", "T__43", "T__44", "T__45", "WS", "COMMENT", "LINE_COMMENT",
|
"LINE_COMMENT", "NON_ZERO_DIGIT", "DIGIT", "STRING_CHAR", "MINUS", "INFIX",
|
||||||
"NON_ZERO_DIGIT", "DIGIT", "STRING_CHAR", "WORD", "INFIX", "UIDENT",
|
"UIDENT", "LIDENT", "CHAR_LITERAL", "STRING_LITERAL", "DECIMAL_LITERAL",
|
||||||
"LIDENT", "CHAR_LITERAL", "STRING_LITERAL", "DECIMAL_LITERAL"
|
"WORD"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static final String[] ruleNames = makeRuleNames();
|
public static final String[] ruleNames = makeRuleNames();
|
||||||
|
|
||||||
private static String[] makeLiteralNames() {
|
private static String[] makeLiteralNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
null, "'import'", "';'", "'var'", "'public'", "','", "'='", "'fun'",
|
null, "'var'", "'public'", "','", "';'", "'='", "'fun'", "'('", "')'",
|
||||||
"'('", "')'", "'{'", "'}'", "'infix'", "'infixl'", "'infixr'", "'at'",
|
"'{'", "'}'", "'['", "']'", "'true'", "'false'", "'infix'", "'skip'",
|
||||||
"'before'", "'after'", "'-'", "'['", "']'", "'true'", "'false'", "'skip'",
|
|
||||||
"'if'", "'then'", "'fi'", "'elif'", "'else'", "'while'", "'do'", "'od'",
|
"'if'", "'then'", "'fi'", "'elif'", "'else'", "'while'", "'do'", "'od'",
|
||||||
"'for'", "'|'", "':'", "'@'", "'#'", "'box'", "'val'", "'str'", "'array'",
|
"'for'", "':'", "'@'", "'#'", "'box'", "'val'", "'str'", "'array'", "'sexp'",
|
||||||
"'sexp'", "'_'", "'case'", "'of'", "'esac'", "'->'"
|
"'_'", "'case'", "'of'", "'esac'", "'|'", "'->'", null, null, null, "'-'"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||||
|
|
@ -66,9 +64,9 @@ public class LamaLexer extends Lexer {
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
null, null, null, null, null, null, null, null, null, null, null, "WS",
|
null, null, null, null, "WS", "COMMENT", "LINE_COMMENT", "MINUS", "INFIX",
|
||||||
"COMMENT", "LINE_COMMENT", "WORD", "INFIX", "UIDENT", "LIDENT", "CHAR_LITERAL",
|
"UIDENT", "LIDENT", "CHAR_LITERAL", "STRING_LITERAL", "DECIMAL_LITERAL",
|
||||||
"STRING_LITERAL", "DECIMAL_LITERAL"
|
"WORD"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||||
|
|
@ -130,7 +128,7 @@ public class LamaLexer extends Lexer {
|
||||||
public ATN getATN() { return _ATN; }
|
public ATN getATN() { return _ATN; }
|
||||||
|
|
||||||
public static final String _serializedATN =
|
public static final String _serializedATN =
|
||||||
"\u0004\u00008\u0183\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
"\u0004\u00002\u014f\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
|
||||||
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
"\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
|
||||||
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
"\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
|
||||||
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
"\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
|
||||||
|
|
@ -144,50 +142,44 @@ public class LamaLexer extends Lexer {
|
||||||
"!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+
|
"!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+
|
||||||
"&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
|
"&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
|
||||||
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
|
"+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
|
||||||
"0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+
|
"0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0001\u0000"+
|
||||||
"5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+
|
"\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001"+
|
||||||
":\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
|
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+
|
||||||
"\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002"+
|
|
||||||
"\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
|
|
||||||
"\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
|
"\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
|
||||||
"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007"+
|
"\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007"+
|
||||||
"\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b"+
|
"\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b"+
|
||||||
"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+
|
"\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001"+
|
||||||
"\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
|
"\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+
|
||||||
"\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+
|
"\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
|
||||||
"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
|
"\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001"+
|
||||||
"\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+
|
"\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+
|
||||||
"\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001"+
|
"\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001"+
|
||||||
"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001"+
|
"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"+
|
||||||
"\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001"+
|
"\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001"+
|
||||||
"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001"+
|
"\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001"+
|
||||||
"\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+
|
"\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001"+
|
||||||
"\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+
|
"\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
|
||||||
"\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
|
"\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001"+
|
||||||
"\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
|
"\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+
|
||||||
"\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001"+
|
"\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001"+
|
||||||
"\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001"+
|
"\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001$\u0001$"+
|
||||||
"!\u0001!\u0001\"\u0001\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001"+
|
"\u0001$\u0001$\u0001$\u0001%\u0001%\u0001&\u0001&\u0001&\u0001\'\u0004"+
|
||||||
"%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001"+
|
"\'\u00fa\b\'\u000b\'\f\'\u00fb\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001"+
|
||||||
"\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001)\u0001"+
|
"(\u0005(\u0104\b(\n(\f(\u0107\t(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001"+
|
||||||
")\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001,\u0001"+
|
")\u0001)\u0001)\u0001)\u0005)\u0112\b)\n)\f)\u0115\t)\u0001)\u0001)\u0001"+
|
||||||
",\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001.\u0004.\u012d\b.\u000b"+
|
"*\u0001*\u0001+\u0001+\u0001,\u0001,\u0001-\u0001-\u0001.\u0004.\u0122"+
|
||||||
".\f.\u012e\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0005/\u0137\b/\n"+
|
"\b.\u000b.\f.\u0123\u0001/\u0001/\u0005/\u0128\b/\n/\f/\u012b\t/\u0001"+
|
||||||
"/\f/\u013a\t/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010"+
|
"0\u00010\u00050\u012f\b0\n0\f0\u0132\t0\u00011\u00011\u00011\u00011\u0001"+
|
||||||
"\u00010\u00050\u0145\b0\n0\f0\u0148\t0\u00010\u00010\u00011\u00011\u0001"+
|
"2\u00012\u00052\u013a\b2\n2\f2\u013d\t2\u00012\u00012\u00013\u00013\u0001"+
|
||||||
"2\u00012\u00013\u00013\u00014\u00044\u0153\b4\u000b4\f4\u0154\u00015\u0004"+
|
"3\u00053\u0144\b3\n3\f3\u0147\t3\u00033\u0149\b3\u00014\u00044\u014c\b"+
|
||||||
"5\u0158\b5\u000b5\f5\u0159\u00016\u00016\u00056\u015e\b6\n6\f6\u0161\t"+
|
"4\u000b4\f4\u014d\u0001\u0105\u00005\u0001\u0001\u0003\u0002\u0005\u0003"+
|
||||||
"6\u00017\u00017\u00057\u0165\b7\n7\f7\u0168\t7\u00018\u00018\u00018\u0001"+
|
"\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015"+
|
||||||
"8\u00019\u00019\u00059\u0170\b9\n9\f9\u0173\t9\u00019\u00019\u0001:\u0001"+
|
"\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012"+
|
||||||
":\u0003:\u0179\b:\u0001:\u0001:\u0005:\u017d\b:\n:\f:\u0180\t:\u0003:"+
|
"%\u0013\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c"+
|
||||||
"\u0182\b:\u0001\u0138\u0000;\u0001\u0001\u0003\u0002\u0005\u0003\u0007"+
|
"9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U\u0000W\u0000Y\u0000[+]"+
|
||||||
"\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b"+
|
",_-a.c/e0g1i2\u0001\u0000\t\u0003\u0000\t\n\f\r \u0002\u0000\n\n\r\r"+
|
||||||
"\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013"+
|
"\u0001\u000019\u0001\u000009\u0003\u0000\n\n\r\r\"\"\b\u0000!!#&*+-/:"+
|
||||||
"\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d"+
|
":<@^^||\u0001\u0000AZ\u0004\u000009AZ__az\u0001\u0000az\u0155\u0000\u0001"+
|
||||||
";\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_0a1c\u0000e\u0000g\u0000"+
|
|
||||||
"i2k3m4o5q6s7u8\u0001\u0000\t\u0003\u0000\t\n\f\r \u0002\u0000\n\n\r\r"+
|
|
||||||
"\u0001\u000019\u0001\u000009\u0003\u0000\n\n\r\r\"\"\u0004\u000009AZ_"+
|
|
||||||
"_az\b\u0000!!#&*+-/::<@^^||\u0001\u0000AZ\u0001\u0000az\u018a\u0000\u0001"+
|
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+
|
"\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+
|
||||||
"\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+
|
"\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+
|
||||||
"\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+
|
"\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+
|
||||||
|
|
@ -206,164 +198,140 @@ public class LamaLexer extends Lexer {
|
||||||
"C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+
|
"C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+
|
||||||
"\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001"+
|
"Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000[\u0001"+
|
||||||
"\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001\u0000\u0000\u0000\u0000"+
|
||||||
"_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000i\u0001"+
|
"e\u0001\u0000\u0000\u0000\u0000g\u0001\u0000\u0000\u0000\u0000i\u0001"+
|
||||||
"\u0000\u0000\u0000\u0000k\u0001\u0000\u0000\u0000\u0000m\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0001k\u0001\u0000\u0000\u0000\u0003o\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000o\u0001\u0000\u0000\u0000\u0000q\u0001\u0000\u0000\u0000\u0000"+
|
"\u0000\u0005v\u0001\u0000\u0000\u0000\u0007x\u0001\u0000\u0000\u0000\t"+
|
||||||
"s\u0001\u0000\u0000\u0000\u0000u\u0001\u0000\u0000\u0000\u0001w\u0001"+
|
"z\u0001\u0000\u0000\u0000\u000b|\u0001\u0000\u0000\u0000\r\u0080\u0001"+
|
||||||
"\u0000\u0000\u0000\u0003~\u0001\u0000\u0000\u0000\u0005\u0080\u0001\u0000"+
|
"\u0000\u0000\u0000\u000f\u0082\u0001\u0000\u0000\u0000\u0011\u0084\u0001"+
|
||||||
"\u0000\u0000\u0007\u0084\u0001\u0000\u0000\u0000\t\u008b\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0013\u0086\u0001\u0000\u0000\u0000\u0015\u0088\u0001"+
|
||||||
"\u0000\u000b\u008d\u0001\u0000\u0000\u0000\r\u008f\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0017\u008a\u0001\u0000\u0000\u0000\u0019\u008c\u0001"+
|
||||||
"\u000f\u0093\u0001\u0000\u0000\u0000\u0011\u0095\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u001b\u0091\u0001\u0000\u0000\u0000\u001d\u0097\u0001"+
|
||||||
"\u0013\u0097\u0001\u0000\u0000\u0000\u0015\u0099\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u001f\u009d\u0001\u0000\u0000\u0000!\u00a2\u0001\u0000"+
|
||||||
"\u0017\u009b\u0001\u0000\u0000\u0000\u0019\u00a1\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000#\u00a5\u0001\u0000\u0000\u0000%\u00aa\u0001\u0000\u0000\u0000"+
|
||||||
"\u001b\u00a8\u0001\u0000\u0000\u0000\u001d\u00af\u0001\u0000\u0000\u0000"+
|
"\'\u00ad\u0001\u0000\u0000\u0000)\u00b2\u0001\u0000\u0000\u0000+\u00b7"+
|
||||||
"\u001f\u00b2\u0001\u0000\u0000\u0000!\u00b9\u0001\u0000\u0000\u0000#\u00bf"+
|
"\u0001\u0000\u0000\u0000-\u00bd\u0001\u0000\u0000\u0000/\u00c0\u0001\u0000"+
|
||||||
"\u0001\u0000\u0000\u0000%\u00c1\u0001\u0000\u0000\u0000\'\u00c3\u0001"+
|
"\u0000\u00001\u00c3\u0001\u0000\u0000\u00003\u00c7\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000)\u00c5\u0001\u0000\u0000\u0000+\u00ca\u0001\u0000\u0000"+
|
"5\u00c9\u0001\u0000\u0000\u00007\u00cb\u0001\u0000\u0000\u00009\u00cd"+
|
||||||
"\u0000-\u00d0\u0001\u0000\u0000\u0000/\u00d5\u0001\u0000\u0000\u00001"+
|
"\u0001\u0000\u0000\u0000;\u00d1\u0001\u0000\u0000\u0000=\u00d5\u0001\u0000"+
|
||||||
"\u00d8\u0001\u0000\u0000\u00003\u00dd\u0001\u0000\u0000\u00005\u00e0\u0001"+
|
"\u0000\u0000?\u00d9\u0001\u0000\u0000\u0000A\u00df\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u00007\u00e5\u0001\u0000\u0000\u00009\u00ea\u0001\u0000\u0000"+
|
"C\u00e4\u0001\u0000\u0000\u0000E\u00e6\u0001\u0000\u0000\u0000G\u00eb"+
|
||||||
"\u0000;\u00f0\u0001\u0000\u0000\u0000=\u00f3\u0001\u0000\u0000\u0000?"+
|
"\u0001\u0000\u0000\u0000I\u00ee\u0001\u0000\u0000\u0000K\u00f3\u0001\u0000"+
|
||||||
"\u00f6\u0001\u0000\u0000\u0000A\u00fa\u0001\u0000\u0000\u0000C\u00fc\u0001"+
|
"\u0000\u0000M\u00f5\u0001\u0000\u0000\u0000O\u00f9\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000E\u00fe\u0001\u0000\u0000\u0000G\u0100\u0001\u0000\u0000"+
|
"Q\u00ff\u0001\u0000\u0000\u0000S\u010d\u0001\u0000\u0000\u0000U\u0118"+
|
||||||
"\u0000I\u0102\u0001\u0000\u0000\u0000K\u0106\u0001\u0000\u0000\u0000M"+
|
"\u0001\u0000\u0000\u0000W\u011a\u0001\u0000\u0000\u0000Y\u011c\u0001\u0000"+
|
||||||
"\u010a\u0001\u0000\u0000\u0000O\u010e\u0001\u0000\u0000\u0000Q\u0114\u0001"+
|
"\u0000\u0000[\u011e\u0001\u0000\u0000\u0000]\u0121\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000S\u0119\u0001\u0000\u0000\u0000U\u011b\u0001\u0000\u0000"+
|
"_\u0125\u0001\u0000\u0000\u0000a\u012c\u0001\u0000\u0000\u0000c\u0133"+
|
||||||
"\u0000W\u0120\u0001\u0000\u0000\u0000Y\u0123\u0001\u0000\u0000\u0000["+
|
"\u0001\u0000\u0000\u0000e\u0137\u0001\u0000\u0000\u0000g\u0148\u0001\u0000"+
|
||||||
"\u0128\u0001\u0000\u0000\u0000]\u012c\u0001\u0000\u0000\u0000_\u0132\u0001"+
|
"\u0000\u0000i\u014b\u0001\u0000\u0000\u0000kl\u0005v\u0000\u0000lm\u0005"+
|
||||||
"\u0000\u0000\u0000a\u0140\u0001\u0000\u0000\u0000c\u014b\u0001\u0000\u0000"+
|
"a\u0000\u0000mn\u0005r\u0000\u0000n\u0002\u0001\u0000\u0000\u0000op\u0005"+
|
||||||
"\u0000e\u014d\u0001\u0000\u0000\u0000g\u014f\u0001\u0000\u0000\u0000i"+
|
"p\u0000\u0000pq\u0005u\u0000\u0000qr\u0005b\u0000\u0000rs\u0005l\u0000"+
|
||||||
"\u0152\u0001\u0000\u0000\u0000k\u0157\u0001\u0000\u0000\u0000m\u015b\u0001"+
|
"\u0000st\u0005i\u0000\u0000tu\u0005c\u0000\u0000u\u0004\u0001\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000o\u0162\u0001\u0000\u0000\u0000q\u0169\u0001\u0000\u0000"+
|
"\u0000vw\u0005,\u0000\u0000w\u0006\u0001\u0000\u0000\u0000xy\u0005;\u0000"+
|
||||||
"\u0000s\u016d\u0001\u0000\u0000\u0000u\u0181\u0001\u0000\u0000\u0000w"+
|
"\u0000y\b\u0001\u0000\u0000\u0000z{\u0005=\u0000\u0000{\n\u0001\u0000"+
|
||||||
"x\u0005i\u0000\u0000xy\u0005m\u0000\u0000yz\u0005p\u0000\u0000z{\u0005"+
|
"\u0000\u0000|}\u0005f\u0000\u0000}~\u0005u\u0000\u0000~\u007f\u0005n\u0000"+
|
||||||
"o\u0000\u0000{|\u0005r\u0000\u0000|}\u0005t\u0000\u0000}\u0002\u0001\u0000"+
|
"\u0000\u007f\f\u0001\u0000\u0000\u0000\u0080\u0081\u0005(\u0000\u0000"+
|
||||||
"\u0000\u0000~\u007f\u0005;\u0000\u0000\u007f\u0004\u0001\u0000\u0000\u0000"+
|
"\u0081\u000e\u0001\u0000\u0000\u0000\u0082\u0083\u0005)\u0000\u0000\u0083"+
|
||||||
"\u0080\u0081\u0005v\u0000\u0000\u0081\u0082\u0005a\u0000\u0000\u0082\u0083"+
|
"\u0010\u0001\u0000\u0000\u0000\u0084\u0085\u0005{\u0000\u0000\u0085\u0012"+
|
||||||
"\u0005r\u0000\u0000\u0083\u0006\u0001\u0000\u0000\u0000\u0084\u0085\u0005"+
|
"\u0001\u0000\u0000\u0000\u0086\u0087\u0005}\u0000\u0000\u0087\u0014\u0001"+
|
||||||
"p\u0000\u0000\u0085\u0086\u0005u\u0000\u0000\u0086\u0087\u0005b\u0000"+
|
"\u0000\u0000\u0000\u0088\u0089\u0005[\u0000\u0000\u0089\u0016\u0001\u0000"+
|
||||||
"\u0000\u0087\u0088\u0005l\u0000\u0000\u0088\u0089\u0005i\u0000\u0000\u0089"+
|
"\u0000\u0000\u008a\u008b\u0005]\u0000\u0000\u008b\u0018\u0001\u0000\u0000"+
|
||||||
"\u008a\u0005c\u0000\u0000\u008a\b\u0001\u0000\u0000\u0000\u008b\u008c"+
|
"\u0000\u008c\u008d\u0005t\u0000\u0000\u008d\u008e\u0005r\u0000\u0000\u008e"+
|
||||||
"\u0005,\u0000\u0000\u008c\n\u0001\u0000\u0000\u0000\u008d\u008e\u0005"+
|
"\u008f\u0005u\u0000\u0000\u008f\u0090\u0005e\u0000\u0000\u0090\u001a\u0001"+
|
||||||
"=\u0000\u0000\u008e\f\u0001\u0000\u0000\u0000\u008f\u0090\u0005f\u0000"+
|
"\u0000\u0000\u0000\u0091\u0092\u0005f\u0000\u0000\u0092\u0093\u0005a\u0000"+
|
||||||
"\u0000\u0090\u0091\u0005u\u0000\u0000\u0091\u0092\u0005n\u0000\u0000\u0092"+
|
"\u0000\u0093\u0094\u0005l\u0000\u0000\u0094\u0095\u0005s\u0000\u0000\u0095"+
|
||||||
"\u000e\u0001\u0000\u0000\u0000\u0093\u0094\u0005(\u0000\u0000\u0094\u0010"+
|
"\u0096\u0005e\u0000\u0000\u0096\u001c\u0001\u0000\u0000\u0000\u0097\u0098"+
|
||||||
"\u0001\u0000\u0000\u0000\u0095\u0096\u0005)\u0000\u0000\u0096\u0012\u0001"+
|
"\u0005i\u0000\u0000\u0098\u0099\u0005n\u0000\u0000\u0099\u009a\u0005f"+
|
||||||
"\u0000\u0000\u0000\u0097\u0098\u0005{\u0000\u0000\u0098\u0014\u0001\u0000"+
|
"\u0000\u0000\u009a\u009b\u0005i\u0000\u0000\u009b\u009c\u0005x\u0000\u0000"+
|
||||||
"\u0000\u0000\u0099\u009a\u0005}\u0000\u0000\u009a\u0016\u0001\u0000\u0000"+
|
"\u009c\u001e\u0001\u0000\u0000\u0000\u009d\u009e\u0005s\u0000\u0000\u009e"+
|
||||||
"\u0000\u009b\u009c\u0005i\u0000\u0000\u009c\u009d\u0005n\u0000\u0000\u009d"+
|
"\u009f\u0005k\u0000\u0000\u009f\u00a0\u0005i\u0000\u0000\u00a0\u00a1\u0005"+
|
||||||
"\u009e\u0005f\u0000\u0000\u009e\u009f\u0005i\u0000\u0000\u009f\u00a0\u0005"+
|
"p\u0000\u0000\u00a1 \u0001\u0000\u0000\u0000\u00a2\u00a3\u0005i\u0000"+
|
||||||
"x\u0000\u0000\u00a0\u0018\u0001\u0000\u0000\u0000\u00a1\u00a2\u0005i\u0000"+
|
"\u0000\u00a3\u00a4\u0005f\u0000\u0000\u00a4\"\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u00a2\u00a3\u0005n\u0000\u0000\u00a3\u00a4\u0005f\u0000\u0000\u00a4"+
|
"\u00a5\u00a6\u0005t\u0000\u0000\u00a6\u00a7\u0005h\u0000\u0000\u00a7\u00a8"+
|
||||||
"\u00a5\u0005i\u0000\u0000\u00a5\u00a6\u0005x\u0000\u0000\u00a6\u00a7\u0005"+
|
"\u0005e\u0000\u0000\u00a8\u00a9\u0005n\u0000\u0000\u00a9$\u0001\u0000"+
|
||||||
"l\u0000\u0000\u00a7\u001a\u0001\u0000\u0000\u0000\u00a8\u00a9\u0005i\u0000"+
|
"\u0000\u0000\u00aa\u00ab\u0005f\u0000\u0000\u00ab\u00ac\u0005i\u0000\u0000"+
|
||||||
"\u0000\u00a9\u00aa\u0005n\u0000\u0000\u00aa\u00ab\u0005f\u0000\u0000\u00ab"+
|
"\u00ac&\u0001\u0000\u0000\u0000\u00ad\u00ae\u0005e\u0000\u0000\u00ae\u00af"+
|
||||||
"\u00ac\u0005i\u0000\u0000\u00ac\u00ad\u0005x\u0000\u0000\u00ad\u00ae\u0005"+
|
"\u0005l\u0000\u0000\u00af\u00b0\u0005i\u0000\u0000\u00b0\u00b1\u0005f"+
|
||||||
"r\u0000\u0000\u00ae\u001c\u0001\u0000\u0000\u0000\u00af\u00b0\u0005a\u0000"+
|
"\u0000\u0000\u00b1(\u0001\u0000\u0000\u0000\u00b2\u00b3\u0005e\u0000\u0000"+
|
||||||
"\u0000\u00b0\u00b1\u0005t\u0000\u0000\u00b1\u001e\u0001\u0000\u0000\u0000"+
|
"\u00b3\u00b4\u0005l\u0000\u0000\u00b4\u00b5\u0005s\u0000\u0000\u00b5\u00b6"+
|
||||||
"\u00b2\u00b3\u0005b\u0000\u0000\u00b3\u00b4\u0005e\u0000\u0000\u00b4\u00b5"+
|
"\u0005e\u0000\u0000\u00b6*\u0001\u0000\u0000\u0000\u00b7\u00b8\u0005w"+
|
||||||
"\u0005f\u0000\u0000\u00b5\u00b6\u0005o\u0000\u0000\u00b6\u00b7\u0005r"+
|
"\u0000\u0000\u00b8\u00b9\u0005h\u0000\u0000\u00b9\u00ba\u0005i\u0000\u0000"+
|
||||||
"\u0000\u0000\u00b7\u00b8\u0005e\u0000\u0000\u00b8 \u0001\u0000\u0000\u0000"+
|
"\u00ba\u00bb\u0005l\u0000\u0000\u00bb\u00bc\u0005e\u0000\u0000\u00bc,"+
|
||||||
"\u00b9\u00ba\u0005a\u0000\u0000\u00ba\u00bb\u0005f\u0000\u0000\u00bb\u00bc"+
|
"\u0001\u0000\u0000\u0000\u00bd\u00be\u0005d\u0000\u0000\u00be\u00bf\u0005"+
|
||||||
"\u0005t\u0000\u0000\u00bc\u00bd\u0005e\u0000\u0000\u00bd\u00be\u0005r"+
|
"o\u0000\u0000\u00bf.\u0001\u0000\u0000\u0000\u00c0\u00c1\u0005o\u0000"+
|
||||||
"\u0000\u0000\u00be\"\u0001\u0000\u0000\u0000\u00bf\u00c0\u0005-\u0000"+
|
"\u0000\u00c1\u00c2\u0005d\u0000\u0000\u00c20\u0001\u0000\u0000\u0000\u00c3"+
|
||||||
"\u0000\u00c0$\u0001\u0000\u0000\u0000\u00c1\u00c2\u0005[\u0000\u0000\u00c2"+
|
"\u00c4\u0005f\u0000\u0000\u00c4\u00c5\u0005o\u0000\u0000\u00c5\u00c6\u0005"+
|
||||||
"&\u0001\u0000\u0000\u0000\u00c3\u00c4\u0005]\u0000\u0000\u00c4(\u0001"+
|
"r\u0000\u0000\u00c62\u0001\u0000\u0000\u0000\u00c7\u00c8\u0005:\u0000"+
|
||||||
"\u0000\u0000\u0000\u00c5\u00c6\u0005t\u0000\u0000\u00c6\u00c7\u0005r\u0000"+
|
"\u0000\u00c84\u0001\u0000\u0000\u0000\u00c9\u00ca\u0005@\u0000\u0000\u00ca"+
|
||||||
"\u0000\u00c7\u00c8\u0005u\u0000\u0000\u00c8\u00c9\u0005e\u0000\u0000\u00c9"+
|
"6\u0001\u0000\u0000\u0000\u00cb\u00cc\u0005#\u0000\u0000\u00cc8\u0001"+
|
||||||
"*\u0001\u0000\u0000\u0000\u00ca\u00cb\u0005f\u0000\u0000\u00cb\u00cc\u0005"+
|
"\u0000\u0000\u0000\u00cd\u00ce\u0005b\u0000\u0000\u00ce\u00cf\u0005o\u0000"+
|
||||||
"a\u0000\u0000\u00cc\u00cd\u0005l\u0000\u0000\u00cd\u00ce\u0005s\u0000"+
|
"\u0000\u00cf\u00d0\u0005x\u0000\u0000\u00d0:\u0001\u0000\u0000\u0000\u00d1"+
|
||||||
"\u0000\u00ce\u00cf\u0005e\u0000\u0000\u00cf,\u0001\u0000\u0000\u0000\u00d0"+
|
"\u00d2\u0005v\u0000\u0000\u00d2\u00d3\u0005a\u0000\u0000\u00d3\u00d4\u0005"+
|
||||||
"\u00d1\u0005s\u0000\u0000\u00d1\u00d2\u0005k\u0000\u0000\u00d2\u00d3\u0005"+
|
"l\u0000\u0000\u00d4<\u0001\u0000\u0000\u0000\u00d5\u00d6\u0005s\u0000"+
|
||||||
"i\u0000\u0000\u00d3\u00d4\u0005p\u0000\u0000\u00d4.\u0001\u0000\u0000"+
|
"\u0000\u00d6\u00d7\u0005t\u0000\u0000\u00d7\u00d8\u0005r\u0000\u0000\u00d8"+
|
||||||
"\u0000\u00d5\u00d6\u0005i\u0000\u0000\u00d6\u00d7\u0005f\u0000\u0000\u00d7"+
|
">\u0001\u0000\u0000\u0000\u00d9\u00da\u0005a\u0000\u0000\u00da\u00db\u0005"+
|
||||||
"0\u0001\u0000\u0000\u0000\u00d8\u00d9\u0005t\u0000\u0000\u00d9\u00da\u0005"+
|
"r\u0000\u0000\u00db\u00dc\u0005r\u0000\u0000\u00dc\u00dd\u0005a\u0000"+
|
||||||
"h\u0000\u0000\u00da\u00db\u0005e\u0000\u0000\u00db\u00dc\u0005n\u0000"+
|
"\u0000\u00dd\u00de\u0005y\u0000\u0000\u00de@\u0001\u0000\u0000\u0000\u00df"+
|
||||||
"\u0000\u00dc2\u0001\u0000\u0000\u0000\u00dd\u00de\u0005f\u0000\u0000\u00de"+
|
"\u00e0\u0005s\u0000\u0000\u00e0\u00e1\u0005e\u0000\u0000\u00e1\u00e2\u0005"+
|
||||||
"\u00df\u0005i\u0000\u0000\u00df4\u0001\u0000\u0000\u0000\u00e0\u00e1\u0005"+
|
"x\u0000\u0000\u00e2\u00e3\u0005p\u0000\u0000\u00e3B\u0001\u0000\u0000"+
|
||||||
"e\u0000\u0000\u00e1\u00e2\u0005l\u0000\u0000\u00e2\u00e3\u0005i\u0000"+
|
"\u0000\u00e4\u00e5\u0005_\u0000\u0000\u00e5D\u0001\u0000\u0000\u0000\u00e6"+
|
||||||
"\u0000\u00e3\u00e4\u0005f\u0000\u0000\u00e46\u0001\u0000\u0000\u0000\u00e5"+
|
"\u00e7\u0005c\u0000\u0000\u00e7\u00e8\u0005a\u0000\u0000\u00e8\u00e9\u0005"+
|
||||||
"\u00e6\u0005e\u0000\u0000\u00e6\u00e7\u0005l\u0000\u0000\u00e7\u00e8\u0005"+
|
"s\u0000\u0000\u00e9\u00ea\u0005e\u0000\u0000\u00eaF\u0001\u0000\u0000"+
|
||||||
"s\u0000\u0000\u00e8\u00e9\u0005e\u0000\u0000\u00e98\u0001\u0000\u0000"+
|
"\u0000\u00eb\u00ec\u0005o\u0000\u0000\u00ec\u00ed\u0005f\u0000\u0000\u00ed"+
|
||||||
"\u0000\u00ea\u00eb\u0005w\u0000\u0000\u00eb\u00ec\u0005h\u0000\u0000\u00ec"+
|
"H\u0001\u0000\u0000\u0000\u00ee\u00ef\u0005e\u0000\u0000\u00ef\u00f0\u0005"+
|
||||||
"\u00ed\u0005i\u0000\u0000\u00ed\u00ee\u0005l\u0000\u0000\u00ee\u00ef\u0005"+
|
"s\u0000\u0000\u00f0\u00f1\u0005a\u0000\u0000\u00f1\u00f2\u0005c\u0000"+
|
||||||
"e\u0000\u0000\u00ef:\u0001\u0000\u0000\u0000\u00f0\u00f1\u0005d\u0000"+
|
"\u0000\u00f2J\u0001\u0000\u0000\u0000\u00f3\u00f4\u0005|\u0000\u0000\u00f4"+
|
||||||
"\u0000\u00f1\u00f2\u0005o\u0000\u0000\u00f2<\u0001\u0000\u0000\u0000\u00f3"+
|
"L\u0001\u0000\u0000\u0000\u00f5\u00f6\u0005-\u0000\u0000\u00f6\u00f7\u0005"+
|
||||||
"\u00f4\u0005o\u0000\u0000\u00f4\u00f5\u0005d\u0000\u0000\u00f5>\u0001"+
|
">\u0000\u0000\u00f7N\u0001\u0000\u0000\u0000\u00f8\u00fa\u0007\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u00f6\u00f7\u0005f\u0000\u0000\u00f7\u00f8\u0005o\u0000"+
|
"\u0000\u00f9\u00f8\u0001\u0000\u0000\u0000\u00fa\u00fb\u0001\u0000\u0000"+
|
||||||
"\u0000\u00f8\u00f9\u0005r\u0000\u0000\u00f9@\u0001\u0000\u0000\u0000\u00fa"+
|
"\u0000\u00fb\u00f9\u0001\u0000\u0000\u0000\u00fb\u00fc\u0001\u0000\u0000"+
|
||||||
"\u00fb\u0005|\u0000\u0000\u00fbB\u0001\u0000\u0000\u0000\u00fc\u00fd\u0005"+
|
"\u0000\u00fc\u00fd\u0001\u0000\u0000\u0000\u00fd\u00fe\u0006\'\u0000\u0000"+
|
||||||
":\u0000\u0000\u00fdD\u0001\u0000\u0000\u0000\u00fe\u00ff\u0005@\u0000"+
|
"\u00feP\u0001\u0000\u0000\u0000\u00ff\u0100\u0005/\u0000\u0000\u0100\u0101"+
|
||||||
"\u0000\u00ffF\u0001\u0000\u0000\u0000\u0100\u0101\u0005#\u0000\u0000\u0101"+
|
"\u0005*\u0000\u0000\u0101\u0105\u0001\u0000\u0000\u0000\u0102\u0104\t"+
|
||||||
"H\u0001\u0000\u0000\u0000\u0102\u0103\u0005b\u0000\u0000\u0103\u0104\u0005"+
|
"\u0000\u0000\u0000\u0103\u0102\u0001\u0000\u0000\u0000\u0104\u0107\u0001"+
|
||||||
"o\u0000\u0000\u0104\u0105\u0005x\u0000\u0000\u0105J\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0105\u0106\u0001\u0000\u0000\u0000\u0105\u0103\u0001"+
|
||||||
"\u0000\u0106\u0107\u0005v\u0000\u0000\u0107\u0108\u0005a\u0000\u0000\u0108"+
|
"\u0000\u0000\u0000\u0106\u0108\u0001\u0000\u0000\u0000\u0107\u0105\u0001"+
|
||||||
"\u0109\u0005l\u0000\u0000\u0109L\u0001\u0000\u0000\u0000\u010a\u010b\u0005"+
|
"\u0000\u0000\u0000\u0108\u0109\u0005*\u0000\u0000\u0109\u010a\u0005/\u0000"+
|
||||||
"s\u0000\u0000\u010b\u010c\u0005t\u0000\u0000\u010c\u010d\u0005r\u0000"+
|
"\u0000\u010a\u010b\u0001\u0000\u0000\u0000\u010b\u010c\u0006(\u0000\u0000"+
|
||||||
"\u0000\u010dN\u0001\u0000\u0000\u0000\u010e\u010f\u0005a\u0000\u0000\u010f"+
|
"\u010cR\u0001\u0000\u0000\u0000\u010d\u010e\u0005/\u0000\u0000\u010e\u010f"+
|
||||||
"\u0110\u0005r\u0000\u0000\u0110\u0111\u0005r\u0000\u0000\u0111\u0112\u0005"+
|
"\u0005/\u0000\u0000\u010f\u0113\u0001\u0000\u0000\u0000\u0110\u0112\b"+
|
||||||
"a\u0000\u0000\u0112\u0113\u0005y\u0000\u0000\u0113P\u0001\u0000\u0000"+
|
"\u0001\u0000\u0000\u0111\u0110\u0001\u0000\u0000\u0000\u0112\u0115\u0001"+
|
||||||
"\u0000\u0114\u0115\u0005s\u0000\u0000\u0115\u0116\u0005e\u0000\u0000\u0116"+
|
"\u0000\u0000\u0000\u0113\u0111\u0001\u0000\u0000\u0000\u0113\u0114\u0001"+
|
||||||
"\u0117\u0005x\u0000\u0000\u0117\u0118\u0005p\u0000\u0000\u0118R\u0001"+
|
"\u0000\u0000\u0000\u0114\u0116\u0001\u0000\u0000\u0000\u0115\u0113\u0001"+
|
||||||
"\u0000\u0000\u0000\u0119\u011a\u0005_\u0000\u0000\u011aT\u0001\u0000\u0000"+
|
"\u0000\u0000\u0000\u0116\u0117\u0006)\u0000\u0000\u0117T\u0001\u0000\u0000"+
|
||||||
"\u0000\u011b\u011c\u0005c\u0000\u0000\u011c\u011d\u0005a\u0000\u0000\u011d"+
|
"\u0000\u0118\u0119\u0007\u0002\u0000\u0000\u0119V\u0001\u0000\u0000\u0000"+
|
||||||
"\u011e\u0005s\u0000\u0000\u011e\u011f\u0005e\u0000\u0000\u011fV\u0001"+
|
"\u011a\u011b\u0007\u0003\u0000\u0000\u011bX\u0001\u0000\u0000\u0000\u011c"+
|
||||||
"\u0000\u0000\u0000\u0120\u0121\u0005o\u0000\u0000\u0121\u0122\u0005f\u0000"+
|
"\u011d\b\u0004\u0000\u0000\u011dZ\u0001\u0000\u0000\u0000\u011e\u011f"+
|
||||||
"\u0000\u0122X\u0001\u0000\u0000\u0000\u0123\u0124\u0005e\u0000\u0000\u0124"+
|
"\u0005-\u0000\u0000\u011f\\\u0001\u0000\u0000\u0000\u0120\u0122\u0007"+
|
||||||
"\u0125\u0005s\u0000\u0000\u0125\u0126\u0005a\u0000\u0000\u0126\u0127\u0005"+
|
"\u0005\u0000\u0000\u0121\u0120\u0001\u0000\u0000\u0000\u0122\u0123\u0001"+
|
||||||
"c\u0000\u0000\u0127Z\u0001\u0000\u0000\u0000\u0128\u0129\u0005-\u0000"+
|
"\u0000\u0000\u0000\u0123\u0121\u0001\u0000\u0000\u0000\u0123\u0124\u0001"+
|
||||||
"\u0000\u0129\u012a\u0005>\u0000\u0000\u012a\\\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0000\u0124^\u0001\u0000\u0000\u0000\u0125\u0129\u0007\u0006"+
|
||||||
"\u012b\u012d\u0007\u0000\u0000\u0000\u012c\u012b\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0126\u0128\u0007\u0007\u0000\u0000\u0127\u0126\u0001\u0000"+
|
||||||
"\u012d\u012e\u0001\u0000\u0000\u0000\u012e\u012c\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0128\u012b\u0001\u0000\u0000\u0000\u0129\u0127\u0001\u0000"+
|
||||||
"\u012e\u012f\u0001\u0000\u0000\u0000\u012f\u0130\u0001\u0000\u0000\u0000"+
|
"\u0000\u0000\u0129\u012a\u0001\u0000\u0000\u0000\u012a`\u0001\u0000\u0000"+
|
||||||
"\u0130\u0131\u0006.\u0000\u0000\u0131^\u0001\u0000\u0000\u0000\u0132\u0133"+
|
"\u0000\u012b\u0129\u0001\u0000\u0000\u0000\u012c\u0130\u0007\b\u0000\u0000"+
|
||||||
"\u0005/\u0000\u0000\u0133\u0134\u0005*\u0000\u0000\u0134\u0138\u0001\u0000"+
|
"\u012d\u012f\u0007\u0007\u0000\u0000\u012e\u012d\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0135\u0137\t\u0000\u0000\u0000\u0136\u0135\u0001\u0000\u0000"+
|
"\u012f\u0132\u0001\u0000\u0000\u0000\u0130\u012e\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0137\u013a\u0001\u0000\u0000\u0000\u0138\u0139\u0001\u0000\u0000"+
|
"\u0130\u0131\u0001\u0000\u0000\u0000\u0131b\u0001\u0000\u0000\u0000\u0132"+
|
||||||
"\u0000\u0138\u0136\u0001\u0000\u0000\u0000\u0139\u013b\u0001\u0000\u0000"+
|
"\u0130\u0001\u0000\u0000\u0000\u0133\u0134\u0005\'\u0000\u0000\u0134\u0135"+
|
||||||
"\u0000\u013a\u0138\u0001\u0000\u0000\u0000\u013b\u013c\u0005*\u0000\u0000"+
|
"\u0003Y,\u0000\u0135\u0136\u0005\'\u0000\u0000\u0136d\u0001\u0000\u0000"+
|
||||||
"\u013c\u013d\u0005/\u0000\u0000\u013d\u013e\u0001\u0000\u0000\u0000\u013e"+
|
"\u0000\u0137\u013b\u0005\"\u0000\u0000\u0138\u013a\u0003Y,\u0000\u0139"+
|
||||||
"\u013f\u0006/\u0000\u0000\u013f`\u0001\u0000\u0000\u0000\u0140\u0141\u0005"+
|
"\u0138\u0001\u0000\u0000\u0000\u013a\u013d\u0001\u0000\u0000\u0000\u013b"+
|
||||||
"/\u0000\u0000\u0141\u0142\u0005/\u0000\u0000\u0142\u0146\u0001\u0000\u0000"+
|
"\u0139\u0001\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000\u0000\u013c"+
|
||||||
"\u0000\u0143\u0145\b\u0001\u0000\u0000\u0144\u0143\u0001\u0000\u0000\u0000"+
|
"\u013e\u0001\u0000\u0000\u0000\u013d\u013b\u0001\u0000\u0000\u0000\u013e"+
|
||||||
"\u0145\u0148\u0001\u0000\u0000\u0000\u0146\u0144\u0001\u0000\u0000\u0000"+
|
"\u013f\u0005\"\u0000\u0000\u013ff\u0001\u0000\u0000\u0000\u0140\u0149"+
|
||||||
"\u0146\u0147\u0001\u0000\u0000\u0000\u0147\u0149\u0001\u0000\u0000\u0000"+
|
"\u00050\u0000\u0000\u0141\u0145\u0003U*\u0000\u0142\u0144\u0003W+\u0000"+
|
||||||
"\u0148\u0146\u0001\u0000\u0000\u0000\u0149\u014a\u00060\u0000\u0000\u014a"+
|
"\u0143\u0142\u0001\u0000\u0000\u0000\u0144\u0147\u0001\u0000\u0000\u0000"+
|
||||||
"b\u0001\u0000\u0000\u0000\u014b\u014c\u0007\u0002\u0000\u0000\u014cd\u0001"+
|
"\u0145\u0143\u0001\u0000\u0000\u0000\u0145\u0146\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u0000\u014d\u014e\u0007\u0003\u0000\u0000\u014ef\u0001\u0000"+
|
"\u0146\u0149\u0001\u0000\u0000\u0000\u0147\u0145\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0000\u014f\u0150\b\u0004\u0000\u0000\u0150h\u0001\u0000\u0000"+
|
"\u0148\u0140\u0001\u0000\u0000\u0000\u0148\u0141\u0001\u0000\u0000\u0000"+
|
||||||
"\u0000\u0151\u0153\u0007\u0005\u0000\u0000\u0152\u0151\u0001\u0000\u0000"+
|
"\u0149h\u0001\u0000\u0000\u0000\u014a\u014c\u0007\u0007\u0000\u0000\u014b"+
|
||||||
"\u0000\u0153\u0154\u0001\u0000\u0000\u0000\u0154\u0152\u0001\u0000\u0000"+
|
"\u014a\u0001\u0000\u0000\u0000\u014c\u014d\u0001\u0000\u0000\u0000\u014d"+
|
||||||
"\u0000\u0154\u0155\u0001\u0000\u0000\u0000\u0155j\u0001\u0000\u0000\u0000"+
|
"\u014b\u0001\u0000\u0000\u0000\u014d\u014e\u0001\u0000\u0000\u0000\u014e"+
|
||||||
"\u0156\u0158\u0007\u0006\u0000\u0000\u0157\u0156\u0001\u0000\u0000\u0000"+
|
"j\u0001\u0000\u0000\u0000\u000b\u0000\u00fb\u0105\u0113\u0123\u0129\u0130"+
|
||||||
"\u0158\u0159\u0001\u0000\u0000\u0000\u0159\u0157\u0001\u0000\u0000\u0000"+
|
"\u013b\u0145\u0148\u014d\u0001\u0006\u0000\u0000";
|
||||||
"\u0159\u015a\u0001\u0000\u0000\u0000\u015al\u0001\u0000\u0000\u0000\u015b"+
|
|
||||||
"\u015f\u0007\u0007\u0000\u0000\u015c\u015e\u0007\u0005\u0000\u0000\u015d"+
|
|
||||||
"\u015c\u0001\u0000\u0000\u0000\u015e\u0161\u0001\u0000\u0000\u0000\u015f"+
|
|
||||||
"\u015d\u0001\u0000\u0000\u0000\u015f\u0160\u0001\u0000\u0000\u0000\u0160"+
|
|
||||||
"n\u0001\u0000\u0000\u0000\u0161\u015f\u0001\u0000\u0000\u0000\u0162\u0166"+
|
|
||||||
"\u0007\b\u0000\u0000\u0163\u0165\u0007\u0005\u0000\u0000\u0164\u0163\u0001"+
|
|
||||||
"\u0000\u0000\u0000\u0165\u0168\u0001\u0000\u0000\u0000\u0166\u0164\u0001"+
|
|
||||||
"\u0000\u0000\u0000\u0166\u0167\u0001\u0000\u0000\u0000\u0167p\u0001\u0000"+
|
|
||||||
"\u0000\u0000\u0168\u0166\u0001\u0000\u0000\u0000\u0169\u016a\u0005\'\u0000"+
|
|
||||||
"\u0000\u016a\u016b\u0003g3\u0000\u016b\u016c\u0005\'\u0000\u0000\u016c"+
|
|
||||||
"r\u0001\u0000\u0000\u0000\u016d\u0171\u0005\"\u0000\u0000\u016e\u0170"+
|
|
||||||
"\u0003g3\u0000\u016f\u016e\u0001\u0000\u0000\u0000\u0170\u0173\u0001\u0000"+
|
|
||||||
"\u0000\u0000\u0171\u016f\u0001\u0000\u0000\u0000\u0171\u0172\u0001\u0000"+
|
|
||||||
"\u0000\u0000\u0172\u0174\u0001\u0000\u0000\u0000\u0173\u0171\u0001\u0000"+
|
|
||||||
"\u0000\u0000\u0174\u0175\u0005\"\u0000\u0000\u0175t\u0001\u0000\u0000"+
|
|
||||||
"\u0000\u0176\u0182\u00050\u0000\u0000\u0177\u0179\u0005-\u0000\u0000\u0178"+
|
|
||||||
"\u0177\u0001\u0000\u0000\u0000\u0178\u0179\u0001\u0000\u0000\u0000\u0179"+
|
|
||||||
"\u017a\u0001\u0000\u0000\u0000\u017a\u017e\u0003c1\u0000\u017b\u017d\u0003"+
|
|
||||||
"e2\u0000\u017c\u017b\u0001\u0000\u0000\u0000\u017d\u0180\u0001\u0000\u0000"+
|
|
||||||
"\u0000\u017e\u017c\u0001\u0000\u0000\u0000\u017e\u017f\u0001\u0000\u0000"+
|
|
||||||
"\u0000\u017f\u0182\u0001\u0000\u0000\u0000\u0180\u017e\u0001\u0000\u0000"+
|
|
||||||
"\u0000\u0181\u0176\u0001\u0000\u0000\u0000\u0181\u0178\u0001\u0000\u0000"+
|
|
||||||
"\u0000\u0182v\u0001\u0000\u0000\u0000\f\u0000\u012e\u0138\u0146\u0154"+
|
|
||||||
"\u0159\u015f\u0166\u0171\u0178\u017e\u0181\u0001\u0006\u0000\u0000";
|
|
||||||
public static final ATN _ATN =
|
public static final ATN _ATN =
|
||||||
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
|
||||||
static {
|
static {
|
||||||
|
|
|
||||||
|
|
@ -37,66 +37,54 @@ T__35=36
|
||||||
T__36=37
|
T__36=37
|
||||||
T__37=38
|
T__37=38
|
||||||
T__38=39
|
T__38=39
|
||||||
T__39=40
|
WS=40
|
||||||
T__40=41
|
COMMENT=41
|
||||||
T__41=42
|
LINE_COMMENT=42
|
||||||
T__42=43
|
MINUS=43
|
||||||
T__43=44
|
INFIX=44
|
||||||
T__44=45
|
UIDENT=45
|
||||||
T__45=46
|
LIDENT=46
|
||||||
WS=47
|
CHAR_LITERAL=47
|
||||||
COMMENT=48
|
STRING_LITERAL=48
|
||||||
LINE_COMMENT=49
|
DECIMAL_LITERAL=49
|
||||||
WORD=50
|
WORD=50
|
||||||
INFIX=51
|
'var'=1
|
||||||
UIDENT=52
|
'public'=2
|
||||||
LIDENT=53
|
','=3
|
||||||
CHAR_LITERAL=54
|
';'=4
|
||||||
STRING_LITERAL=55
|
'='=5
|
||||||
DECIMAL_LITERAL=56
|
'fun'=6
|
||||||
'import'=1
|
'('=7
|
||||||
';'=2
|
')'=8
|
||||||
'var'=3
|
'{'=9
|
||||||
'public'=4
|
'}'=10
|
||||||
','=5
|
'['=11
|
||||||
'='=6
|
']'=12
|
||||||
'fun'=7
|
'true'=13
|
||||||
'('=8
|
'false'=14
|
||||||
')'=9
|
'infix'=15
|
||||||
'{'=10
|
'skip'=16
|
||||||
'}'=11
|
'if'=17
|
||||||
'infix'=12
|
'then'=18
|
||||||
'infixl'=13
|
'fi'=19
|
||||||
'infixr'=14
|
'elif'=20
|
||||||
'at'=15
|
'else'=21
|
||||||
'before'=16
|
'while'=22
|
||||||
'after'=17
|
'do'=23
|
||||||
'-'=18
|
'od'=24
|
||||||
'['=19
|
'for'=25
|
||||||
']'=20
|
':'=26
|
||||||
'true'=21
|
'@'=27
|
||||||
'false'=22
|
'#'=28
|
||||||
'skip'=23
|
'box'=29
|
||||||
'if'=24
|
'val'=30
|
||||||
'then'=25
|
'str'=31
|
||||||
'fi'=26
|
'array'=32
|
||||||
'elif'=27
|
'sexp'=33
|
||||||
'else'=28
|
'_'=34
|
||||||
'while'=29
|
'case'=35
|
||||||
'do'=30
|
'of'=36
|
||||||
'od'=31
|
'esac'=37
|
||||||
'for'=32
|
'|'=38
|
||||||
'|'=33
|
'->'=39
|
||||||
':'=34
|
'-'=43
|
||||||
'@'=35
|
|
||||||
'#'=36
|
|
||||||
'box'=37
|
|
||||||
'val'=38
|
|
||||||
'str'=39
|
|
||||||
'array'=40
|
|
||||||
'sexp'=41
|
|
||||||
'_'=42
|
|
||||||
'case'=43
|
|
||||||
'of'=44
|
|
||||||
'esac'=45
|
|
||||||
'->'=46
|
|
||||||
|
|
|
||||||
|
|
@ -17,16 +17,6 @@ public interface LamaListener extends ParseTreeListener {
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitLama(LamaParser.LamaContext ctx);
|
void exitLama(LamaParser.LamaContext ctx);
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link LamaParser#import_expression}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterImport_expression(LamaParser.Import_expressionContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link LamaParser#import_expression}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitImport_expression(LamaParser.Import_expressionContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link LamaParser#scope_expression}.
|
* Enter a parse tree produced by {@link LamaParser#scope_expression}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
|
@ -107,46 +97,6 @@ public interface LamaListener extends ParseTreeListener {
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitFunction_body(LamaParser.Function_bodyContext ctx);
|
void exitFunction_body(LamaParser.Function_bodyContext ctx);
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link LamaParser#infix_definition}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterInfix_definition(LamaParser.Infix_definitionContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link LamaParser#infix_definition}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitInfix_definition(LamaParser.Infix_definitionContext ctx);
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link LamaParser#infix_head}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterInfix_head(LamaParser.Infix_headContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link LamaParser#infix_head}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitInfix_head(LamaParser.Infix_headContext ctx);
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link LamaParser#infixity}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterInfixity(LamaParser.InfixityContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link LamaParser#infixity}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitInfixity(LamaParser.InfixityContext ctx);
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by {@link LamaParser#level}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void enterLevel(LamaParser.LevelContext ctx);
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by {@link LamaParser#level}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
void exitLevel(LamaParser.LevelContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by {@link LamaParser#expression}.
|
* Enter a parse tree produced by {@link LamaParser#expression}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
|
@ -387,4 +337,14 @@ public interface LamaListener extends ParseTreeListener {
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
void exitCase_branch(LamaParser.Case_branchContext ctx);
|
void exitCase_branch(LamaParser.Case_branchContext ctx);
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by {@link LamaParser#any_infix}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void enterAny_infix(LamaParser.Any_infixContext ctx);
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by {@link LamaParser#any_infix}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
void exitAny_infix(LamaParser.Any_infixContext ctx);
|
||||||
}
|
}
|
||||||
|
|
@ -58,6 +58,28 @@ public class LamaNodeFactory {
|
||||||
// this.allFunctions = new HashMap<>();
|
// this.allFunctions = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
public void enterScope() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
public void exitScope() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
public LamaExpressionNode createStringNode(String value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public LamaExpressionNode createConstNode(long value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
public LamaExpressionNode getRootExpr() {
|
public LamaExpressionNode getRootExpr() {
|
||||||
// TODO
|
// TODO
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -16,12 +16,6 @@ public interface LamaVisitor<T> extends ParseTreeVisitor<T> {
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitLama(LamaParser.LamaContext ctx);
|
T visitLama(LamaParser.LamaContext ctx);
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link LamaParser#import_expression}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitImport_expression(LamaParser.Import_expressionContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link LamaParser#scope_expression}.
|
* Visit a parse tree produced by {@link LamaParser#scope_expression}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
|
@ -70,30 +64,6 @@ public interface LamaVisitor<T> extends ParseTreeVisitor<T> {
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitFunction_body(LamaParser.Function_bodyContext ctx);
|
T visitFunction_body(LamaParser.Function_bodyContext ctx);
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link LamaParser#infix_definition}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitInfix_definition(LamaParser.Infix_definitionContext ctx);
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link LamaParser#infix_head}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitInfix_head(LamaParser.Infix_headContext ctx);
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link LamaParser#infixity}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitInfixity(LamaParser.InfixityContext ctx);
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by {@link LamaParser#level}.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
T visitLevel(LamaParser.LevelContext ctx);
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by {@link LamaParser#expression}.
|
* Visit a parse tree produced by {@link LamaParser#expression}.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
|
@ -238,4 +208,10 @@ public interface LamaVisitor<T> extends ParseTreeVisitor<T> {
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
T visitCase_branch(LamaParser.Case_branchContext ctx);
|
T visitCase_branch(LamaParser.Case_branchContext ctx);
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by {@link LamaParser#any_infix}.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
T visitAny_infix(LamaParser.Any_infixContext ctx);
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue