root/org.axdt.as3/src/org/axdt/as3/imp/parser/DiagnoseVisitor.java @ 5c182b6e475d5851c54cdb2117f25af21723b62a

Revision 5c182b6e475d5851c54cdb2117f25af21723b62a, 2.1 KB (checked in by mb0 <mb0@…>, 15 months ago)

memory clean up ! (and several minor fixes)

  • merged symboltablevisitor and indexingvisitor together with some basic syntax checks to form as3analysis
  • index0r can now be used to request details on demand.
  • axdoc parser ignores whitespace textnodes and now parses the member code span
  • axdoc model: moved level property to indexnode and changed it to be persisted
  • changed axlevel literals
  • discover memory leak  http://bugs.eclipse.org/281790, cleaned up with editor service.
  • moved usefull generally useful methods out of as3 content proposer into as3 source helper
  • when no index exists for a source folder the project will be built and cached.
  • builder does not cache anymore instead builds two times. the first time to index. the second time to resolve.
  • lexer helper error detection fixed ater working through the sparce documentation on lpgs deterministic parser.
  • moved top level symbol table to the program ast node
  • some minor parser changed
  • Property mode set to 100644
Line 
1package org.axdt.as3.imp.parser;
2
3import lpg.runtime.IAst;
4import lpg.runtime.ILexStream;
5import lpg.runtime.IMessageHandler;
6import lpg.runtime.IToken;
7import lpg.runtime.ParseErrorCodes;
8
9import org.axdt.as3.imp.parser.Ast.AbstractVisitor;
10import org.eclipse.core.resources.IFile;
11import org.eclipse.core.resources.IProject;
12
13public class DiagnoseVisitor extends AbstractVisitor {
14        protected static int[] NULL_LOCATION = null;
15       
16        protected final ILexStream lexStream;
17        protected final IFile file;
18       
19        public int errorCount = 0;
20        protected boolean severeError = false;
21
22        public DiagnoseVisitor(IFile file, ILexStream stream) {
23                this.file = file;
24                this.lexStream = stream;
25        }
26
27        protected IProject getProject() {
28                return file.getProject();
29        }
30       
31        protected IFile getFile() {
32                return file;
33        }
34
35        public void emitError(Object node, String message) {
36                emitError((IAst) node, message);
37        }
38
39        public void emitError(IToken id, String message) {
40                emitError(id.getStartOffset(), id.getEndOffset(), message);
41        }
42
43        public void emitError(IAst node, String message) {
44                emitError(node.getLeftIToken().getStartOffset(), node.getRightIToken().getEndOffset(), message);
45        }
46
47        public void emitError(int startOffset, int endOffset, String message) {
48                emitError(ParseErrorCodes.NO_MESSAGE_CODE, startOffset, endOffset, message);
49        }
50
51        public void emitError(int code, IToken id, String message) {
52                emitError(code, id.getStartOffset(), id.getEndOffset(), message);
53        }
54
55        public void emitError(int code, IAst node, String message) {
56                emitError(code, node.getLeftIToken().getStartOffset(), node.getRightIToken().getEndOffset(), message);
57        }
58        public void emitError(int code, int startOffset, int endOffset, String message) {
59                int[] loc = lexStream.getLocation(Math.min(startOffset,lexStream.getStreamLength()), Math.min(endOffset, lexStream.getStreamLength()));
60                if (NULL_LOCATION == null)
61                        NULL_LOCATION = lexStream.getLocation(0, 0);
62                String[] msgs = new String[] {message};
63                IMessageHandler handler = lexStream.getMessageHandler();
64                handler.handleMessage(code, loc, NULL_LOCATION, file.getName(), msgs);
65                errorCount++;
66        }
67
68        @Override
69        public void unimplementedVisitor(String s) {
70        }
71}
Note: See TracBrowser for help on using the browser.