.. SCI Studio compatible compiler .. include:: /includes/standard.rst ================================= SCI Studio compatible compiler ================================= .. NOTE:: This is provided for compatibility with SCI Studio (and earlier versions of |scicomp|. For new games, it is recommended you use the original Sierra syntax: :doc:`sci_compiler`. The script compiler in |scicomp| can use a syntax that is nearly identical to the compiler in SCI Studio. It is more strict, so some things that compile in SCI Studio may not compile in |scicomp|, or may give warnings (this is a good thing). It also generates slightly smaller code than SCI Studio. SCI Studio script is an object-oriented language with message passing semantics (like Objective-C or SmallTalk). Syntactically, it also looks a lot like LISP (due to the plethora of parentheses). One difference that will be programmers familiar with C++, C# or java, is that expressions use Prefix notation instead of Infix notation. For instance, to add two numbers together and assign them to a variable in C#, might look like this:: // C# int i = 5 + 6; But in SCI script it looks like:: // SCI (var i) (= i (+ 5 6)) The topics below describe all the various language features and syntax. .. toctree:: :maxdepth: 2 StudioCompiler/version StudioCompiler/classes StudioCompiler/properties StudioCompiler/procedures StudioCompiler/variables StudioCompiler/variabletypes StudioCompiler/comment StudioCompiler/define StudioCompiler/include StudioCompiler/use StudioCompiler/strings StudioCompiler/saids StudioCompiler/synonyms StudioCompiler/selectors StudioCompiler/sendselfsuper StudioCompiler/return StudioCompiler/codeblock StudioCompiler/assignment StudioCompiler/arithmetic StudioCompiler/bitwise StudioCompiler/relationaloperators StudioCompiler/otheroperators StudioCompiler/conditionalexpressions StudioCompiler/if StudioCompiler/switch StudioCompiler/while StudioCompiler/do StudioCompiler/for StudioCompiler/break StudioCompiler/rest StudioCompiler/asm StudioCompiler/objectfiles StudioCompiler/classheader