Planned features (NetBeans 6.0)
This page contains list of planned or already implemented features.
Schliemann engine features
- Lexical analysis: User can specify tokens of given language using regular expressions.
- Lexical coloring: User can define visualization of tokens in editor (background color, foreground color, font type, font size, font name, underlined color, wave underlined color and strike through color).
- Syntactic analysis: User can specify grammar of given language. Grammar have to fulfill some rules LL(k). Schliemann engine will produce parse tree for it.
- Syntax coloring: User can define visualization of some grammar rules, or some parts of grammar rules.
- Semantic analysis: User can obtain parse tree and base some analysis on top of it.
- Semantic coloring: User can change default visualization base on semantic analysis results.
- Fonts and colors customization: All fonts and colors defined by user in *.nbs file are automatically installed to NetBeans Options Dialog. User can modify them in Options Dialog, save them and create profiles. Font and colors can be inherited from font and color defaults.
- Navigator: User can define nodes structure visible in NetBeans navigator (StructureView). Structure can be derived from parse tree, or it can be custom (produced by some Java method). Navigator nodes are connected to parts of text - single click on node highlights language element in code (for example method), double click moves focus on the right place in editor.
- Hyperlinking: User can define link from one part of code to another, based on parse tree or some simple semantic analysis.
- Code folding: User can define hierarchical code folds. Structure can be derived from parse tree, or it can be custom (produced by some Java method). User can define some code fold types. Collapse All and Expand All actions for each fold type is generated automatically.
- Projects view support: User can define visualization of his language in NetBeans Projects View, and other similar views. User can define icon, display name, pop-up menu, and other standard features.
- Indentation: User can define indentation for given language (how many spaces will be added, when enter key is pressed).
- Code formatting: User can define code formatting for given language (indentation of lines and various language constructs).
- Code completion: User can define code completion and auto completion for his/her language. It can be based on parse tree or on some semantic analysis.
- Annotations: User can define Error and Warning annotations based on parse tree or on some semantic analysis.
- Other basic editor features supported: All basic editor features (Insert Closing Bracket, Highlight Bracket, Insert Next / Previous Matching Word, Find and Replace, Go to Previous / Next Word, Comment / Uncomment, Shift Left / Right, Macros, Code Templates, Paste Formatted, reformat, Undo / Redo, ...) are supported in Schliemann based language.
- Lexical based error recovery: Unknown characters are skipped during lexical analysis. They are automatically highlighted as Lexical Errors.
- Syntax based error recovery: Schliemann engine automatically skips and highlights all syntax errors. User can redefine error recovery algorithm (insert virtual tokens, step up, down in parse tree). User can define Syntax error messages.
- Extensibility: User can modify / redefine / extend default Schliemann engine behavior on many places. User can post process parse tree, redefine behavior of all major features (code completion, navigator, annotations, code folding...), plug-in some code to parser and error recovery engine, and base some extended functionality on top of parse tree.
- Lexical analysis based language embedding: User can define switch to different language during lexical analysis. This switch is bounded to language analyzer state. Embedded language is automatically imported to top level language with all features. It means that navigator contains nested nodes for nested languages, all code foldings are imported, all colorings works like in separate version of language.
- Semantic based language embedding: User can change language definition for some part of already parsed text (for some token) based on some semantic or syntactic analysis.
- Embedding of handcoded languages: Engine is able to delegate lexical analysis and coloring on any handcoded language (language have to implement Editor Lexer APIs).
- Embed Schliemann based language to some handcoded one: User is able to use Schliemann based language inside some handcoded one (this feature is based on Editor Lexer APIs).
- Embedding Java Script and CSS in HTML: (Phobos style too), CSS in HTML. All features transparently imported to HTML.
- HTML tag, attributes completion.
- CSS attributes completion.
- CSS style preview.
- Error annotations for HTML unpaired tags.
- Semantic coloring for deprecated tags, attributes in HTML.
- Find usages in HTML and CSS.
- Rename in HTML and CSS.
Basic support for other languages
.bat files, COBOL, .diff files, FORTRAN, Groovy, .manifest files, Perl, PHP, Prolog, .properties files, .sh files, SQL, TCL and some others.
Syntax coloring and some other basic features will be supported for these languages. No syntax analysis based features (navigator, code folding, ...) supported.