root/org.axdt.as3/src/org/axdt/as3/imp/parser/DiagnoseVisitor.java @ 69d1ca8cf4ab8b63f93d4467f3d504c0ffdfabb7

Revision 69d1ca8cf4ab8b63f93d4467f3d504c0ffdfabb7, 1.4 KB (checked in by mb0 <mb0@…>, 15 months ago)

grammar

virtual semicolon insertion fix for rparen ')' reduced
semi insertion will be skipped if there is a control statement
like 'if'..'while' in the same line

as3

as3 parser resolves in 2 steps now.
builder caches and reuses parsecontroller
added content proposals for imports (only asdoc for now)

moved some helper methods to util class

hover helper presents real asdoc for resolved imports.
added hyper link detector implemetation that can handle string ids

and will find and open the asdoc resources

as3 node locator was not used updated implementation
as3 message handler got a dirty hack to correct the annotation region.
reference resolver trimmed down for now.
label provider offers images for ast classes now.

common

moved uri input to its own file in common.
added uri hyper link.

  • Property mode set to 100644
Line 
1package org.axdt.as3.imp.parser;
2
3import lpg.runtime.ILexStream;
4import lpg.runtime.IMessageHandler;
5import lpg.runtime.IPrsStream;
6import lpg.runtime.IToken;
7import lpg.runtime.ParseErrorCodes;
8
9import org.axdt.as3.imp.parser.Ast.ASTNode;
10import org.axdt.as3.imp.parser.Ast.AbstractVisitor;
11
12public class DiagnoseVisitor extends AbstractVisitor {
13        protected static int[] NULL_LOCATION = new int[] {0,0};
14       
15        protected final IPrsStream prs;
16        protected final ILexStream lex;
17        protected final AS3Parser parser;
18       
19        public DiagnoseVisitor(AS3Parser parser) {
20                this.prs = parser.getIPrsStream();
21                this.lex = prs.getILexStream();
22                this.parser = parser;
23        }
24
25        public void emitError(IToken id, String message) {
26                emitError(id.getStartOffset(), id.getEndOffset(), message);
27        }
28
29        public void emitError(ASTNode node, String message) {
30                emitError(node.getLeftIToken().getStartOffset(), node.getRightIToken().getEndOffset(), message);
31        }
32
33        public void emitError(int startOffset, int endOffset, String message) {
34                emitError(ParseErrorCodes.NO_MESSAGE_CODE, startOffset, endOffset, message);
35        }
36        public void emitError(int code, int startOffset, int endOffset, String message) {
37                int[] loc = lex.getLocation(startOffset, endOffset);
38                String[] msgs = new String[] {message};
39                IMessageHandler handler = lex.getMessageHandler();
40                handler.handleMessage(code, loc, NULL_LOCATION, prs.getFileName(),      msgs);
41        }
42
43        @Override
44        public void unimplementedVisitor(String s) {
45        }
46}
Note: See TracBrowser for help on using the browser.