Are fewer checks/less rigorous code analysis required to provide development environment error feedback and auto completion for programming languages that are composed largely of human-readable phrases and words (i.e. Python, VB.NET)? This is in contrast to C-style languages, that depend more upon symbols and punctuation for code structure.
Complexity of IDE error detection and auto-completion dependent upon language syntax?
253 Views Asked by A. Wilson At
1
There are 1 best solutions below
Related Questions in STATIC-ANALYSIS
- How to detect functions, that are only called from unused functions using cppcheck?
- Use static analysis tools to check null pointers and memory leaks in Linux device drivers
- Why it is not suggested to pass hardcoded absolute path name to File object constructor File(String)
- Visual Studio - Discover if method is called by another method at some point
- False positive: precondition is redundant
- Cppcheck GUI: Excluding a file or folder from checking
- How to get better results from LLVM's MemoryDependenceAnalysis pass?
- How to enforce static imports for some methods using checkstyle?
- Dealing with code movement when comparing static analysis reports
- Is there a way to find the ignored JUnit Test with the most lines of code in a large codebase?
- JSHint in javascript is not showing all warnings for code to be corrected
- Parsing Hack code into Abstract Syntax Tree
- Understanding x86 r/m32 instruction
- LLVM Error When Using a Pass from Another Pass
- Sonar - Python plugin rules, what tools it uses behind?
Related Questions in PRE-COMPILATION
- Maximum value for IIS .NET Compilation Batch Time-out
- sprockets - precompiling a standalone asset
- How do I get a TFS build to precompile a web application using a saved publish profile?
- How to set ISPP defines based on default Inno Setup variables?
- Are include guards considered defined after the #define directive or after the #endif directive
- Complexity of IDE error detection and auto-completion dependent upon language syntax?
- What do I specify as the "target folder" parameter to ClientBuildManager constructor?
- How to properly hardcode compiler's define flag (-D) with #define in c (arduino)
- Static files are served up in development but not in production
- Precompiling Handlebars.js templates in Windows
- calling precompiled module from another file
- Could not load type 'ASP.xxx' when referencing a precompiled master page
- HP Fortify scans get ASP Pre-Compilation error
- Rails only precompiles *some* files on production
- Rails assets precompilation removes functions from global scope (TypeError: object is not a function). How to get them back?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I have experience/am responsible for building dozens of language front ends.
Wordy languages vs. punctuationy languages are generally equally hard to parse and statically analyze.
The folks that define languages of either kind have either been decorating them for decades (e.g., COBOL since 1958), or building sophisticated languages (C++, Scala, Ruby) with both complex syntax and complex name resolution and type inference rules; the compiler vendors then proceed to add obscure syntax to support the strange things they do or to provide a customer lock (e.g., MS "managed C++", DLL declarations, etc.). There's the third problem of lousy definitions; the top languages may have precise rules about how they work, but many languages have sloppy definitions (e.g., PHP) which creates dark corner cases that have to be ironed out by painful experimentation with the actual implementation.
C++ has been our worst, esp. with the C++11 committee making a massive recent mess of things. We have full C++ parsers, but are still working on full name resolution for C++11 on top of our C++98 implementation. (The name resolution code is some 250,000 lines of code and its not enough!).
IBM COBOL is a close second; the language is just giant, and there are all sorts of funny name resolution rules ("an unqualified name can refer to a particular name without qualification if the reference is unambiguous" So, is this name an unambiguous reference in this context?).
Once you get past parsing and name/type resolution, then you get into control flow, data flow, points-to analysis, range anlaysis, call graph construction, ... which are generally about the same amount of effort as the earlier phases; we get away with less by having really good libraries that support these tasks.
With all this as background analyses, you can start to do "static analyis" of the smart kind that people want.
Another poster noted that recovering from syntax errors and (emphasis) "continue to generate meaningful error messages". All I can say to this is "Amen, brother". See this SO answer https://stackoverflow.com/a/6657974/120163 for a discussion of what goes wrong when you have "partial programs", which is essentially what you get when syntax error repairs guess at a fix.