copyright licensing
Can I write a Visual Basic Interpreter?
<p>I am planning to write an interpreter (sort of an implementation) of Visual Basic (or more precisely, Visual Basic for Applications - VBA) on my own. I could not find anywhere what's the license of the language. Are only it's implementations proprietary? </p>

<p>Given a proper and correct BNF (<a href="https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form" rel="nofollow noreferrer">Backuss Naur Format</a>) that describes the syntax of the language, you can completely write an interpreter without any knowledge of Microsoft's' nor anyone else's interpreters. Nor would you need to know anything about how their interpreters work.</p>

<p>Your parser, lexer and other constructs must not infringe on software patents in force, but that should be fairly easy to conform to.</p>

<p>I write computer language parsers for a living, and I do not need to reverse engineer any existing code in order to do things like this.</p>

<p>Since the language in question has public documentation about it's syntax, I believe you can write a parser for it even if the language itself is copyrighted, because you are not yourself changing it. You are simply writing computer code that instructs a computer what to do when it sees such a language.</p>

<p>There are computer programs today in use that recognize writing, street signs, roadways, etc. in order to instruct a self-driving car how to navigate a roadway. Think of Visual Basic in this case to be what the computer is observing and acting upon. It's simply navigating the Visual Basic language.</p>

<p>Visual Basic for Applications is almost surely protected by copyright, so absent an exception to copyright law, you may not legally make a work derivative of it. </p>

<p>An "interpreter" sounds to me like a derivative work, but without knowing what you mean by this in this situation, it is hard to know if it would constitute a derivative work or not.</p>

<p>The purpose for which the ultimate product is to be used is also relevant.</p>
