Changeset 39

Show
Ignore:
Timestamp:
06/05/08 22:56:08 (7 months ago)
Author:
mb0
Message:

added "use" namespace directive.
enabled complex namespace qualifier.
reworked primary expressions.
added scope for for.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • axdt/trunk/org.axdt.as3/src/org/axdt/as3/imp/parser/AS3Parser.g

    r37 r39  
    151151        public IAst getDeclaration() { return decl; } 
    152152    ./ 
    153     QIdent$QIdent ::= NamespaceMod DBL_COLON$ Ident 
    154153     
    155154    -- cunit 
     
    165164    TypeSpaceEntry ::= InterfaceDeclaration 
    166165    TypeSpaceEntry ::= NamespaceDeclaration 
     166    TypeSpaceEntry ::= NamespaceDirective 
    167167    TypeSpaceEntry ::= FieldDeclaration 
    168168    TypeSpaceEntry ::= MethodDeclaration 
     
    224224    ClassMemberDeclaration ::= MethodDeclaration 
    225225    ClassMemberDeclaration ::= NamespaceDeclaration 
     226    ClassMemberDeclaration ::= NamespaceDirective 
    226227     
    227228    ClassMemberDeclaration$EmptyDeclaration ::= SEMI$ 
     
    230231    NamespaceDeclaration$NamespaceDeclaration ::= Modifiers namespace IDENTIFIER$Name 
    231232    NamespaceDeclaration$NamespaceDeclaration ::= Modifiers namespace IDENTIFIER$Name ASSIGN$ Expression$Initializer 
     233     
     234    NamespaceDirective$NamespaceDirective ::= use$ namespace$ Ident SemiOpt$ 
     235     
    232236     
    233237    FieldDeclaration$FieldDeclaration ::= Annotations Modifiers FieldType VariableDeclarators SemiOpt 
     
    316320                            | SuperStatement 
    317321                            | ThrowStatement 
     322                            | NamespaceDirective 
    318323    EmptyStatement ::= SEMI 
    319324     
     
    357362    ForStatementNoShortIf$ForStatement ::= for$ LPAREN$ ForHead RPAREN$ StatementNoShortIf$Statement 
    358363    ForStatementNoShortIf$ForStatement ::= for$ each$ LPAREN$ ForHead RPAREN$ StatementNoShortIf$Statement 
     364    /. 
     365        $action_type.SymbolTable symbolTable; 
     366        public void setSymbolTable($action_type.SymbolTable symbolTable) { this.symbolTable = symbolTable; } 
     367        public $action_type.SymbolTable getSymbolTable() { return symbolTable; } 
     368    ./ 
    359369 
    360370    ContinueStatement$ContinueStatement ::= continue$ SemiOpt$ 
     
    391401    -- expressions 
    392402    Primary$Primary ::= Literal 
    393               | MethodInvocation 
    394               | ArrayAccess 
    395               | FieldAccess 
    396               | InstanceCreationExpression 
    397               | EncapsulatedExpression 
    398               | this 
    399               | super 
    400403              | ArrayLiteral 
    401404              | ObjectLiteral 
    402405              | FunctionExpression 
    403               | QIdent 
    404      
    405     FunctionExpression$FunctionExpression ::= function$ ParameterBlock COLON$ ReturnType Block 
     406              | InstanceCreationExpression 
     407              | EncapsulatedExpression 
     408              | Ident 
     409              | this 
     410              | super 
     411    FunctionExpression$FunctionExpression ::= function$ ParameterBlock ReturnType Block 
    406412    FunctionExpression$FunctionExpression ::= function$ ParameterBlock Block 
    407413    /. 
     
    410416        public $action_type.SymbolTable getSymbolTable() { return symbolTable; } 
    411417    ./ 
    412      
    413418    EncapsulatedExpression ::= LPAREN$ Expression RPAREN$ 
    414419    InstanceCreationExpression ::= new$ Type Arguments 
    415      
    416420    Arguments$Arguments ::= LPAREN$ %empty RPAREN$ 
    417421                          | LPAREN$ ElementList RPAREN$ 
    418                  
    419422    ElementList$$Expression ::= Expression 
    420                                | ElementList COMMA Expression 
    421  
    422     FieldAccess$FieldAccess ::= QIdent | Ident 
    423     FieldAccess$FieldAccess ::= Primary$Base DOT$ Ident 
    424      
    425     MethodInvocation ::= MethodReference Arguments 
     423                              | ElementList COMMA Expression 
     424     
     425    FieldAccess$FieldAccess ::= Primary 
     426    FieldAccess$FieldAccess ::= Secondary DOT$ Ident 
     427     
     428    Secondary ::= FieldAccess 
     429                | MethodInvocation 
     430                | ArrayAccess 
     431     
     432    MethodInvocation ::= Secondary Arguments 
    426433                        
    427     MethodReference$MethodReference ::= QIdent | Ident 
    428     MethodReference$MethodReference ::= Primary$Base DOT$ Ident 
    429      
    430     ArrayAccess$ArrayAccess ::= Name$Base LBRACK$ Expression$Access RBRACK$ 
    431     ArrayAccess$ArrayAccess ::= Primary$Base LBRACK$ Expression$Access RBRACK$ 
    432  
    433     PostfixExpression ::= Primary 
    434     PostfixExpression ::= Name 
     434    ArrayAccess$ArrayAccess ::= Secondary LBRACK$ Expression$Access RBRACK$ 
     435 
     436    PostfixExpression ::= Secondary 
     437    PostfixExpression ::= QualifiedExpression 
    435438    PostfixExpression ::= PostIncrementExpression 
    436439    PostfixExpression ::= PostDecrementExpression 
     440     
     441    QualifiedExpression ::= Secondary DBL_COLON$ PostfixExpression 
    437442     
    438443    PostIncrementExpression ::= PostfixExpression$Expression INC$ 
     
    480485    InclusiveOrExpression ::= ExclusiveOrExpression 
    481486    InclusiveOrExpression$InclusiveOrExpression ::= InclusiveOrExpression$Left BOR$ ExclusiveOrExpression$Right 
    482                             
     487     
    483488    ConditionalAndExpression ::= InclusiveOrExpression 
    484489    ConditionalAndExpression$ConditionalAndExpression ::= ConditionalAndExpression$Left LAND$ InclusiveOrExpression$Right 
     
    539544                if (n instanceof MethodDeclaration) 
    540545                    return ((MethodDeclaration) n).getSymbolTable(); 
     546                if (n instanceof FunctionExpression) 
     547                    return ((FunctionExpression) n).getSymbolTable(); 
    541548                if (n instanceof ClassBody) 
    542549                    return ((ClassBody) n).getSymbolTable(); 
    543550                if (n instanceof InterfaceBody) 
    544551                    return ((InterfaceBody) n).getSymbolTable(); 
     552                if (n instanceof ForStatement) 
     553                    return ((ForStatement) n).getSymbolTable(); 
    545554            } 
    546555            return getTopLevelSymbolTable(); 
  • axdt/trunk/org.axdt.as3/src/org/axdt/as3/imp/parser/SymbolTableVisitor.java

    r37 r39  
    1616import org.axdt.as3.imp.parser.Ast.ExpressionStatement; 
    1717import org.axdt.as3.imp.parser.Ast.FieldDeclaration; 
     18import org.axdt.as3.imp.parser.Ast.ForStatement; 
    1819import org.axdt.as3.imp.parser.Ast.FormalParameter; 
    1920import org.axdt.as3.imp.parser.Ast.FunctionExpression; 
     
    141142                parser.symbolTableStack.pop(); 
    142143        } 
     144        public boolean visit(ForStatement n) { 
     145                n.setSymbolTable(pushNewTable()); 
     146                return true; 
     147        } 
     148 
     149        public void endVisit(ForStatement n) { 
     150                parser.symbolTableStack.pop(); 
     151        } 
    143152         
    144153        @Override