Blob Blame History Raw
Index: devtools/falmod.cmake
===================================================================
--- devtools/falmod.cmake	(revision 0)
+++ devtools/falmod.cmake	(revision 401)
@@ -0,0 +1,73 @@
+####################################################################
+# @MAIN_PRJ@
+#
+# @PROJECT_NAME@ - Macros and utilities for Falcon modules
+####################################################################
+
+#Set the default buid type to Debug
+IF(NOT CMAKE_BUILD_TYPE)
+  SET(CMAKE_BUILD_TYPE Debug CACHE STRING
+      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+      FORCE)
+ENDIF(NOT CMAKE_BUILD_TYPE)
+
+
+#determine falcon installation and set inc/lib paths
+IF("$ENV{FALCON_INC_PATH}" STREQUAL "" )
+
+   MESSAGE( "Configuring FALCON using falcon-conf" )
+
+   EXEC_PROGRAM( falcon-conf
+         ARGS -i
+         OUTPUT_VARIABLE FALCON_INC_DIR )
+   MESSAGE( "Read INCLUDE=${FALCON_INC_DIR} from falcon conf" )
+
+   EXEC_PROGRAM( falcon-conf
+         ARGS --libs-only-L
+         OUTPUT_VARIABLE FALCON_LIB_DIR )
+
+   MESSAGE( "Read LIB=${FALCON_LIB_DIR} from falcon conf" )
+
+   EXEC_PROGRAM( falcon-conf
+         ARGS --moddir
+         OUTPUT_VARIABLE FALCON_MOD_INSTALL )
+   MESSAGE( "Read MOD=${FALCON_MOD_INSTALL} from falcon conf" )
+
+ELSE("$ENV{FALCON_INC_PATH}" STREQUAL "" )
+   #Usually, this variables are set in a correctly configured MS-WINDOWS
+   #or similar environment to obviate the need for FALCON-CONF
+   MESSAGE( "Configuring FALCON from environmental settings" )
+
+   IF ("$ENV{FALCON_ACTIVE_TREE}" STREQUAL "")
+      SET( FALCON_INC_DIR "$ENV{FALCON_INC_PATH}" )
+      SET( FALCON_LIB_DIR "$ENV{FALCON_LIB_PATH}" )
+      SET( FALCON_MOD_INSTALL "$ENV{FALCON_BIN_PATH}" )
+   ELSE ("$ENV{FALCON_ACTIVE_TREE}" STREQUAL "")
+      SET( FALCON_INC_DIR "$ENV{FALCON_ACTIVE_TREE}/include" )
+      SET( FALCON_LIB_DIR "$ENV{FALCON_ACTIVE_TREE}/lib" )
+      SET( FALCON_MOD_INSTALL "$ENV{FALCON_ACTIVE_TREE}/bin" )
+   ENDIF ("$ENV{FALCON_ACTIVE_TREE}" STREQUAL "")
+
+ENDIF("$ENV{FALCON_INC_PATH}" STREQUAL "" )
+
+MACRO(FALCON_CLEANUP tgt)
+   IF(FALCON_STRIP_TARGET)
+      INSTALL( CODE "EXECUTE_PROCESS( COMMAND stirp --strip-unneeded ${FALCON_MOD_INSTALL}/${tgt}.${CMAKE_SHARED_LIBRARY_SUFFIX} )" )
+   ENDIF(FALCON_STRIP_TARGET)
+ENDMACRO(FALCON_CLEANUP)
+
+
+MACRO(FALCON_LINK_MODULE tgt )
+   TARGET_LINK_LIBRARIES(${tgt} falcon_engine)
+   FALCON_INSTALL_MODULE( ${tgt} )
+ENDMACRO(FALCON_LINK_MODULE)
+
+MACRO(FALCON_INSTALL_MODULE tgt )
+   SET_TARGET_PROPERTIES(${tgt}
+      PROPERTIES PREFIX "")
+
+   #Install
+   INSTALL( TARGETS ${tgt}
+            DESTINATION ${FALCON_MOD_INSTALL} )
+   FALCON_CLEANUP( ${tgt} )
+ENDMACRO(FALCON_INSTALL_MODULE)
Index: devtools/fallc.fal
===================================================================
--- devtools/fallc.fal	(revision 0)
+++ devtools/fallc.fal	(revision 401)
@@ -0,0 +1,451 @@
+#!/usr/bin/falcon
+/***********************************************************
+* Falcon international translation compiler
+*
+* See LICENSE file for licensing details.
+************************************************************/
+
+directive version=0x010000, lang="en_US"
+load mxml
+load regex
+
+
+//=============================================
+// Little class for simpler regex
+//
+class XRegex( expr, pcount ) from Regex(expr)
+   pcount = pcount
+
+   function replaceAll( str, chg )
+      try
+         return Regex.replaceAll( str, chg )
+      catch RegexError
+         > @i"fallc: Warning, cannot replace variables from $(str)"
+         return str
+      end
+   end
+
+   function grabAll( str )
+      s = self.pcount
+      try
+         return map( lambda part => str[part.first() + s : part.last()],
+               self.findAll( str )  )
+      catch RegexError
+         > @i"fallc: Warning, cannot grab variables from $(str)"
+         return []
+      end
+   end
+end
+
+reVars = XRegex( '\$([^+*/;:()|^!@#[\]\s?$-]+)', 1 )
+reParVars = XRegex( '\$\(([^+*/;:()|^!@#?$-]+)', 2 )
+reMover = XRegex( '\s+' )
+
+object Options from CmdlineParser
+   output = nil
+   inputs = []
+   globs = []
+   checkvars = true
+   merge = nil
+
+   function onOption( opt )
+      switch opt
+         case 'o', 'm'
+            self.expectValue()
+
+         case 'h': usage()
+         case 'v': version()
+         case 'c': self.checkvars = false
+
+         default
+            usage()
+            exit(1)
+      end
+   end
+
+   function onValue( opt, val )
+      switch opt
+         case 'o': self.output = val
+         case 'm': self.merge = val
+      end
+   end
+
+   function onFree( opt )
+      if "*" in opt or "?" in opt
+         self.globs += opt
+      else
+         self.inputs += opt
+      end
+   end
+end
+
+function usage()
+   version()
+   >
+   > i"Usage:\n"
+     "  fallc [options] files ...\n"
+     "\n"
+     "Options:\n"
+     "  -c            Do NOT check for consistency in \$(varname) blocks.\n"
+     "  -m <file>     Merge mode (get original file .ftt and insert translation.\n"
+     "  -o <output>   Writes the results to this file.\n"
+     "  -h            Prints this help\n"
+     "  -v            Prints version informations.\n"
+end
+
+function version()
+   ver = vmModuleVersionInfo()
+   > @"Falcon Language Tables Compiler, version $(ver[0]).$(ver[1]).$(ver[2])"
+end
+
+//====================================================
+// Class storing a filewide language table
+//
+class LanguageTable( fromLang, tglang, file, module )
+   fromLang = fromLang
+   name = tglang
+   file = file
+   modName = module
+   entries = [=>]
+   originals = [=>]
+end
+
+//====================================================
+// Parsing a language table
+//
+function parseLanguage( file )
+
+   try
+      // read the XML document
+      doc = MXMLDocument( "utf-8" )
+      doc.read( file )
+      // now get the root's node child, if any
+      root = doc.root()
+      if not root or root.name() != "translation"
+         > @i"fallc: Warning: root node for \"$(file)\" is not \"translation\". Ignoring."
+         return nil
+      end
+
+      attr = root.getAttribs()
+      if "module" notin attr or "into" notin attr or "from" notin attr
+         > @i"fallc: Warning: missing informations in root node in \"$(file)\". Ignoring."
+         return nil
+      end
+
+      //Ok, we can start iterating.
+      ltab = LanguageTable( attr["from"], attr["into"], file, attr["module"] )
+      child = root.firstChild()
+      while child != nil
+
+         if child.name() !="string"
+            child = child.nextSibling()
+            continue
+         end
+
+         attr = child.getAttribs()
+         if "id" notin attr
+            child = child.nextSibling()
+            continue
+         end
+
+         try
+            stringId = int( attr["id"] )
+         catch
+            child = child.nextSibling()
+            continue
+         end
+
+         // now get the original and translated subnodes.
+         chchild = child.firstChild()
+         translated = original = nil
+
+         while chchild != nil
+            if chchild.name() == "original"
+               original = chchild.data()
+            elif chchild.name() == "translated"
+               translated = chchild.data()
+            end
+
+            chchild = chchild.nextSibling()
+         end
+
+         // warn if the transalted string has not the same variables as the original
+         if Options.checkvars
+            origVars = reVars.grabAll( original ) + reParVars.grabAll( original )
+            transVars = reVars.grabAll( translated ) + reParVars.grabAll( translated )
+
+            //normalize spaces
+            origVars = map( lambda x => reMover.replaceAll( x, "" ), origVars )
+            transVars = map( lambda x => reMover.replaceAll( x, "" ), transVars )
+
+            for var in origVars
+               if var notin transVars
+                  > @i"fallc: Warning: variable '$(var)' in string ID=$(stringId) has not been translated"
+               end
+            end
+
+            for var in transVars
+               if var notin origVars
+                  > @i"fallc: Warning: variable '$(var)' in translated string ID=$(stringId) was not in the original"
+               end
+            end
+         end
+
+         ltab.entries[ stringId ] = translated
+         // should we keep the originals?
+         if Options.merge
+            ltab.originals[ stringId ] = original
+         end
+
+         child = child.nextSibling()
+      end
+
+      > @i"Parsed file \"$(file)\""
+      return ltab
+
+   catch MXMLError in error
+      > @i"fallc: Warning: Couldn't read or parse the table \"$(file)\": "
+      > error
+      return nil
+   end
+end
+
+//====================================================
+// Saving a merged language table
+//
+
+function saveMerge( lmerge, ltab, output )
+   try
+      outstream = OutputStream( output )
+   catch IoError in error
+      > @i"fallc: Warning: Couldn't create output file \"$(output)\": "
+      > error
+      return false
+   end
+
+   // put the translations done in ltab inside lmerge,
+   // but first organize a reverese dictinary of lmerge.
+   reverseMap = [=>]
+   for key, value in lmerge.originals
+      reverseMap[value] = key
+   end
+
+   transMap = [=>]
+   for key, value in ltab.originals
+      try
+         id = reverseMap[ value ]
+         transMap[id] = ltab.entries[key]
+      catch AccessError
+      end
+   end
+
+   // now, write the output file
+   doc = MXMLDocument()
+
+   // add our items below root.
+   root = doc.root()
+   root.name( "translation" )
+   root.setAttribute( "from", ltab.fromLang )
+   root.setAttribute( "into", ltab.name )
+   root.setAttribute( "module", ltab.modName )
+
+   for key, value in lmerge.originals
+      node_string = MXMLNode( MXMLType.tag, "string" )
+      node_string.setAttribute( "id", key.toString() )
+      node_o = MXMLNode( MXMLType.tag, "original" )
+      node_o.data( value )
+      node_t = MXMLNode( MXMLType.tag, "translated" )
+      if key in transMap
+         node_t.data( transMap[key] )
+      end
+
+      node_string.addBelow( node_o )
+      node_string.addBelow( node_t )
+
+      root.addBelow( node_string )
+   end
+
+   doc.style( MXMLStyle.INDENT )
+   try
+      doc.serialize( outstream )
+   catch IoError in e
+      > @i"fallc: Warning: Couldn't create output file \"$(output)\": "
+      > error
+      return false
+   end
+
+   return true
+end
+
+//====================================================
+// save the tables
+//
+// TABLE FORMAT:
+// 0-4: MARKER TLTAB
+// 5-6: FBFC endianity marker
+// 7-10: Number of entries (N).
+// 11- (11 + (N*9)): Language index table (lexically ordered):
+//   0-4: 5 bytes language code.
+//   5-8: language table + table offset.
+// N language tables:
+//   0-3: Count of entries in the table (K)
+//   K entries:
+//      0-3: Id of the string in the table
+//      4-7: Length of the string to be read in bytes (L)
+//      8-8+L: String in UTF-8 format
+//
+
+function saveTables( languages, output )
+   > @i"fallc: Saving table into $(output)"
+
+   // we need to know all the translations.
+   tables = [=>]
+   for name, lang in languages
+      if transcodeTo( name, "utf-8" ).len() != 5
+         > @i"fallc: Warning; invalid language code $(lang.name). Ignoring."
+         continue
+      end
+
+      tempStream = StringStream()
+      mb = MemBuf( 1, 4 )
+      mb[0] = lang.entries.len()
+      tempStream.write( mb )
+
+      for id, entry in lang.entries
+         if entry
+            mb[0] = id
+            tempStream.write( mb )
+            utf8entry = transcodeTo( entry, "utf-8" )
+            mb[0] = utf8entry.len()
+            tempStream.write( mb )
+            tempStream.write( utf8entry )
+         end
+      end
+
+      tables[name] = tempStream.closeToString()
+   end
+
+   stream = OutputStream( output )
+   stream.write( "TLTAB" )
+
+   // This will allow the decoding program to understand what we're saying.
+   endianMarker = "\xFBFC"
+   stream.write( endianMarker )
+   // write the count of tables
+   mb[0] = tables.len()
+   stream.write( mb )
+
+   // then the table index
+   // using the iterator avoids useless copies of big data chunks
+   iter = tables.first()
+   curpos = 0
+   while iter.hasCurrent()
+      stream.write( iter.key() )
+      mb[0] = curpos
+      stream.write( mb )
+      curpos += iter.value().len()
+      iter.next()
+   end
+
+   // now write the tables.
+   iter = tables.first()
+   while iter.hasCurrent()
+      stream.write( iter.value() )
+      iter.next()
+   end
+
+   stream.close()
+   return true
+end
+
+//====================================================
+// main code
+//
+
+Options.parse()
+
+// nothing to do ?
+if not Options.inputs and not Options.globs
+   > i"fallc: Nothing to do."
+   return 0
+end
+
+// expand globs
+for glob in Options.globs
+   // get the path part
+   path = Path( glob )
+   location = path.location
+   filename = path.filename
+   // try to diropen the location
+   try
+      direnum = DirectoryOpen( location )
+      while (file = direnum.read() )
+         if strWildcardMatch( glob, file )
+            Options.inputs += location + "/" + file
+         end
+      end
+   catch IoError
+      > @i"fallc: FATAL: can't read directory \"$(location)\"."
+      return 1
+   end
+end
+
+// parse the language table
+languages = [=>]
+modname = nil
+for file in Options.inputs
+   ltab = parseLanguage( file )
+
+   // Continue in case of errors
+   if not ltab: continue
+
+   if modname == nil
+      modname = ltab.modName
+   elif modname != ltab.modName
+      > @i"fallc: Warning: ignoring file \"$(ltab.file)\"."
+      > @i"fallc: containing infos for module \"$(ltab.module)\"."
+      continue
+   end
+
+   if ltab.name in languages
+      > @i"fallc: Warning: definition for language \"$(ltab.name)\" in file \"$(ltab.file)\""
+      > @i"fallc:    was already present in file \"$(languages[ltab.name])\"."
+   end
+   languages[ ltab.name ] = ltab
+end
+
+// try to save, if we have to.
+if languages
+   // time to save the table
+   // use the last table as default name
+
+   // are we in merge mode?
+   if Options.merge
+      Options.checkvars = false  // we don't need to check vars here.
+      lmerge = parseLanguage( Options.merge )
+      if lmerge
+         for name, lang in languages
+            output = Options.output ? Options.output : \
+               modname + "." + lang.name+ ".ftt"
+            saveMerge( lmerge, lang, output )
+            if Options.output: break
+         end
+      end
+   else
+      output = Options.output ? Options.output : modname + ".ftr"
+      try
+         if saveTables( languages, output )
+            > @i"fallc: Saved translation for module \"$(modname)\" to \"$(output)\""
+            return 0 // OK
+         end
+      catch IoError
+         > @i"fallc: FATAL: error while saving to \"$(output)\""
+      end
+   end
+else
+   > @i"fallc: No language availabe."
+end
+
+return 1
+
+/* end of fallc.fal */
Index: devtools/falconeer.fal.in
===================================================================
--- devtools/falconeer.fal.in	(revision 0)
+++ devtools/falconeer.fal.in	(revision 401)
@@ -0,0 +1,260 @@
+#!@FINAL_DESTINATION@/bin/falcon
+/*
+   FALCON - The Falcon Programming Language.
+   FILE: falconeer.fal
+
+   Script that configures module skeleton.
+   -------------------------------------------------------------------
+
+   Copyright 2008 Giancarlo Niccolai
+
+   Licensed under the Falcon Programming Language License,
+   Version 1.1 (the "License") or GPLv2.0 or following,
+   at your choice; you may not use this file except in
+   compliance with on of the Licenses. You may obtain
+   a copy of the Licenses at
+
+      http://www.falconpl.org/?page_id=license_1_1
+      http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on
+   an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied. See the License for the
+   specific language governing permissions and limitations
+   under the License.
+*/
+
+load regex
+
+//==========================================
+// Global definitions
+//
+
+// name used for skeleton files
+const skelname = "fmodskel"
+
+// using falcon string concatenation to prevent cmake
+// to mangle with this values.
+const var_prjname = "@" "PROJECT_NAME@"
+const var_desc    = "@" "DESCRIPTION@"
+const var_author  = "@" "AUTHOR@"
+const var_date    = "@" "DATE@"
+const var_year    = "@" "YEAR@"
+const var_copy    = "@" "COPYRIGHT@"
+const var_license = "@" "LICENSE@"
+const var_mainprj = "@" "MAIN_PRJ@"
+
+const default_license = \
+   "   Licensed under the Falcon Programming Language License,\n"
+   "   Version 1.1 (the \"License\"); you may not use this file\n"
+   "   except in compliance with the License. You may obtain\n"
+   "   a copy of the License at\n"
+   "\n"
+   "      http://www.falconpl.org/?page_id=license_1_1\n"
+   "\n"
+   "   Unless required by applicable law or agreed to in writing,\n"
+   "   software distributed under the License is distributed on\n"
+   "   an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"
+   "   KIND, either express or implied. See the License for the\n"
+   "   specific language governing permissions and limitations\n"
+   "   under the License.\n"
+
+const default_prj = "FALCON - The Falcon Programming Language."
+
+files = [\
+   "src/" + skelname + ".cpp",
+   "src/" + skelname + "_ext.cpp",
+   "src/" + skelname + "_ext.h",
+   "src/" + skelname + "_st.cpp",
+   "src/" + skelname + "_st.h",
+   "src/" + skelname + "_mod.cpp",
+   "src/" + skelname + "_mod.h",
+   "src/" + skelname + "_srv.cpp",
+   "src/" + skelname + "_srv.h",
+   "src/" + skelname + "_CMakeLists.txt:src/CMakeLists.txt",
+   "templates/"+ skelname + "_cpp_template",
+   "templates/" + skelname + "_h_template",
+   "docs/" + skelname + "_faldoc.fd:docs/faldoc.fd",
+   skelname + "_CMakeLists.txt:CMakeLists.txt",
+   skelname + "_build.sh:build.sh",
+   skelname + "_falmod.cmake:falmod.cmake",
+   skelname + ".sln",
+   skelname + ".vcproj",
+   skelname + "_Makefile.gnu",
+   skelname + "_Makefile.mac"
+]
+
+chgRegex = Regex( skelname )
+
+variables = [=>]
+
+//==========================================
+// Configuration options parser
+//
+
+object MyParser from CmdlineParser
+   prj_name = nil
+   author = "Unknown author"
+   description = ""
+   date = CurrentTime()
+   copyright = "The above AUTHOR"
+   licplate = default_license
+   mainprj = default_prj
+
+   function onOption( option )
+      switch option
+         case "?", "help": self.usage()
+         case "a", "author", "n", "name", "d", "description", \
+              "l", "license", "c", "copyright", "p", "project"
+            self.expectValue()
+         default
+            self.unrecognized( option )
+      end
+   end
+
+   function onValue( option, value )
+      switch option
+         case "a", "author": self.author = value
+         case "n", "name": self.prj_name = value
+         case "d", "description": self.description = value
+         case "l", "license": self.loadLicense( value )
+         case "c", "copyright": self.copyright = value
+         case "p", "project": self.mainprj = value
+      end
+   end
+
+   function onFree( param )
+      self.unrecognized( param )
+   end
+
+   function loadLicense( param )
+      try
+         inf = InputStream( param )
+         self.licplate=""
+         while ( data = inf.read(2048) )
+            self.licplate +=data
+         end
+         inf.close()
+      catch IoError in e
+         > "falconeer.fal: FATAL: cannot load license plate file ", param
+         > e
+         exit(1)
+      end
+   end
+
+   function unrecognized( option )
+      printl( "Unrecognized option \"", option, "\"\n\n" );
+      self.usage()
+      exit(1)
+   end
+
+   function usage()
+      >  "Falconeer -- the skeleton module configurator.\n"
+         "  Enter a directory where the Falcon Skeleton Module has been unpacked\n"
+         "  and load this script setting the '-n' option.\n"
+         "  Relevant the files in the skeleton directory will be renamed accordingly\n"
+         "  to your settings, and configurable placeholder variables in each file\n"
+         "  will be overwritten.\n"
+
+      >  "  Options:\n"
+         "     -?,--help               \tPrints this help\n"
+         "     -n/--name <value>       \tName of the project (will affect filenames)\n"
+         "     -a/--author <value>     \tAuthor(s) of the project\n"
+         "     -c/--copyright <value>  \tCopyright owner\n"
+         "     -d/--description <value>\tDescription for the project\n"
+         "     -l/--license <file>     \tPointer to a license plate\n"
+         "     -p/--project <value>    \tMain project to which this module belongs\n\n"
+         "  -n option is mandatory.\n"
+   end
+end
+
+//==========================================
+// Function that does the job
+//
+function parse_file( fileName, destName )
+   global variables
+
+   fin = InputStream( fileName )
+   // convert the name
+   if not destName
+      foutName = fileName
+      chgRegex.replace( foutName, MyParser.prj_name )
+   else
+      foutName = destName
+   end
+   if foutName == fileName: foutName += "_new"
+
+   try
+      // open the output file name
+      fout = OutputStream( foutName )
+      line = ""
+
+      // read the line
+      loop
+         fin.readLine( line, 512 )
+         if fin.eof(): break
+
+         // scan and substitute the variables
+         for key, value in variables
+            pos = strFind( line, key )
+            // can be more than one per line
+            while pos >= 0
+               line[pos : pos + key.len()] = value
+               pos = strFind( line, key )
+            end
+         end
+         // now we can write the line
+         fout.write( line + "\n" )
+      end
+
+      fin.close()
+      fout.close()
+   catch in error
+      > @"Error while performing change $fileName -> $foutName"
+      > error
+      return
+   end
+
+   // remove the old file
+   // TODO: set an option to prevent this
+   try
+      fileRemove( fileName )
+   catch in error
+      > @"Error removing $fileName"
+      > error
+   end
+end
+
+//==========================================
+// Main program
+//
+
+MyParser.parse()
+if not MyParser.prj_name
+   MyParser.usage()
+   exit( 1 )
+end
+
+// create the variables
+variables[var_prjname] = MyParser.prj_name
+variables[var_desc   ] = MyParser.description
+variables[var_author ] = MyParser.author
+variables[var_date   ] = MyParser.date.toRFC2822()
+variables[var_year   ] = MyParser.date.year.toString()
+variables[var_copy   ] = MyParser.copyright
+variables[var_license] = MyParser.licplate
+variables[var_mainprj] = MyParser.mainprj
+
+for file in files
+   if ":" in file
+      file, dest = strSplit( file, ":", 2 )
+   else
+      dest = nil
+   end
+
+   > "Examining ", file, "..."
+   parse_file( file, dest )
+end
+
+/* End of falconeer.fal */
Index: devtools/falcon-conf.in
===================================================================
--- devtools/falcon-conf.in	(revision 0)
+++ devtools/falcon-conf.in	(revision 401)
@@ -0,0 +1,88 @@
+#!/bin/sh
+#
+# Falcon configuration script
+# $Id: Falcon-core-0810-r401.patch,v 1.1 2008/06/09 22:09:50 salimma Exp $
+#
+# Useful tool to compile falcon modules and embedding applications.
+#
+# (C) Giancarlo Niccolai 2003
+
+SYSTEM=""
+
+usage()
+{
+   echo "The Falcon Programming Language"
+   echo ""
+   echo "Build configuration tool for Falcon @FALCON_VERSION@"
+   echo "Usage: $0 params"
+   echo "   -c, --cflags         writes CFLAGS for modules"
+   echo "   -e, --embed-flags    writes CFLAGS for embedding applications"
+   echo "   --cflags-only-I      writes only the include part of CFLAGS"
+   echo "   -i, --include        writes the FALCON inlcude directory"
+   echo "   -l, --libs           write library flags for linking modules"
+   echo "   -L, --embed-libs     library flags and libraries for embedding apps"
+   echo "   --libs-only-l        write the libraries that must be linked"
+   echo "   --libs-only-L        write the directory where library is installed"
+   echo "   --moddir             write the module installation directory"
+   echo "   -p, --ldpath         Path for LD_LIBRARY_PATH"
+   echo "   -h, --help           this help"
+   echo ""
+   echo "Include this script in your makefiles with \$( $0 <params> )"
+}
+
+detectSystem()
+{
+	 uname | grep Mac && SYSTEM='mac' || SYSTEM='unix'
+}
+
+if [ -z "$*" ]; then
+   usage
+   exit
+fi
+
+FALCONLIB="-lfalcon_engine"
+
+detectSystem
+
+if [ "$SYSTEM" = "mac" ]; then
+	CFLAGS="-fPIC -dynamiclib -fno-common"
+	LDFLAGS="-module -dload -dynamiclib"
+else
+	CFLAGS="-fPIC -shared"
+	LDFLAGS="-module -dload -shared"
+fi
+
+#configure for in-build tree
+if [ "x$FALCON_ACTIVE_TREE" = "x" ]; then
+   INC_PATH="@FALCON_FINAL_DESTINATION@/include"
+   LIB_PATH="@FALCON_FINAL_DESTINATION@/@FALCON_FINAL_DESTINATION_LIB@"
+   LIB_LD_PATH="@FINAL_DESTINATION@/@FALCON_FINAL_DESTINATION_LIB@"
+else
+   INC_PATH="$FALCON_ACTIVE_TREE/include"
+   LIB_PATH="$FALCON_ACTIVE_TREE/@FALCON_INSTALL_TREE_LIB@"
+   LIB_LD_PATH="$FALCON_ACTIVE_TREE/@FALCON_INSTALL_TREE_LIB@"
+fi
+
+INC_FLAGS="-I$INC_PATH"
+LIB_FLAGS="-L$LIB_PATH"
+MODDIR="$LIB_PATH/falcon"
+
+while [ -n "$*" ]; do
+   case "$1" in
+      "-c"| "--cflags") echo "$INC_FLAGS $CFLAGS" ;;
+      "-e"| "--embed-flags") echo "$INC_FLAGS" ;;
+      "--cflags-only-I") echo "$INC_FLAGS" ;;
+      "--cflags-only-other") echo "$CFLAGS" ;;
+      "-i"|"--include") echo "$INC_PATH";;
+      "-l"| "--libs") echo "$LIB_FLAGS $LDFLAGS $FALCONLIB" ;;
+      "-L"| "--embed-libs") echo "$LIB_FLAGS $FALCONLIB" ;;
+      "--libs-only-L") echo "$LIB_PATH" ;;
+      "-p" | "--ldpath") echo "$LIB_LD_PATH" ;;
+      "--libs-only-l") echo "$FALCONLIB" ;;
+      "--moddir") echo "$MODDIR";;
+      "-h" | "--help" | *)
+         usage
+         exit;;
+   esac
+   shift
+done
Index: devtools/CMakeLists.txt
===================================================================
--- devtools/CMakeLists.txt	(revision 0)
+++ devtools/CMakeLists.txt	(revision 401)
@@ -0,0 +1,38 @@
+#
+# Configurator for development tools
+#
+
+IF(UNIX)
+   SET( sys_in_spec falcon-conf )
+   SET( sys_inst_spec "${FALCON_BUILD_TREE}/core/devtools/falcon-conf" )
+ENDIF(UNIX)
+
+#Fixes a small bug of CMAKE in FILES install rule.
+IF(WIN32)
+   STRING(REPLACE "\\" "/" FALCON_BUILD_TREE "${FALCON_BUILD_TREE}" )
+ENDIF(WIN32)
+
+SET( in_files
+   falconeer.fal
+   ${sys_in_spec}
+   )
+
+SET( inst_files
+   "${FALCON_BUILD_TREE}/core/devtools/falconeer.fal"
+   "fallc.fal"
+   ${sys_inst_spec}
+   )
+
+FOREACH(item ${in_files} )
+   CONFIGURE_FILE(
+      ${item}.in
+      "${FALCON_BUILD_TREE}/core/devtools/${item}"
+      ESCAPE_QUOTES
+      @ONLY )
+ENDFOREACH(item)
+
+INSTALL(FILES ${inst_files}
+          DESTINATION ${FALCON_BIN_DIR}
+          PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
+                        GROUP_READ GROUP_EXECUTE
+                        WORLD_READ WORLD_EXECUTE )
Index: devtools/README
===================================================================
--- devtools/README	(revision 0)
+++ devtools/README	(revision 401)
@@ -0,0 +1,16 @@
+
+                     The Falcon Programming Language
+
+                         Falcon Development Tools
+
+                                   0.8
+
+  The tools in this directory are meant to be a support for development of
+third party modules and embedding applications.
+
+  Modules and embeddings that are not included in the Falcon Source Project
+are not bound to use Falcon Development Enviroment. They just require a standard
+installation of Falcon with development support (dev packages for debian distros,
+Development option turned on for windows installer and so on), which will include
+correctly configured tools which are present in this part of the project.
+
Index: versioninfo
===================================================================
--- versioninfo	(revision 0)
+++ versioninfo	(revision 401)
@@ -0,0 +1,10 @@
+FALCON_VERSION_MAJOR=0
+FALCON_VERSION_MINOR=8
+FALCON_VERSION_REVISION=10
+FALCON_VERSION_PATCH=0
+
+FALCON_VERSION_NAME="piuma"
+
+FALCON_SONAME_VERSION=1
+FALCON_SONAME_REVISION=10
+FALCON_SONAME_AGE=0
Index: clt/falcon/CMakeLists.txt
===================================================================
--- clt/falcon/CMakeLists.txt	(revision 393)
+++ clt/falcon/CMakeLists.txt	(working copy)
@@ -1,12 +1,12 @@
-PROJECT(falcon)
+##################################################
+# Falcon Programming Language
+#
+# Falcon command line
+##################################################
 
 # Inclusion settings
 INCLUDE_DIRECTORIES(.)
-INCLUDE_DIRECTORIES(BEFORE ${TARGET_DIR}/include)
-INCLUDE_DIRECTORIES(BEFORE ../../include)
-LINK_DIRECTORIES(BEFORE ${TARGET_DIR}/${TARGET_LIB_DIR} )
 
-
 IF(WIN32)
    SET( SYSTEM_RC falcon.rc)
 ENDIF(WIN32)
@@ -20,7 +20,6 @@
 #Link
 TARGET_LINK_LIBRARIES(falcon falcon_engine)
 
-#In unix and mac we have to add extra libraries
 #Install
-FALCON_INSTALL( falcon bin )
-
+INSTALL( TARGETS falcon
+      DESTINATION ${FALCON_BIN_DIR} )
Index: clt/faltest/CMakeLists.txt
===================================================================
--- clt/faltest/CMakeLists.txt	(revision 393)
+++ clt/faltest/CMakeLists.txt	(working copy)
@@ -1,12 +1,12 @@
-PROJECT(faltest)
+##################################################
+# Falcon Programming Language
+#
+# Faltest
+##################################################
 
 # Inclusion settings
 INCLUDE_DIRECTORIES(.)
-INCLUDE_DIRECTORIES(BEFORE ${TARGET_DIR}/include)
-INCLUDE_DIRECTORIES(BEFORE ../../include)
-LINK_DIRECTORIES(BEFORE ${TARGET_DIR}/${TARGET_LIB_DIR} )
 
-
 IF(WIN32)
    SET(SYS_RC faltest.rc)
    SET(SYS_RC_DLL testsuite.rc)
@@ -39,5 +39,8 @@
    PROPERTIES PREFIX "")
 
 #Install
-FALCON_INSTALL( faltest bin )
-FALCON_MODULE_INSTALL( testsuite )
+INSTALL( TARGETS faltest
+      DESTINATION ${FALCON_BIN_DIR} )
+
+INSTALL( TARGETS testsuite
+      DESTINATION ${FALCON_MOD_INSTALL} )
Index: clt/falrun/CMakeLists.txt
===================================================================
--- clt/falrun/CMakeLists.txt	(revision 393)
+++ clt/falrun/CMakeLists.txt	(working copy)
@@ -1,12 +1,12 @@
-PROJECT(falrun)
+##################################################
+# Falcon Programming Language
+#
+# Falrun
+##################################################
 
 # Inclusion settings
 INCLUDE_DIRECTORIES(.)
-INCLUDE_DIRECTORIES(BEFORE ${TARGET_DIR}/include)
-INCLUDE_DIRECTORIES(BEFORE ../../include)
-LINK_DIRECTORIES(BEFORE ${TARGET_DIR}/${TARGET_LIB_DIR} )
 
-
 IF(WIN32)
    SET(SYS_RC falrun.rc)
 ENDIF(WIN32)
@@ -21,4 +21,5 @@
 TARGET_LINK_LIBRARIES(falrun falcon_engine)
 
 #Install
-FALCON_INSTALL( falrun bin )
+INSTALL( TARGETS falrun
+      DESTINATION ${FALCON_BIN_DIR} )
Index: clt/faldisass/CMakeLists.txt
===================================================================
--- clt/faldisass/CMakeLists.txt	(revision 393)
+++ clt/faldisass/CMakeLists.txt	(working copy)
@@ -1,12 +1,12 @@
-PROJECT(faldisass)
+##################################################
+# Falcon Programming Language
+#
+# Faldisass
+##################################################
 
 # Inclusion settings
 INCLUDE_DIRECTORIES(.)
-INCLUDE_DIRECTORIES(BEFORE ${TARGET_DIR}/include)
-INCLUDE_DIRECTORIES(BEFORE ../../include)
-LINK_DIRECTORIES(BEFORE ${TARGET_DIR}/${TARGET_LIB_DIR} )
 
-
 IF(WIN32)
    SET(SYS_RC faldisass.rc)
 ENDIF(WIN32)
@@ -21,4 +21,5 @@
 TARGET_LINK_LIBRARIES(faldisass falcon_engine)
 
 #Install
-FALCON_INSTALL( faldisass bin )
+INSTALL( TARGETS faldisass
+      DESTINATION ${FALCON_BIN_DIR} )
Index: clt/CMakeLists.txt
===================================================================
--- clt/CMakeLists.txt	(revision 393)
+++ clt/CMakeLists.txt	(working copy)
@@ -1,3 +1,9 @@
+##################################################
+# Falcon Programming Language
+#
+# CLT - Command Line Tools meta cmake file
+##################################################
+
 ADD_SUBDIRECTORY(faltest)
 ADD_SUBDIRECTORY(faldisass)
 ADD_SUBDIRECTORY(falrun)
Index: include/falcon/config.h.in
===================================================================
--- include/falcon/config.h.in	(revision 393)
+++ include/falcon/config.h.in	(working copy)
@@ -57,15 +57,15 @@
 // Config informations
 //
 #ifdef FALCON_SYSTEM_WIN
-   #define FALCON_DEFAULT_BIN          "@FINAL_DESTINATION@\\bin"
-   #define FALCON_DEFAULT_LIB          "@FINAL_DESTINATION@\\lib"
-   #define FALCON_DEFAULT_CONFIG       "@FINAL_DESTINATION@\\etc"
-   #define FALCON_DEFAULT_LOAD_PATH    ".;@FINAL_DESTINATION@\\bin"
+   #define FALCON_DEFAULT_BIN          "@FALCON_FINAL_DESTINATION@\\bin"
+   #define FALCON_DEFAULT_LIB          "@FALCON_FINAL_DESTINATION@\\@FALCON_FINAL_DESTINATION_LIB@"
+   #define FALCON_DEFAULT_CONFIG       "@FALCON_FINAL_DESTINATION@\\etc"
+   #define FALCON_DEFAULT_LOAD_PATH    ".;@FALCON_FINAL_DESTINATION@\\bin"
 #else
-   #define FALCON_DEFAULT_BIN          "@FINAL_DESTINATION@/bin"
-   #define FALCON_DEFAULT_LIB          "@FINAL_DESTINATION@/@TARGET_LIB_DIR@"
+   #define FALCON_DEFAULT_BIN          "@FALCON_FINAL_DESTINATION@/bin"
+   #define FALCON_DEFAULT_LIB          "@FALCON_FINAL_DESTINATION@/@FALCON_FINAL_DESTINATION_LIB@"
    #define FALCON_DEFAULT_CONFIG       "/etc"
-   #define FALCON_DEFAULT_LOAD_PATH    ".;@FINAL_DESTINATION@/@TARGET_LIB_DIR@/falcon"
+   #define FALCON_DEFAULT_LOAD_PATH    ".;@FALCON_FINAL_DESTINATION@/@FALCON_FINAL_DESTINATION_LIB@/falcon"
 #endif
 
 #endif
Index: include/CMakeLists.txt
===================================================================
--- include/CMakeLists.txt	(revision 393)
+++ include/CMakeLists.txt	(working copy)
@@ -2,25 +2,26 @@
 # Just install include files so that every part of the project can use it.
 #
 
+CONFIGURE_FILE(
+         falcon/config.h.in
+         "${FALCON_BUILD_TREE}/core/include/falcon/config.h"
+         ESCAPE_QUOTES
+         @ONLY )
+
 FILE( GLOB fasm_files "fasm/*.h" )
 FILE( GLOB falcon_files "falcon/*.h" )
 
 INSTALL( FILES ${fasm_files}
-   DESTINATION ${TARGET_DIR}/include/fasm)
+   DESTINATION "${FALCON_INC_DIR}/fasm")
 
 INSTALL( FILES ${falcon_files}
-   DESTINATION ${TARGET_DIR}/include/falcon)
+   DESTINATION "${FALCON_INC_DIR}/falcon")
 
-CONFIGURE_FILE(
-         falcon/config.h.in
-         ${FALCON_BUILD_TREE}/include/falcon/config.h
-         ESCAPE_QUOTES
-         @ONLY )
+#Fixes a small bug of CMAKE in FILES install rule.
+IF(WIN32)
+   STRING(REPLACE "\\" "/" FALCON_BUILD_TREE "${FALCON_BUILD_TREE}" )
+ENDIF(WIN32)
 
-# This copy should actually be performed during install,
-# but a bug in current windows version of CMAKE (2.4.7)  prevents it.
-CONFIGURE_FILE(
-         falcon/config.h.in
-         ${TARGET_DIR}/include/falcon/config.h
-         ESCAPE_QUOTES
-         @ONLY )
\ No newline at end of file
+INSTALL( FILES "${FALCON_BUILD_TREE}/core/include/falcon/config.h"
+   DESTINATION "${FALCON_INC_DIR}/falcon")
+
Index: rtl/CMakeLists.txt
===================================================================
--- rtl/CMakeLists.txt	(revision 393)
+++ rtl/CMakeLists.txt	(working copy)
@@ -1,11 +1,11 @@
-PROJECT(falcon_rtl)
+##################################################
+# Falcon Programming Language
+#
+# Falcon RTL
+##################################################
 
 INCLUDE_DIRECTORIES(.)
-INCLUDE_DIRECTORIES(BEFORE ${TARGET_DIR}/include)
-INCLUDE_DIRECTORIES(BEFORE ../include)
-LINK_DIRECTORIES(BEFORE ${TARGET_DIR}/${TARGET_LIB_DIR} )
 
-
 IF(WIN32)
 	SET(SYSTEM_RC  falcon_rtl.rc)
 ENDIF(WIN32)
@@ -49,4 +49,5 @@
 ENDIF(UNIX OR MAC)
 
 #Install
-FALCON_MODULE_INSTALL( falcon_rtl )
+INSTALL( TARGETS falcon_rtl
+   DESTINATION "${FALCON_MOD_INSTALL}" )
Index: engine/src_parser.cpp
===================================================================
--- engine/src_parser.cpp	(revision 393)
+++ engine/src_parser.cpp	(working copy)
@@ -3479,12 +3479,12 @@
     {
         case 6:
 #line 206 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_lone_end ); ;}
+    { COMPILER->raiseError(Falcon::e_lone_end ); }
     break;
 
   case 7:
 #line 207 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_case_outside ); ;}
+    { COMPILER->raiseError(Falcon::e_case_outside ); }
     break;
 
   case 8:
@@ -3492,7 +3492,7 @@
     {
          if ( (yyvsp[(1) - (1)].stringp) != 0 )
             COMPILER->addLoad( *(yyvsp[(1) - (1)].stringp) );
-      ;}
+      }
     break;
 
   case 10:
@@ -3500,7 +3500,7 @@
     {
          if( (yyvsp[(1) - (1)].fal_stat) != 0 )
             COMPILER->addFunction( (yyvsp[(1) - (1)].fal_stat) );
-      ;}
+      }
     break;
 
   case 11:
@@ -3508,7 +3508,7 @@
     {
          if ( (yyvsp[(1) - (1)].fal_stat) != 0 )
             COMPILER->addClass( (yyvsp[(1) - (1)].fal_stat) );
-      ;}
+      }
     break;
 
   case 12:
@@ -3516,7 +3516,7 @@
     {
          if ( (yyvsp[(1) - (1)].fal_stat) != 0 )
             COMPILER->addClass( (yyvsp[(1) - (1)].fal_stat) );
-      ;}
+      }
     break;
 
   case 13:
@@ -3524,12 +3524,12 @@
     {
          if( (yyvsp[(1) - (1)].fal_stat) != 0 )
             COMPILER->addStatement( (yyvsp[(1) - (1)].fal_stat) );
-      ;}
+      }
     break;
 
   case 19:
 #line 245 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.integer) = - (yyvsp[(2) - (2)].integer); ;}
+    { (yyval.integer) = - (yyvsp[(2) - (2)].integer); }
     break;
 
   case 20:
@@ -3538,7 +3538,7 @@
          if ( COMPILER->getContext() != 0 )
             COMPILER->raiseError(Falcon::e_toplevel_load );
          (yyval.stringp) = (yyvsp[(2) - (3)].stringp);
-      ;}
+      }
     break;
 
   case 21:
@@ -3547,7 +3547,7 @@
          if ( COMPILER->getContext() != 0 )
             COMPILER->raiseError(Falcon::e_toplevel_load );
          (yyval.stringp) = (yyvsp[(2) - (3)].stringp);
-      ;}
+      }
     break;
 
   case 22:
@@ -3555,42 +3555,42 @@
     {
          COMPILER->raiseError(Falcon::e_syn_load );
          (yyval.stringp) = 0;
-      ;}
+      }
     break;
 
   case 23:
 #line 269 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->checkLocalUndefined(); (yyval.fal_stat) = (yyvsp[(1) - (1)].fal_stat); ;}
+    { COMPILER->checkLocalUndefined(); (yyval.fal_stat) = (yyvsp[(1) - (1)].fal_stat); }
     break;
 
   case 24:
 #line 270 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_stat) = 0; ;}
+    { (yyval.fal_stat) = 0; }
     break;
 
   case 25:
 #line 271 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_toplevel_func ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_toplevel_func ); (yyval.fal_stat) = 0; }
     break;
 
   case 26:
 #line 272 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_toplevel_obj ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_toplevel_obj ); (yyval.fal_stat) = 0; }
     break;
 
   case 27:
 #line 273 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_toplevel_class ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_toplevel_class ); (yyval.fal_stat) = 0; }
     break;
 
   case 28:
 #line 274 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syntax ); (yyval.fal_stat) = 0;;}
+    { COMPILER->raiseError(Falcon::e_syntax ); (yyval.fal_stat) = 0;}
     break;
 
   case 29:
 #line 279 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_stat) = new Falcon::StmtAutoexpr( LINE, (yyvsp[(1) - (2)].fal_val) ); ;}
+    { (yyval.fal_stat) = new Falcon::StmtAutoexpr( LINE, (yyvsp[(1) - (2)].fal_val) ); }
     break;
 
   case 30:
@@ -3600,7 +3600,7 @@
          COMPILER->defineVal( first );
          (yyval.fal_stat) = new Falcon::StmtAutoexpr( LINE,
             new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_assign, first, (yyvsp[(3) - (4)].fal_val) ) ) );
-      ;}
+      }
     break;
 
   case 31:
@@ -3617,7 +3617,7 @@
          Falcon::Value *second = new Falcon::Value( (yyvsp[(5) - (6)].fal_adecl) );
          (yyval.fal_stat) = new Falcon::StmtAutoexpr( LINE,
             new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_assign, first, second ) ) );
-      ;}
+      }
     break;
 
   case 51:
@@ -3627,7 +3627,7 @@
       COMPILER->defineVal( (yyvsp[(1) - (3)].fal_val) );
       COMPILER->addStatement( new Falcon::StmtAutoexpr( CURRENT_LINE, new Falcon::Value(
          new Falcon::Expression( Falcon::Expression::t_assign, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ) ) );
-   ;}
+   }
     break;
 
   case 52:
@@ -3636,17 +3636,17 @@
       COMPILER->defineVal( (yyvsp[(3) - (5)].fal_val) );
       COMPILER->addStatement( new Falcon::StmtAutoexpr(CURRENT_LINE, new Falcon::Value(
          new Falcon::Expression( Falcon::Expression::t_assign, (yyvsp[(3) - (5)].fal_val), (yyvsp[(5) - (5)].fal_val) ) ) ) );
-   ;}
+   }
     break;
 
   case 53:
 #line 338 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->defContext( false );  (yyval.fal_stat)=0; ;}
+    { COMPILER->defContext( false );  (yyval.fal_stat)=0; }
     break;
 
   case 54:
 #line 340 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError( Falcon::e_syn_def ); ;}
+    { COMPILER->raiseError( Falcon::e_syn_def ); }
     break;
 
   case 55:
@@ -3656,7 +3656,7 @@
          COMPILER->pushLoop( w );
          COMPILER->pushContext( w );
          COMPILER->pushContextSet( &w->children() );
-      ;}
+      }
     break;
 
   case 56:
@@ -3667,7 +3667,7 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          (yyval.fal_stat) = w;
-      ;}
+      }
     break;
 
   case 57:
@@ -3677,37 +3677,37 @@
          if ( (yyvsp[(2) - (2)].fal_stat) != 0 )
             w->children().push_back( (yyvsp[(2) - (2)].fal_stat) );
          (yyval.fal_stat) = w;
-      ;}
+      }
     break;
 
   case 58:
 #line 366 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 59:
 #line 367 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = 0; ;}
+    { (yyval.fal_val) = 0; }
     break;
 
   case 60:
 #line 368 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_while ); (yyval.fal_val) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_while ); (yyval.fal_val) = 0; }
     break;
 
   case 61:
 #line 372 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 62:
 #line 373 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = 0; ;}
+    { (yyval.fal_val) = 0; }
     break;
 
   case 63:
 #line 374 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_while, "", CURRENT_LINE ); (yyval.fal_val) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_while, "", CURRENT_LINE ); (yyval.fal_val) = 0; }
     break;
 
   case 64:
@@ -3716,7 +3716,7 @@
          Falcon::StmtIf *stmt = new Falcon::StmtIf( LINE, (yyvsp[(1) - (1)].fal_val) );
          COMPILER->pushContext( stmt );
          COMPILER->pushContextSet( &stmt->children() );
-      ;}
+      }
     break;
 
   case 65:
@@ -3726,7 +3726,7 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          (yyval.fal_stat) = stmt;
-      ;}
+      }
     break;
 
   case 66:
@@ -3737,27 +3737,27 @@
          if( (yyvsp[(2) - (2)].fal_stat) != 0 )
             stmt->children().push_back( (yyvsp[(2) - (2)].fal_stat) );
          (yyval.fal_stat) = stmt;
-      ;}
+      }
     break;
 
   case 67:
 #line 403 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 68:
 #line 404 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    {  COMPILER->raiseError(Falcon::e_syn_if ); (yyval.fal_val) = 0; ;}
+    {  COMPILER->raiseError(Falcon::e_syn_if ); (yyval.fal_val) = 0; }
     break;
 
   case 69:
 #line 408 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 70:
 #line 409 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    {  COMPILER->raiseError(Falcon::e_syn_if, "", CURRENT_LINE ); (yyval.fal_val) = 0; ;}
+    {  COMPILER->raiseError(Falcon::e_syn_if, "", CURRENT_LINE ); (yyval.fal_val) = 0; }
     break;
 
   case 73:
@@ -3766,12 +3766,12 @@
          Falcon::StmtIf *stmt = static_cast<Falcon::StmtIf *>(COMPILER->getContext());
          COMPILER->popContextSet();
          COMPILER->pushContextSet( &stmt->elseChildren() );
-      ;}
+      }
     break;
 
   case 76:
 #line 426 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_else ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_else ); }
     break;
 
   case 77:
@@ -3782,24 +3782,24 @@
          Falcon::StmtElif *elif = new Falcon::StmtElif( LINE, (yyvsp[(1) - (1)].fal_val) );
          stmt->elifChildren().push_back( elif );
          COMPILER->pushContextSet( &elif->children() );
-      ;}
+      }
     break;
 
   case 79:
 #line 443 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 80:
 #line 444 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_elif ); (yyval.fal_val) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_elif ); (yyval.fal_val) = 0; }
     break;
 
   case 82:
 #line 449 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       COMPILER->addStatement( (yyvsp[(2) - (2)].fal_stat) );
-   ;}
+   }
     break;
 
   case 83:
@@ -3811,7 +3811,7 @@
          }
          else
             (yyval.fal_stat) = new Falcon::StmtBreak( LINE );
-      ;}
+      }
     break;
 
   case 84:
@@ -3819,7 +3819,7 @@
     {
          COMPILER->raiseError(Falcon::e_syn_break );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 85:
@@ -3831,7 +3831,7 @@
          }
          else
             (yyval.fal_stat) = new Falcon::StmtContinue( LINE );
-      ;}
+      }
     break;
 
   case 86:
@@ -3843,7 +3843,7 @@
          }
          else
             (yyval.fal_stat) = new Falcon::StmtContinue( LINE, true );
-      ;}
+      }
     break;
 
   case 87:
@@ -3851,7 +3851,7 @@
     {
          COMPILER->raiseError(Falcon::e_syn_continue );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 88:
@@ -3869,7 +3869,7 @@
          COMPILER->pushLoop( f );
          COMPILER->pushContext( f );
          COMPILER->pushContextSet( &f->children() );
-      ;}
+      }
     break;
 
   case 89:
@@ -3880,7 +3880,7 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          (yyval.fal_stat) = f;
-      ;}
+      }
     break;
 
   case 90:
@@ -3899,7 +3899,7 @@
          COMPILER->pushLoop( f );
          COMPILER->pushContext( f );
          COMPILER->pushContextSet( &f->children() );
-      ;}
+      }
     break;
 
   case 91:
@@ -3912,7 +3912,7 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          (yyval.fal_stat) = f;
-      ;}
+      }
     break;
 
   case 92:
@@ -3920,7 +3920,7 @@
     { delete (yyvsp[(2) - (5)].fal_adecl);
          COMPILER->raiseError( Falcon::e_syn_forin );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 93:
@@ -3928,7 +3928,7 @@
     {
          COMPILER->raiseError( Falcon::e_syn_forin );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 96:
@@ -3939,7 +3939,7 @@
             Falcon::StmtForin *f = static_cast<Falcon::StmtForin *>(COMPILER->getContext());
             f->children().push_back( (yyvsp[(1) - (1)].fal_stat) );
          }
-      ;}
+      }
     break;
 
   case 100:
@@ -3955,7 +3955,7 @@
          else {
             (yyval.fal_stat) = new Falcon::StmtFordot( LINE, (yyvsp[(2) - (3)].fal_val) );
          }
-      ;}
+      }
     break;
 
   case 101:
@@ -3963,14 +3963,14 @@
     {
          COMPILER->raiseError( Falcon::e_syn_fordot );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 102:
 #line 603 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_stat) = new Falcon::StmtSelfPrint( LINE, (yyvsp[(2) - (3)].fal_adecl) );
-      ;}
+      }
     break;
 
   case 103:
@@ -3978,7 +3978,7 @@
     {
          COMPILER->raiseError( Falcon::e_syn_self_print );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 104:
@@ -3986,7 +3986,7 @@
     {
          (yyvsp[(2) - (3)].fal_adecl)->pushBack( new Falcon::Value( COMPILER->addString( "\n" ) ) );
          (yyval.fal_stat) = new Falcon::StmtSelfPrint( LINE, (yyvsp[(2) - (3)].fal_adecl) );
-      ;}
+      }
     break;
 
   case 105:
@@ -3995,7 +3995,7 @@
          Falcon::ArrayDecl *adecl = new Falcon::ArrayDecl();
          adecl->pushBack( new Falcon::Value( COMPILER->addString( "\n" ) ) );
          (yyval.fal_stat) = new Falcon::StmtSelfPrint( LINE, adecl );
-      ;}
+      }
     break;
 
   case 106:
@@ -4003,7 +4003,7 @@
     {
          COMPILER->raiseError( Falcon::e_syn_self_print );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 107:
@@ -4011,7 +4011,7 @@
     {
          COMPILER->raiseError( Falcon::e_syn_self_print );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 108:
@@ -4020,7 +4020,7 @@
       Falcon::ArrayDecl *adecl = new Falcon::ArrayDecl();
       adecl->pushBack( new Falcon::Value( (yyvsp[(1) - (1)].stringp) ) );
       (yyval.fal_stat) = new Falcon::StmtSelfPrint( LINE, adecl );
-   ;}
+   }
     break;
 
   case 109:
@@ -4034,12 +4034,12 @@
          COMPILER->pushContextSet( &f->firstBlock() );
 		 // Push anyhow an empty item, that is needed for to check again for thio blosk
 		 f->firstBlock().push_back( new Falcon::StmtNone( LINE ) );
-      ;}
+      }
     break;
 
   case 110:
 #line 661 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->popContextSet(); ;}
+    { COMPILER->popContextSet(); }
     break;
 
   case 111:
@@ -4052,12 +4052,12 @@
          }
          if ( (yyvsp[(3) - (3)].fal_stat) != 0 )
             f->firstBlock().push_back( (yyvsp[(3) - (3)].fal_stat) );
-      ;}
+      }
     break;
 
   case 112:
 #line 672 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_forfirst ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_forfirst ); }
     break;
 
   case 113:
@@ -4071,12 +4071,12 @@
 		 // Push anyhow an empty item, that is needed for empty last blocks
 		 f->lastBlock().push_back( new Falcon::StmtNone( LINE ) );
          COMPILER->pushContextSet( &f->lastBlock() );
-      ;}
+      }
     break;
 
   case 114:
 #line 688 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->popContextSet(); ;}
+    { COMPILER->popContextSet(); }
     break;
 
   case 115:
@@ -4089,12 +4089,12 @@
          }
          if ( (yyvsp[(3) - (3)].fal_stat) != 0 )
             f->lastBlock().push_back( (yyvsp[(3) - (3)].fal_stat) );
-      ;}
+      }
     break;
 
   case 116:
 #line 698 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_forlast ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_forlast ); }
     break;
 
   case 117:
@@ -4110,12 +4110,12 @@
 		 // (Note that the formiddle: version below does *not* need it
 		 f->middleBlock().push_back( new Falcon::StmtNone( LINE ) );
          COMPILER->pushContextSet( &f->middleBlock() );
-      ;}
+      }
     break;
 
   case 118:
 #line 716 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->popContextSet(); ;}
+    { COMPILER->popContextSet(); }
     break;
 
   case 119:
@@ -4128,12 +4128,12 @@
          }
          if ( (yyvsp[(3) - (3)].fal_stat) != 0 )
             f->middleBlock().push_back( (yyvsp[(3) - (3)].fal_stat) );
-      ;}
+      }
     break;
 
   case 120:
 #line 727 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_formiddle ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_formiddle ); }
     break;
 
   case 121:
@@ -4142,7 +4142,7 @@
       Falcon::StmtSwitch *stmt = new Falcon::StmtSwitch( LINE, (yyvsp[(1) - (1)].fal_val) );
          COMPILER->pushContext( stmt );
          COMPILER->pushContextSet( &stmt->blocks() );
-      ;}
+      }
     break;
 
   case 122:
@@ -4152,12 +4152,12 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          (yyval.fal_stat) = stmt;
-      ;}
+      }
     break;
 
   case 123:
 #line 748 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 124:
@@ -4165,12 +4165,12 @@
     {
          COMPILER->raiseError(Falcon::e_switch_decl );
          (yyval.fal_val) = 0;
-      ;}
+      }
     break;
 
   case 127:
 #line 759 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_switch_body ); ;}
+    { COMPILER->raiseError(Falcon::e_switch_body ); }
     break;
 
   case 129:
@@ -4182,7 +4182,7 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 131:
@@ -4194,14 +4194,14 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( CURRENT_LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 132:
 #line 783 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             COMPILER->addStatement( (yyvsp[(5) - (5)].fal_stat) );
-      ;}
+      }
     break;
 
   case 133:
@@ -4215,7 +4215,7 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 135:
@@ -4229,14 +4229,14 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( CURRENT_LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 136:
 #line 809 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             COMPILER->addStatement( (yyvsp[(5) - (5)].fal_stat) );
-      ;}
+      }
     break;
 
   case 138:
@@ -4249,19 +4249,19 @@
             COMPILER->raiseError(Falcon::e_switch_default, "", CURRENT_LINE );
          }
          COMPILER->pushContextSet( &stmt->defaultBlock() );
-      ;}
+      }
     break;
 
   case 142:
 #line 832 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_default_decl ); ;}
+    { COMPILER->raiseError(Falcon::e_default_decl ); }
     break;
 
   case 144:
 #line 836 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->addStatement( (yyvsp[(2) - (2)].fal_stat) );
-      ;}
+      }
     break;
 
   case 147:
@@ -4272,7 +4272,7 @@
          if ( stmt->nilBlock() != -1 )
             COMPILER->raiseError(Falcon::e_switch_clash, "nil entry", CURRENT_LINE );
          stmt->nilBlock( stmt->currentBlock() );
-      ;}
+      }
     break;
 
   case 148:
@@ -4286,7 +4286,7 @@
             COMPILER->raiseError(Falcon::e_switch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 149:
@@ -4299,7 +4299,7 @@
             COMPILER->raiseError(Falcon::e_switch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 150:
@@ -4312,7 +4312,7 @@
             COMPILER->raiseError(Falcon::e_switch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 151:
@@ -4329,7 +4329,7 @@
             COMPILER->raiseError(Falcon::e_switch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 152:
@@ -4338,7 +4338,7 @@
       Falcon::StmtSelect *stmt = new Falcon::StmtSelect( LINE, (yyvsp[(1) - (1)].fal_val) );
          COMPILER->pushContext( stmt );
          COMPILER->pushContextSet( &stmt->blocks() );
-      ;}
+      }
     break;
 
   case 153:
@@ -4348,12 +4348,12 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          (yyval.fal_stat) = stmt;
-      ;}
+      }
     break;
 
   case 154:
 #line 928 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); ;}
+    { (yyval.fal_val) = (yyvsp[(2) - (3)].fal_val); }
     break;
 
   case 155:
@@ -4361,12 +4361,12 @@
     {
          COMPILER->raiseError(Falcon::e_select_decl );
          (yyval.fal_val) = 0;
-      ;}
+      }
     break;
 
   case 158:
 #line 939 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_select_body ); ;}
+    { COMPILER->raiseError(Falcon::e_select_body ); }
     break;
 
   case 160:
@@ -4378,7 +4378,7 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 162:
@@ -4390,14 +4390,14 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( CURRENT_LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 163:
 #line 964 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             COMPILER->addStatement( (yyvsp[(5) - (5)].fal_stat) );
-      ;}
+      }
     break;
 
   case 164:
@@ -4411,7 +4411,7 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 166:
@@ -4425,14 +4425,14 @@
          Falcon::StmtCaseBlock *lst = new Falcon::StmtCaseBlock( CURRENT_LINE );
          COMPILER->pushContextSet( &lst->children() );
          stmt->addBlock( lst );
-      ;}
+      }
     break;
 
   case 167:
 #line 990 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             COMPILER->addStatement( (yyvsp[(5) - (5)].fal_stat) );
-      ;}
+      }
     break;
 
   case 171:
@@ -4446,7 +4446,7 @@
             COMPILER->raiseError(Falcon::e_switch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 172:
@@ -4463,14 +4463,14 @@
             COMPILER->raiseError(Falcon::e_switch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 173:
 #line 1037 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_stat) = new Falcon::StmtGive( LINE, (yyvsp[(4) - (5)].fal_adecl), (yyvsp[(2) - (5)].fal_adecl) );
-      ;}
+      }
     break;
 
   case 174:
@@ -4478,12 +4478,12 @@
     {
          (yyval.fal_stat) = new Falcon::StmtGive( LINE, 0, (yyvsp[(2) - (4)].fal_adecl) );
          COMPILER->raiseError(Falcon::e_syn_give );
-      ;}
+      }
     break;
 
   case 175:
 #line 1045 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_give ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_give ); (yyval.fal_stat) = 0; }
     break;
 
   case 176:
@@ -4493,7 +4493,7 @@
       if ( (yyvsp[(3) - (3)].fal_stat) != 0 )
           t->children().push_back( (yyvsp[(3) - (3)].fal_stat) );
       (yyval.fal_stat) = t;
-   ;}
+   }
     break;
 
   case 177:
@@ -4502,7 +4502,7 @@
          Falcon::StmtTry *t = new Falcon::StmtTry( LINE );
          COMPILER->pushContext( t );
          COMPILER->pushContextSet( &t->children() );
-      ;}
+      }
     break;
 
   case 178:
@@ -4511,12 +4511,12 @@
          (yyval.fal_stat) = COMPILER->getContext();
          COMPILER->popContext();
          COMPILER->popContextSet();
-      ;}
+      }
     break;
 
   case 180:
 #line 1079 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_try ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_try ); }
     break;
 
   case 186:
@@ -4536,7 +4536,7 @@
          t->defaultHandler( lst ); // will delete the previous one
 
          COMPILER->pushContextSet( &lst->children() );
-      ;}
+      }
     break;
 
   case 187:
@@ -4558,7 +4558,7 @@
          t->defaultHandler( lst ); // will delete the previous one
 
          COMPILER->pushContextSet( &lst->children() );
-      ;}
+      }
     break;
 
   case 188:
@@ -4570,7 +4570,7 @@
          Falcon::StmtCatchBlock *lst = new Falcon::StmtCatchBlock( LINE, 0 );
          COMPILER->pushContextSet( &lst->children() );
          t->addHandler( lst );
-      ;}
+      }
     break;
 
   case 189:
@@ -4583,14 +4583,14 @@
          Falcon::StmtCatchBlock *lst = new Falcon::StmtCatchBlock( LINE, (yyvsp[(4) - (5)].fal_val) );
          COMPILER->pushContextSet( &lst->children() );
          t->addHandler( lst );
-      ;}
+      }
     break;
 
   case 190:
 #line 1158 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       COMPILER->raiseError( Falcon::e_syn_catch );
-   ;}
+   }
     break;
 
   case 193:
@@ -4604,7 +4604,7 @@
             COMPILER->raiseError(Falcon::e_catch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 194:
@@ -4622,17 +4622,17 @@
             COMPILER->raiseError(Falcon::e_catch_clash, "", CURRENT_LINE );
             delete val;
          }
-      ;}
+      }
     break;
 
   case 195:
 #line 1205 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_stat) = new Falcon::StmtRaise( LINE, (yyvsp[(2) - (3)].fal_val) ); ;}
+    { (yyval.fal_stat) = new Falcon::StmtRaise( LINE, (yyvsp[(2) - (3)].fal_val) ); }
     break;
 
   case 196:
 #line 1206 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_raise ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_raise ); (yyval.fal_stat) = 0; }
     break;
 
   case 197:
@@ -4640,7 +4640,7 @@
     {
          (yyval.fal_stat) = COMPILER->getContext();
          COMPILER->closeFunction();
-      ;}
+      }
     break;
 
   case 198:
@@ -4649,36 +4649,36 @@
          COMPILER->addStatement( (yyvsp[(2) - (2)].fal_stat) );
          (yyval.fal_stat) = COMPILER->getContext();
          COMPILER->closeFunction();
-      ;}
+      }
     break;
 
   case 200:
 #line 1233 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->tempLine( CURRENT_LINE ); ;}
+    { COMPILER->tempLine( CURRENT_LINE ); }
     break;
 
   case 201:
 #line 1234 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseContextError(Falcon::e_syn_funcdecl, COMPILER->tempLine(), CTX_LINE );
-      ;}
+      }
     break;
 
   case 202:
 #line 1237 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_funcdecl ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_funcdecl ); }
     break;
 
   case 204:
 #line 1242 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->tempLine( CURRENT_LINE ); ;}
+    { COMPILER->tempLine( CURRENT_LINE ); }
     break;
 
   case 205:
 #line 1243 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseContextError(Falcon::e_syn_funcdecl, COMPILER->tempLine(), CTX_LINE );
-      ;}
+      }
     break;
 
   case 206:
@@ -4732,7 +4732,7 @@
          COMPILER->pushFunctionContext( func );
          COMPILER->pushContextSet( &func->statements() );
          COMPILER->pushFunction( def );
-      ;}
+      }
     break;
 
   case 210:
@@ -4748,7 +4748,7 @@
             COMPILER->module()->addSymbol( sym );
             func->addParameter( sym );
          }
-      ;}
+      }
     break;
 
   case 212:
@@ -4757,7 +4757,7 @@
          Falcon::StmtFunction *func = static_cast<Falcon::StmtFunction *>(COMPILER->getContext());
          COMPILER->pushContextSet( &func->staticBlock() );
          COMPILER->staticPrefix( &func->symbol()->name() );
-      ;}
+      }
     break;
 
   case 213:
@@ -4765,7 +4765,7 @@
     {
          COMPILER->popContextSet();
          COMPILER->staticPrefix(0);
-      ;}
+      }
     break;
 
   case 214:
@@ -4774,7 +4774,7 @@
          Falcon::StmtFunction *func = static_cast<Falcon::StmtFunction *>(COMPILER->getContext());
          COMPILER->pushContextSet( &func->staticBlock() );
          COMPILER->staticPrefix( &func->symbol()->name() );
-      ;}
+      }
     break;
 
   case 215:
@@ -4783,29 +4783,29 @@
          COMPILER->addStatement( (yyvsp[(3) - (3)].fal_stat) );
          COMPILER->popContextSet();
          COMPILER->staticPrefix(0);
-      ;}
+      }
     break;
 
   case 217:
 #line 1354 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_static ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_static ); }
     break;
 
   case 219:
 #line 1359 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_static, "", CURRENT_LINE ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_static, "", CURRENT_LINE ); }
     break;
 
   case 220:
 #line 1369 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_stat) = new Falcon::StmtLaunch( LINE, (yyvsp[(2) - (3)].fal_val) );
-      ;}
+      }
     break;
 
   case 221:
 #line 1372 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_launch ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_launch ); (yyval.fal_stat) = 0; }
     break;
 
   case 222:
@@ -4815,7 +4815,7 @@
             COMPILER->raiseError(Falcon::e_pass_outside );
          else
             (yyval.fal_stat) = new Falcon::StmtPass( LINE, (yyvsp[(2) - (3)].fal_val) );
-      ;}
+      }
     break;
 
   case 223:
@@ -4833,7 +4833,7 @@
             COMPILER->defineVal( (yyvsp[(4) - (5)].fal_val) );
             (yyval.fal_stat) = new Falcon::StmtPass( LINE, (yyvsp[(2) - (5)].fal_val), (yyvsp[(4) - (5)].fal_val) );
          }
-      ;}
+      }
     break;
 
   case 224:
@@ -4842,7 +4842,7 @@
          delete (yyvsp[(2) - (5)].fal_val);
          COMPILER->raiseError(Falcon::e_syn_pass_in );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 225:
@@ -4850,7 +4850,7 @@
     {
          COMPILER->raiseError(Falcon::e_syn_pass );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 226:
@@ -4863,7 +4863,7 @@
          // we don't need the expression anymore
          // no other action:
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 227:
@@ -4871,7 +4871,7 @@
     {
          COMPILER->raiseError(Falcon::e_inv_const_val );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 228:
@@ -4879,7 +4879,7 @@
     {
          COMPILER->raiseError(Falcon::e_syn_const );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 229:
@@ -4891,7 +4891,7 @@
             COMPILER->sourceTree()->setExportAll();
          // no effect
          (yyval.fal_stat)=0;
-      ;}
+      }
     break;
 
   case 230:
@@ -4901,7 +4901,7 @@
             COMPILER->raiseError(Falcon::e_export_all );
          // no effect
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 231:
@@ -4909,7 +4909,7 @@
     {
          COMPILER->raiseError(Falcon::e_syn_export );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 232:
@@ -4917,7 +4917,7 @@
     {
          Falcon::Symbol *sym = COMPILER->addGlobalSymbol( (yyvsp[(1) - (1)].stringp) );
          sym->exported(true);
-      ;}
+      }
     break;
 
   case 233:
@@ -4925,14 +4925,14 @@
     {
          Falcon::Symbol *sym = COMPILER->addGlobalSymbol( (yyvsp[(3) - (3)].stringp) );
          sym->exported(true);
-      ;}
+      }
     break;
 
   case 234:
 #line 1485 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 235:
@@ -4940,7 +4940,7 @@
     {
          COMPILER->raiseError(Falcon::e_syn_import );
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 236:
@@ -4948,7 +4948,7 @@
     {
          Falcon::Symbol *sym = COMPILER->addGlobalSymbol( (yyvsp[(1) - (1)].stringp) );
          sym->imported(true);
-      ;}
+      }
     break;
 
   case 237:
@@ -4956,7 +4956,7 @@
     {
          Falcon::Symbol *sym = COMPILER->addGlobalSymbol( (yyvsp[(3) - (3)].stringp) );
          sym->imported(true);
-      ;}
+      }
     break;
 
   case 238:
@@ -4964,7 +4964,7 @@
     {
          // no effect
          (yyval.fal_stat)=0;
-      ;}
+      }
     break;
 
   case 239:
@@ -4972,28 +4972,28 @@
     {
          COMPILER->raiseError(Falcon::e_syn_directive );
          (yyval.fal_stat)=0;
-     ;}
+     }
     break;
 
   case 242:
 #line 1532 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->setDirective( *(yyvsp[(1) - (3)].stringp), *(yyvsp[(3) - (3)].stringp) );
-      ;}
+      }
     break;
 
   case 243:
 #line 1536 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->setDirective( *(yyvsp[(1) - (3)].stringp), *(yyvsp[(3) - (3)].stringp) );
-      ;}
+      }
     break;
 
   case 244:
 #line 1540 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->setDirective( *(yyvsp[(1) - (3)].stringp), (yyvsp[(3) - (3)].integer) );
-      ;}
+      }
     break;
 
   case 245:
@@ -5001,7 +5001,7 @@
     {
          // no other action:
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 246:
@@ -5009,38 +5009,38 @@
     {
          // no other action:
          (yyval.fal_stat) = 0;
-      ;}
+      }
     break;
 
   case 248:
 #line 1569 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_attributes ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_attributes ); }
     break;
 
   case 250:
 #line 1573 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_attributes, "", CURRENT_LINE ); ;}
+    { COMPILER->raiseError(Falcon::e_syn_attributes, "", CURRENT_LINE ); }
     break;
 
   case 252:
 #line 1579 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             COMPILER->addAttribute( (yyvsp[(1) - (1)].stringp) );
-         ;}
+         }
     break;
 
   case 253:
 #line 1583 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             COMPILER->addAttribute( (yyvsp[(3) - (3)].stringp) );
-         ;}
+         }
     break;
 
   case 256:
 #line 1592 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       COMPILER->raiseError(Falcon::e_inv_attrib );
-   ;}
+   }
     break;
 
   case 257:
@@ -5071,7 +5071,7 @@
 
          // We don't have a context set here
          COMPILER->pushFunction( def );
-      ;}
+      }
     break;
 
   case 258:
@@ -5095,26 +5095,26 @@
          COMPILER->popContext();
          //We didn't pushed a context set
          COMPILER->popFunction();
-      ;}
+      }
     break;
 
   case 260:
 #line 1665 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseError(Falcon::e_syn_class );
-      ;}
+      }
     break;
 
   case 263:
 #line 1673 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->tempLine( CURRENT_LINE ); ;}
+    { COMPILER->tempLine( CURRENT_LINE ); }
     break;
 
   case 264:
 #line 1674 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseContextError(Falcon::e_syn_class, COMPILER->tempLine(), CTX_LINE );
-      ;}
+      }
     break;
 
   case 269:
@@ -5147,29 +5147,29 @@
             COMPILER->raiseError(Falcon::e_prop_adef );
             delete idef;
          }
-      ;}
+      }
     break;
 
   case 270:
 #line 1724 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_adecl) = 0; ;}
+    { (yyval.fal_adecl) = 0; }
     break;
 
   case 271:
 #line 1729 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       (yyval.fal_adecl) = (yyvsp[(2) - (3)].fal_adecl);
-   ;}
+   }
     break;
 
   case 272:
 #line 1735 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); (yyval.fal_adecl)->pushBack( (yyvsp[(1) - (1)].fal_val) ); ;}
+    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); (yyval.fal_adecl)->pushBack( (yyvsp[(1) - (1)].fal_val) ); }
     break;
 
   case 273:
 #line 1736 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyvsp[(1) - (3)].fal_adecl)->pushBack( (yyvsp[(3) - (3)].fal_val) ); (yyval.fal_adecl) = (yyvsp[(1) - (3)].fal_adecl); ;}
+    { (yyvsp[(1) - (3)].fal_adecl)->pushBack( (yyvsp[(3) - (3)].fal_val) ); (yyval.fal_adecl) = (yyvsp[(1) - (3)].fal_adecl); }
     break;
 
   case 275:
@@ -5181,19 +5181,19 @@
             sym = COMPILER->addGlobalSymbol( (yyvsp[(1) - (1)].stringp) );
          }
          (yyval.fal_val) = new Falcon::Value( sym );
-      ;}
+      }
     break;
 
   case 276:
 #line 1750 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value(); (yyval.fal_val)->setSelf(); ;}
+    { (yyval.fal_val) = new Falcon::Value(); (yyval.fal_val)->setSelf(); }
     break;
 
   case 280:
 #line 1760 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       COMPILER->addFunction( (yyvsp[(1) - (1)].fal_stat) );
-   ;}
+   }
     break;
 
   case 281:
@@ -5215,7 +5215,7 @@
 
          ctor_stmt->statements().push_back( (yyvsp[(1) - (1)].fal_stat) );  // this goes directly in the auto constructor.
       }
-   ;}
+   }
     break;
 
   case 283:
@@ -5238,7 +5238,7 @@
             COMPILER->pushContextSet( &func->statements() );
             COMPILER->pushFunction( func->symbol()->getFuncDef() );
          }
-      ;}
+      }
     break;
 
   case 284:
@@ -5249,7 +5249,7 @@
          COMPILER->popContext();
          COMPILER->popContextSet();
          COMPILER->popFunction();
-      ;}
+      }
     break;
 
   case 285:
@@ -5273,7 +5273,7 @@
       }
       delete (yyvsp[(4) - (5)].fal_val); // the expression is not needed anymore
       (yyval.fal_stat) = 0; // we don't add any statement
-   ;}
+   }
     break;
 
   case 286:
@@ -5301,14 +5301,14 @@
          // but also prepare a statement to be executed by the auto-constructor.
          (yyval.fal_stat) = new Falcon::StmtVarDef( LINE, (yyvsp[(1) - (4)].stringp), (yyvsp[(3) - (4)].fal_val) );
       }
-   ;}
+   }
     break;
 
   case 289:
 #line 1872 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       COMPILER->raiseError(Falcon::e_syn_hasdef );
-   ;}
+   }
     break;
 
   case 290:
@@ -5319,7 +5319,7 @@
 
          // The symbolmay be undefined or defined; it's not our task to define it here.
          clsdef->has().pushBack( COMPILER->addGlobalSymbol( (yyvsp[(1) - (1)].stringp) ) );
-      ;}
+      }
     break;
 
   case 291:
@@ -5328,7 +5328,7 @@
          Falcon::StmtClass *cls = static_cast<Falcon::StmtClass *>( COMPILER->getContext() );
          Falcon::ClassDef *clsdef = cls->symbol()->getClassDef();
          clsdef->hasnt().pushBack( COMPILER->addGlobalSymbol( (yyvsp[(2) - (2)].stringp) ) );
-      ;}
+      }
     break;
 
   case 292:
@@ -5337,7 +5337,7 @@
          Falcon::StmtClass *cls = static_cast<Falcon::StmtClass *>( COMPILER->getContext() );
          Falcon::ClassDef *clsdef = cls->symbol()->getClassDef();
          clsdef->has().pushBack( COMPILER->addGlobalSymbol( (yyvsp[(3) - (3)].stringp) ) );
-      ;}
+      }
     break;
 
   case 293:
@@ -5346,7 +5346,7 @@
          Falcon::StmtClass *cls = static_cast<Falcon::StmtClass *>( COMPILER->getContext() );
          Falcon::ClassDef *clsdef = cls->symbol()->getClassDef();
          clsdef->hasnt().pushBack( COMPILER->addGlobalSymbol( (yyvsp[(4) - (4)].stringp) ) );
-      ;}
+      }
     break;
 
   case 294:
@@ -5380,7 +5380,7 @@
          COMPILER->pushFunction( def );
 
          COMPILER->resetEnum();
-      ;}
+      }
     break;
 
   case 295:
@@ -5391,21 +5391,21 @@
          COMPILER->popContext();
          //We didn't pushed a context set
          COMPILER->popFunction();
-      ;}
+      }
     break;
 
   case 299:
 #line 1963 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->addEnumerator( *(yyvsp[(1) - (4)].stringp), (yyvsp[(3) - (4)].fal_val) );
-      ;}
+      }
     break;
 
   case 300:
 #line 1968 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->addEnumerator( *(yyvsp[(1) - (2)].stringp) );
-      ;}
+      }
     break;
 
   case 303:
@@ -5443,7 +5443,7 @@
          //Statements here goes in the auto constructor.
          //COMPILER->pushContextSet( &cls->autoCtor() );
          COMPILER->pushFunction( def );
-      ;}
+      }
     break;
 
   case 304:
@@ -5467,21 +5467,21 @@
          COMPILER->popContext();
          //COMPILER->popContextSet();
          COMPILER->popFunction();
-      ;}
+      }
     break;
 
   case 306:
 #line 2048 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseError(Falcon::e_syn_object );
-      ;}
+      }
     break;
 
   case 310:
 #line 2060 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       COMPILER->addFunction( (yyvsp[(1) - (1)].fal_stat) );
-   ;}
+   }
     break;
 
   case 311:
@@ -5504,7 +5504,7 @@
 
          ctor_stmt->statements().push_back( (yyvsp[(1) - (1)].fal_stat) );  // this goes directly in the auto constructor.
       }
-   ;}
+   }
     break;
 
   case 313:
@@ -5512,7 +5512,7 @@
     {
          Falcon::StmtGlobal *glob = new Falcon::StmtGlobal( CURRENT_LINE );
          COMPILER->pushContext( glob );
-      ;}
+      }
     break;
 
   case 314:
@@ -5525,14 +5525,14 @@
          }
          (yyval.fal_stat) = COMPILER->getContext();
          COMPILER->popContext();
-      ;}
+      }
     break;
 
   case 317:
 #line 2111 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseError( Falcon::e_syn_global );
-      ;}
+      }
     break;
 
   case 318:
@@ -5544,52 +5544,52 @@
          // then we add the symbol to the global statement (it's just for symbolic asm generation).
          Falcon::StmtGlobal *glob = static_cast<Falcon::StmtGlobal *>( COMPILER->getContext() );
          glob->addSymbol( sym );
-      ;}
+      }
     break;
 
   case 319:
 #line 2133 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_stat) = new Falcon::StmtReturn(LINE, 0); ;}
+    { (yyval.fal_stat) = new Falcon::StmtReturn(LINE, 0); }
     break;
 
   case 320:
 #line 2134 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_stat) = new Falcon::StmtReturn( LINE, (yyvsp[(2) - (3)].fal_val) ); ;}
+    { (yyval.fal_stat) = new Falcon::StmtReturn( LINE, (yyvsp[(2) - (3)].fal_val) ); }
     break;
 
   case 321:
 #line 2135 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syn_return ); (yyval.fal_stat) = 0; ;}
+    { COMPILER->raiseError(Falcon::e_syn_return ); (yyval.fal_stat) = 0; }
     break;
 
   case 322:
 #line 2145 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value(); ;}
+    { (yyval.fal_val) = new Falcon::Value(); }
     break;
 
   case 323:
 #line 2146 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( true ); ;}
+    { (yyval.fal_val) = new Falcon::Value( true ); }
     break;
 
   case 324:
 #line 2147 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( false ); ;}
+    { (yyval.fal_val) = new Falcon::Value( false ); }
     break;
 
   case 325:
 #line 2148 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].integer) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].integer) ); }
     break;
 
   case 326:
 #line 2149 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].numeric) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].numeric) ); }
     break;
 
   case 327:
 #line 2150 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].stringp) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].stringp) ); }
     break;
 
   case 328:
@@ -5607,192 +5607,192 @@
             val = new Falcon::Value( sym );
          }
          (yyval.fal_val) = val;
-     ;}
+     }
     break;
 
   case 330:
 #line 2173 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value(); (yyval.fal_val)->setSelf(); ;}
+    { (yyval.fal_val) = new Falcon::Value(); (yyval.fal_val)->setSelf(); }
     break;
 
   case 331:
 #line 2174 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value(); (yyval.fal_val)->setSender(); ;}
+    { (yyval.fal_val) = new Falcon::Value(); (yyval.fal_val)->setSender(); }
     break;
 
   case 334:
 #line 2187 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_neg, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_neg, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 335:
 #line 2188 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_plus, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_plus, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 336:
 #line 2189 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_minus, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_minus, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 337:
 #line 2190 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_times, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_times, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 338:
 #line 2191 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_divide, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_divide, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 339:
 #line 2192 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_modulo, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_modulo, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 340:
 #line 2193 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_power, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_power, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 341:
 #line 2194 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_and, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_and, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 342:
 #line 2195 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_or, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_or, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 343:
 #line 2196 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_xor, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_xor, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 344:
 #line 2197 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_shift_left, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_shift_left, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 345:
 #line 2198 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_shift_right, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_shift_right, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 346:
 #line 2199 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_not, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_bin_not, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 347:
 #line 2200 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_neq, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_neq, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 348:
 #line 2201 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_post_inc, (yyvsp[(1) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_post_inc, (yyvsp[(1) - (2)].fal_val) ) ); }
     break;
 
   case 349:
 #line 2202 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_pre_inc, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_pre_inc, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 350:
 #line 2203 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_post_dec, (yyvsp[(1) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_post_dec, (yyvsp[(1) - (2)].fal_val) ) ); }
     break;
 
   case 351:
 #line 2204 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_pre_dec, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_pre_dec, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 352:
 #line 2205 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_eq, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_eq, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 353:
 #line 2206 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_gt, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_gt, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 354:
 #line 2207 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_lt, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_lt, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 355:
 #line 2208 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_ge, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_ge, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 356:
 #line 2209 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_le, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_le, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 357:
 #line 2210 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_and, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_and, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 358:
 #line 2211 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_or, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_or, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 359:
 #line 2212 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_not, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_not, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 360:
 #line 2213 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_has, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_has, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 361:
 #line 2214 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_hasnt, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_hasnt, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 362:
 #line 2215 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_in, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_in, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 363:
 #line 2216 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_notin, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_notin, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 364:
 #line 2217 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_provides, (yyvsp[(1) - (3)].fal_val), new Falcon::Value( (yyvsp[(3) - (3)].stringp) ) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_provides, (yyvsp[(1) - (3)].fal_val), new Falcon::Value( (yyvsp[(3) - (3)].stringp) ) ) ); }
     break;
 
   case 365:
 #line 2218 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (2)].fal_val) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (2)].fal_val) ); }
     break;
 
   case 366:
 #line 2219 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( (Falcon::Value *) 0 ); ;}
+    { (yyval.fal_val) = new Falcon::Value( (Falcon::Value *) 0 ); }
     break;
 
   case 367:
 #line 2220 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_strexpand, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_strexpand, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 368:
 #line 2221 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_indirect, (yyvsp[(2) - (2)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_indirect, (yyvsp[(2) - (2)].fal_val) ) ); }
     break;
 
   case 375:
@@ -5800,14 +5800,14 @@
     {
          Falcon::Expression *exp = new Falcon::Expression( Falcon::Expression::t_array_access, (yyvsp[(1) - (2)].fal_val), (yyvsp[(2) - (2)].fal_val) );
          (yyval.fal_val) = new Falcon::Value( exp );
-      ;}
+      }
     break;
 
   case 376:
 #line 2234 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
       (yyval.fal_val) = new Falcon::Value( (yyvsp[(1) - (1)].fal_adecl) );
-   ;}
+   }
     break;
 
   case 377:
@@ -5815,7 +5815,7 @@
     {
       Falcon::Expression *exp = new Falcon::Expression( Falcon::Expression::t_array_access, (yyvsp[(1) - (4)].fal_val), (yyvsp[(3) - (4)].fal_val) );
       (yyval.fal_val) = new Falcon::Value( exp );
-   ;}
+   }
     break;
 
   case 378:
@@ -5823,7 +5823,7 @@
     {
          Falcon::Expression *exp = new Falcon::Expression( Falcon::Expression::t_array_byte_access, (yyvsp[(1) - (5)].fal_val), (yyvsp[(4) - (5)].fal_val) );
          (yyval.fal_val) = new Falcon::Value( exp );
-      ;}
+      }
     break;
 
   case 379:
@@ -5835,7 +5835,7 @@
             COMPILER->raiseError(Falcon::e_priv_access, COMPILER->tempLine() );
          }
          (yyval.fal_val) = new Falcon::Value( exp );
-      ;}
+      }
     break;
 
   case 382:
@@ -5843,7 +5843,7 @@
     {
       COMPILER->defineVal( (yyvsp[(1) - (3)].fal_val) );
       (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_assign, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) );
-   ;}
+   }
     break;
 
   case 383:
@@ -5853,102 +5853,102 @@
       (yyvsp[(5) - (5)].fal_adecl)->pushFront( (yyvsp[(3) - (5)].fal_val) );
       Falcon::Value *second = new Falcon::Value( (yyvsp[(5) - (5)].fal_adecl) );
       (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_assign, (yyvsp[(1) - (5)].fal_val), second ) );
-   ;}
+   }
     break;
 
   case 384:
 #line 2273 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_aadd, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_aadd, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 385:
 #line 2274 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_asub, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_asub, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 386:
 #line 2275 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_amul, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_amul, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 387:
 #line 2276 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_adiv, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_adiv, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 388:
 #line 2277 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_amod, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_amod, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 389:
 #line 2278 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_apow, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_apow, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 390:
 #line 2279 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_aband, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_aband, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 391:
 #line 2280 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_abor, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_abor, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 392:
 #line 2281 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_abxor, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_abxor, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 393:
 #line 2282 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_ashl, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_ashl, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 394:
 #line 2283 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_ashr, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_ashr, (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ) ); }
     break;
 
   case 395:
 #line 2284 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    {(yyval.fal_val)=(yyvsp[(2) - (3)].fal_val);;}
+    {(yyval.fal_val)=(yyvsp[(2) - (3)].fal_val);}
     break;
 
   case 396:
 #line 2289 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::RangeDecl( new Falcon::Value( (Falcon::int64) 0 ) ) );
-      ;}
+      }
     break;
 
   case 397:
 #line 2292 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::RangeDecl( (yyvsp[(2) - (4)].fal_val) ) );
-      ;}
+      }
     break;
 
   case 398:
 #line 2295 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::RangeDecl( new Falcon::Value( (Falcon::int64) 0 ), (yyvsp[(3) - (4)].fal_val) ) );
-      ;}
+      }
     break;
 
   case 399:
 #line 2298 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::RangeDecl( (yyvsp[(2) - (5)].fal_val), (yyvsp[(4) - (5)].fal_val) ) );
-      ;}
+      }
     break;
 
   case 400:
 #line 2301 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::RangeDecl( (yyvsp[(2) - (7)].fal_val), (yyvsp[(4) - (7)].fal_val), (yyvsp[(6) - (7)].fal_val) ) );
-      ;}
+      }
     break;
 
   case 401:
@@ -5956,19 +5956,19 @@
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_funcall,
                                       (yyvsp[(1) - (4)].fal_val), new Falcon::Value( (yyvsp[(3) - (4)].fal_adecl) ) ) );
-      ;}
+      }
     break;
 
   case 402:
 #line 2314 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( new Falcon::Expression( Falcon::Expression::t_funcall, (yyvsp[(1) - (3)].fal_val), 0 ) );
-      ;}
+      }
     break;
 
   case 403:
 #line 2318 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { COMPILER->tempLine( CURRENT_LINE ); ;}
+    { COMPILER->tempLine( CURRENT_LINE ); }
     break;
 
   case 404:
@@ -5977,7 +5977,7 @@
          delete (yyvsp[(3) - (6)].fal_adecl);
          COMPILER->raiseContextError(Falcon::e_syn_funcall, COMPILER->tempLine(), CTX_LINE );
          (yyval.fal_val) = new Falcon::Value;
-      ;}
+      }
     break;
 
   case 405:
@@ -6010,28 +6010,28 @@
          COMPILER->pushFunctionContext( func );
          COMPILER->pushContextSet( &func->statements() );
          COMPILER->pushFunction( def );
-      ;}
+      }
     break;
 
   case 406:
 #line 2362 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
             (yyval.fal_val) = COMPILER->closeClosure();
-         ;}
+         }
     break;
 
   case 408:
 #line 2370 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseContextError(Falcon::e_syn_funcdecl, LINE, CTX_LINE );
-      ;}
+      }
     break;
 
   case 409:
 #line 2374 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseError(Falcon::e_syn_funcdecl );
-      ;}
+      }
     break;
 
   case 410:
@@ -6063,7 +6063,7 @@
          COMPILER->pushFunctionContext( func );
          COMPILER->pushContextSet( &func->statements() );
          COMPILER->pushFunction( def );
-      ;}
+      }
     break;
 
   case 411:
@@ -6074,7 +6074,7 @@
                new Falcon::Value( func->symbol() ) ) );
             // analyze func in previous context.
             COMPILER->closeFunction();
-         ;}
+         }
     break;
 
   case 412:
@@ -6107,7 +6107,7 @@
          COMPILER->pushFunctionContext( func );
          COMPILER->pushContextSet( &func->statements() );
          COMPILER->pushFunction( def );
-      ;}
+      }
     break;
 
   case 413:
@@ -6117,14 +6117,14 @@
             COMPILER->addStatement( new Falcon::StmtReturn( LINE, (yyvsp[(5) - (5)].fal_val) ) );
             COMPILER->checkLocalUndefined();
             (yyval.fal_val) = COMPILER->closeClosure();
-         ;}
+         }
     break;
 
   case 415:
 #line 2470 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          COMPILER->raiseError( Falcon::e_syn_lambda );
-      ;}
+      }
     break;
 
   case 416:
@@ -6132,7 +6132,7 @@
     {
       (yyval.fal_val) = new Falcon::Value( new
          Falcon::Expression( Falcon::Expression::t_iif, (yyvsp[(1) - (5)].fal_val), (yyvsp[(3) - (5)].fal_val), (yyvsp[(5) - (5)].fal_val) ) );
-   ;}
+   }
     break;
 
   case 417:
@@ -6142,7 +6142,7 @@
       delete (yyvsp[(3) - (5)].fal_val);
       COMPILER->raiseError(Falcon::e_syn_iif, CURRENT_LINE );
       (yyval.fal_val) = new Falcon::Value;
-   ;}
+   }
     break;
 
   case 418:
@@ -6152,7 +6152,7 @@
       delete (yyvsp[(3) - (4)].fal_val);
       COMPILER->raiseError(Falcon::e_syn_iif, CURRENT_LINE );
       (yyval.fal_val) = new Falcon::Value;
-   ;}
+   }
     break;
 
   case 419:
@@ -6161,19 +6161,19 @@
          delete (yyvsp[(1) - (3)].fal_val);
          COMPILER->raiseError(Falcon::e_syn_iif, CURRENT_LINE );
          (yyval.fal_val) = new Falcon::Value;
-      ;}
+      }
     break;
 
   case 420:
 #line 2507 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); ;}
+    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); }
     break;
 
   case 421:
 #line 2509 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_adecl) = (yyvsp[(2) - (3)].fal_adecl);
-      ;}
+      }
     break;
 
   case 422:
@@ -6181,19 +6181,19 @@
     {
          COMPILER->raiseContextError( Falcon::e_syn_arraydecl, CURRENT_LINE, CTX_LINE );
          (yyval.fal_adecl) = (yyvsp[(2) - (3)].fal_adecl);
-      ;}
+      }
     break;
 
   case 423:
 #line 2520 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    {  (yyval.fal_val) = new Falcon::Value( new Falcon::ArrayDecl() ); ;}
+    {  (yyval.fal_val) = new Falcon::Value( new Falcon::ArrayDecl() ); }
     break;
 
   case 424:
 #line 2522 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
     {
          (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (3)].fal_adecl) );
-      ;}
+      }
     break;
 
   case 425:
@@ -6201,17 +6201,17 @@
     {
          COMPILER->raiseContextError( Falcon::e_syn_arraydecl, CURRENT_LINE, CTX_LINE );
          (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (3)].fal_adecl) );
-      ;}
+      }
     break;
 
   case 426:
 #line 2534 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    {  (yyval.fal_val) = new Falcon::Value( new Falcon::DictDecl() ); ;}
+    {  (yyval.fal_val) = new Falcon::Value( new Falcon::DictDecl() ); }
     break;
 
   case 427:
 #line 2535 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (3)].fal_ddecl) ); ;}
+    { (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (3)].fal_ddecl) ); }
     break;
 
   case 428:
@@ -6219,27 +6219,27 @@
     {
          COMPILER->raiseContextError( Falcon::e_syn_dictdecl, LINE, CTX_LINE );
          (yyval.fal_val) = new Falcon::Value( (yyvsp[(2) - (4)].fal_ddecl) );
-      ;}
+      }
     break;
 
   case 429:
 #line 2544 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); (yyval.fal_adecl)->pushBack( (yyvsp[(1) - (1)].fal_val) ); ;}
+    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); (yyval.fal_adecl)->pushBack( (yyvsp[(1) - (1)].fal_val) ); }
     break;
 
   case 430:
 #line 2545 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyvsp[(1) - (3)].fal_adecl)->pushBack( (yyvsp[(3) - (3)].fal_val) ); (yyval.fal_adecl) = (yyvsp[(1) - (3)].fal_adecl); ;}
+    { (yyvsp[(1) - (3)].fal_adecl)->pushBack( (yyvsp[(3) - (3)].fal_val) ); (yyval.fal_adecl) = (yyvsp[(1) - (3)].fal_adecl); }
     break;
 
   case 431:
 #line 2549 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); (yyval.fal_adecl)->pushBack( (yyvsp[(1) - (1)].fal_val) ); ;}
+    { (yyval.fal_adecl) = new Falcon::ArrayDecl(); (yyval.fal_adecl)->pushBack( (yyvsp[(1) - (1)].fal_val) ); }
     break;
 
   case 432:
 #line 2550 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyvsp[(1) - (2)].fal_adecl)->pushBack( (yyvsp[(2) - (2)].fal_val) ); (yyval.fal_adecl) = (yyvsp[(1) - (2)].fal_adecl); ;}
+    { (yyvsp[(1) - (2)].fal_adecl)->pushBack( (yyvsp[(2) - (2)].fal_val) ); (yyval.fal_adecl) = (yyvsp[(1) - (2)].fal_adecl); }
     break;
 
   case 433:
@@ -6249,7 +6249,7 @@
          Falcon::ArrayDecl *ad = new Falcon::ArrayDecl();
          ad->pushBack( (yyvsp[(1) - (1)].fal_val) );
          (yyval.fal_adecl) = ad;
-      ;}
+      }
     break;
 
   case 434:
@@ -6257,17 +6257,17 @@
     {
          COMPILER->defineVal( (yyvsp[(3) - (3)].fal_val) );
          (yyvsp[(1) - (3)].fal_adecl)->pushBack( (yyvsp[(3) - (3)].fal_val) );
-      ;}
+      }
     break;
 
   case 435:
 #line 2567 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyval.fal_ddecl) = new Falcon::DictDecl(); (yyval.fal_ddecl)->pushBack( (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ); ;}
+    { (yyval.fal_ddecl) = new Falcon::DictDecl(); (yyval.fal_ddecl)->pushBack( (yyvsp[(1) - (3)].fal_val), (yyvsp[(3) - (3)].fal_val) ); }
     break;
 
   case 436:
 #line 2568 "/home/gian/Progetti/falcon/core/engine/src_parser.yy"
-    { (yyvsp[(1) - (5)].fal_ddecl)->pushBack( (yyvsp[(3) - (5)].fal_val), (yyvsp[(5) - (5)].fal_val) ); (yyval.fal_ddecl) = (yyvsp[(1) - (5)].fal_ddecl); ;}
+    { (yyvsp[(1) - (5)].fal_ddecl)->pushBack( (yyvsp[(3) - (5)].fal_val), (yyvsp[(5) - (5)].fal_val) ); (yyval.fal_ddecl) = (yyvsp[(1) - (5)].fal_ddecl); }
     break;
 
 
Index: engine/CMakeLists.txt
===================================================================
--- engine/CMakeLists.txt	(revision 393)
+++ engine/CMakeLists.txt	(working copy)
@@ -1,39 +1,13 @@
-PROJECT(falcon_engine)
+##################################################
+# Falcon Programming Language
+#
+# Faltest
+##################################################
 
 #Engine specific define
 ADD_DEFINITIONS(-DFALCON_ENGINE_EXPORTS)
-#set common include directory
-FALCON_INCLUDE_SETTINGS()
 
-# BISON a .ll file
-# search BISON
-MACRO(FIND_BISON)
-   IF(NOT BISON_EXECUTABLE)
-      FIND_PROGRAM(BISON_EXECUTABLE bison)
-      IF (NOT BISON_EXECUTABLE)
-         MESSAGE(FATAL_ERROR "BISON not found - aborting")
-      ENDIF (NOT BISON_EXECUTABLE)
-   ENDIF(NOT BISON_EXECUTABLE)
-ENDMACRO(FIND_BISON)
 
-MACRO( ADD_BISON_FILES _sources )
-   FIND_BISON()
-   FOREACH (_current_FILE ${ARGN})
-      GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE)
-      GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
-      SET(_out ${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.cpp)
-      SET(_out_h ${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.h)
-      ADD_CUSTOM_COMMAND(
-         OUTPUT ${_out}
-         COMMAND ${BISON_EXECUTABLE}
-         ARGS -o${_out} --defines=${_out_h} ${_in}
-         DEPENDS ${_in} )
-
-      SET(${_sources} ${${_sources}} ${_out} )
-   ENDFOREACH (_current_FILE)
-ENDMACRO(ADD_BISON_FILES)
-
-
 #Specific system files
 IF(UNIX OR MAC)
    SET( SYS_SPECIFIC
@@ -53,14 +27,38 @@
    ELSE(UNIX)
       SET( SYS_SPECIFIC
          ${SYS_SPECIFIC}
-         dll_win.cpp )
+         dll_mac.cpp )
    ENDIF(UNIX)
 
-   ADD_BISON_FILES( bison_src
-      fasm_parser.yy
-      src_parser.yy
-   )
+   #We need bison.
+   IF(NOT BISON_EXECUTABLE)
+      FIND_PROGRAM(BISON_EXECUTABLE bison)
+      IF (NOT BISON_EXECUTABLE)
+         MESSAGE(FATAL_ERROR "BISON not found - aborting")
+      ENDIF (NOT BISON_EXECUTABLE)
+   ENDIF(NOT BISON_EXECUTABLE)
 
+   # Adding bison parsers.
+   ADD_CUSTOM_TARGET(SrcParser echo "Creating src_parser.cpp")
+   ADD_CUSTOM_TARGET(FasmParser echo "Creating fasm_parser.cpp")
+
+   #builds in-source always; we want it in svn.
+   ADD_CUSTOM_COMMAND(
+      SOURCE ${FALCON_SRC_TREE}/core/engine/src_parser.yy
+      COMMAND ${BISON_EXECUTABLE}
+      ARGS -y ${FALCON_SRC_TREE}/core/engine/src_parser.yy -o ${FALCON_SRC_TREE}/core/engine/src_parser.cpp
+      TARGET SrcParser
+      DEPENDS ${FALCON_SRC_TREE}/core/include/falcon/syntree.h
+      OUTPUTS ${FALCON_SRC_TREE}/core/engine/src_parser.cpp )
+
+   #builds in-source always; we want it in svn.
+   ADD_CUSTOM_COMMAND(
+      SOURCE ${FALCON_SRC_TREE}/core/engine/src_parser.yy
+      COMMAND ${BISON_EXECUTABLE}
+      ARGS -y ${FALCON_SRC_TREE}/core/engine/fasm_parser.yy -o ${FALCON_SRC_TREE}/core/engine/fasm_parser.cpp
+      TARGET FasmParser
+      OUTPUTS ${FALCON_SRC_TREE}/core/engine/fasm_parser.cpp )
+
 ELSEIF(WIN32)
 
    #todo: add prebuilt
@@ -75,17 +73,13 @@
       falcon_engine.rc
       )
 
-   SET( bison_src
-      fasm_parser.cpp
-      src_parser.cpp
-   )
-
 ENDIF(UNIX OR MAC)
 
 INCLUDE_DIRECTORIES(.)
 
 ADD_LIBRARY( falcon_engine SHARED
-   ${bison_src}
+   fasm_parser.cpp
+   src_parser.cpp
 
    attribute.cpp
    autocstring.cpp
@@ -160,6 +154,10 @@
    ${SYS_SPECIFIC}
    )
 
+IF(BISON_EXECUTABLE)
+   ADD_DEPENDENCIES( falcon_engine SrcParser FasmParser )
+ENDIF(BISON_EXECUTABLE)
+
 SET_TARGET_PROPERTIES(falcon_engine
    PROPERTIES
       VERSION "${FALCON_SONAME_VERSION}.${FALCON_SONAME_REVISION}.${FALCON_SONAME_AGE}"
@@ -174,8 +172,10 @@
    ENDIF(UNIX)
 
    #Finally, link everything to the lib dir
+INSTALL( TARGETS falcon_engine
+         DESTINATION "${FALCON_LIB_DIR}" )
 
+ELSE(UNIX OR MAC)
+INSTALL( TARGETS falcon_engine
+         DESTINATION "${FALCON_MOD_INSTALL}" )
 ENDIF(UNIX OR MAC)
-
-SET(CMAKE_INSTALL_PREFIX "")
-FALCON_LIB_INSTALL( falcon_engine )
Index: engine/fasm_parser.cpp
===================================================================
--- engine/fasm_parser.cpp	(revision 393)
+++ engine/fasm_parser.cpp	(working copy)
@@ -2665,227 +2665,227 @@
     {
         case 9:
 #line 240 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_syntax, LINE - 1 ); ;}
+    { COMPILER->raiseError(Falcon::e_syntax, LINE - 1 ); }
     break;
 
   case 33:
 #line 254 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addEntry(); ;}
+    { COMPILER->addEntry(); }
     break;
 
   case 34:
 #line 255 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->setModuleName( (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->setModuleName( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 35:
 #line 256 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addGlobal( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    { COMPILER->addGlobal( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 36:
 #line 257 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addGlobal( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); ;}
+    { COMPILER->addGlobal( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); }
     break;
 
   case 37:
 #line 258 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addVar( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addVar( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 38:
 #line 259 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addVar( (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), true ); ;}
+    { COMPILER->addVar( (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), true ); }
     break;
 
   case 39:
 #line 260 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addConst( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    { COMPILER->addConst( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 40:
 #line 261 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addConst( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); ;}
+    { COMPILER->addConst( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); }
     break;
 
   case 41:
 #line 262 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addAttrib( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    { COMPILER->addAttrib( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 42:
 #line 263 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addAttrib( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); ;}
+    { COMPILER->addAttrib( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); }
     break;
 
   case 43:
 #line 264 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addLocal( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addLocal( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 44:
 #line 265 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addParam( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addParam( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 45:
 #line 266 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addFuncDef( (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addFuncDef( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 46:
 #line 267 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addFuncDef( (yyvsp[(2) - (3)]), true ); ;}
+    {  COMPILER->addFuncDef( (yyvsp[(2) - (3)]), true ); }
     break;
 
   case 47:
 #line 268 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addFunction( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addFunction( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 48:
 #line 269 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addFunction( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); ;}
+    {  COMPILER->addFunction( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); }
     break;
 
   case 49:
 #line 270 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addFuncEnd(); ;}
+    { COMPILER->addFuncEnd(); }
     break;
 
   case 50:
 #line 271 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addLoad( (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addLoad( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 51:
 #line 272 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 52:
 #line 273 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 53:
 #line 274 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]), true ); ;}
+    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]), true ); }
     break;
 
   case 54:
 #line 275 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]), true ); ;}
+    { COMPILER->addDSwitch( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]), true ); }
     break;
 
   case 55:
 #line 276 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 56:
 #line 277 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 57:
 #line 278 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 58:
 #line 279 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 59:
 #line 280 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addDCase( (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 60:
 #line 281 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDCase( (yyvsp[(2) - (6)]), (yyvsp[(6) - (6)]), (yyvsp[(4) - (6)]) ); ;}
+    { COMPILER->addDCase( (yyvsp[(2) - (6)]), (yyvsp[(6) - (6)]), (yyvsp[(4) - (6)]) ); }
     break;
 
   case 61:
 #line 282 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addDEndSwitch(); ;}
+    { COMPILER->addDEndSwitch(); }
     break;
 
   case 62:
 #line 283 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addProperty( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addProperty( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 63:
 #line 284 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addProperty( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addProperty( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 64:
 #line 285 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addPropRef( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addPropRef( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 67:
 #line 288 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstance( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstance( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 68:
 #line 289 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstance( (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), true ); ;}
+    { COMPILER->addInstance( (yyvsp[(2) - (5)]), (yyvsp[(3) - (5)]), (yyvsp[(4) - (5)]), true ); }
     break;
 
   case 69:
 #line 290 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addClass( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addClass( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 70:
 #line 291 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addClass( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); ;}
+    {  COMPILER->addClass( (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)]), true ); }
     break;
 
   case 71:
 #line 292 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addClassDef( (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addClassDef( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 72:
 #line 293 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addClassDef( (yyvsp[(2) - (3)]), true ); ;}
+    {  COMPILER->addClassDef( (yyvsp[(2) - (3)]), true ); }
     break;
 
   case 73:
 #line 294 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addClassCtor( (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addClassCtor( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 74:
 #line 295 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addFuncEnd(); /* Currently the same as .endfunc */ ;}
+    { COMPILER->addFuncEnd(); /* Currently the same as .endfunc */ }
     break;
 
   case 75:
 #line 296 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInherit((yyvsp[(2) - (2)])); ;}
+    { COMPILER->addInherit((yyvsp[(2) - (2)])); }
     break;
 
   case 77:
 #line 297 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addFrom( (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addFrom( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 78:
 #line 298 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addExtern( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); ;}
+    {  COMPILER->addExtern( (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]) ); }
     break;
 
   case 79:
 #line 299 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addDLine( (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addDLine( (yyvsp[(2) - (2)]) ); }
     break;
 
   case 80:
@@ -2893,7 +2893,7 @@
     {
          // string already added to the module by the lexer
          delete (yyvsp[(2) - (2)]);
-      ;}
+      }
     break;
 
   case 81:
@@ -2902,7 +2902,7 @@
          // string already added to the module by the lexer
          (yyvsp[(2) - (2)])->asString().exported( true );
          delete (yyvsp[(2) - (2)]);
-      ;}
+      }
     break;
 
   case 82:
@@ -2910,837 +2910,837 @@
     {
          // string already added to the module by the lexer
          delete (yyvsp[(2) - (2)]);
-      ;}
+      }
     break;
 
   case 83:
 #line 320 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->classHas( (yyvsp[(1) - (1)]) ); ;}
+    { COMPILER->classHas( (yyvsp[(1) - (1)]) ); }
     break;
 
   case 84:
 #line 321 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->classHas( (yyvsp[(3) - (3)]) ); ;}
+    { COMPILER->classHas( (yyvsp[(3) - (3)]) ); }
     break;
 
   case 85:
 #line 325 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->classHasnt( (yyvsp[(1) - (1)]) ); ;}
+    { COMPILER->classHasnt( (yyvsp[(1) - (1)]) ); }
     break;
 
   case 86:
 #line 326 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->classHasnt( (yyvsp[(3) - (3)]) ); ;}
+    { COMPILER->classHasnt( (yyvsp[(3) - (3)]) ); }
     break;
 
   case 87:
 #line 329 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->defineLabel( (yyvsp[(1) - (2)])->asLabel() ); ;}
+    { COMPILER->defineLabel( (yyvsp[(1) - (2)])->asLabel() ); }
     break;
 
   case 89:
 #line 333 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInheritParam( (yyvsp[(1) - (1)]) ); ;}
+    { COMPILER->addInheritParam( (yyvsp[(1) - (1)]) ); }
     break;
 
   case 90:
 #line 334 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInheritParam( (yyvsp[(3) - (3)]) ); ;}
+    { COMPILER->addInheritParam( (yyvsp[(3) - (3)]) ); }
     break;
 
   case 93:
 #line 343 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {(yyval) = new Falcon::Pseudo( LINE, (Falcon::int64) 0 ); ;}
+    {(yyval) = new Falcon::Pseudo( LINE, (Falcon::int64) 0 ); }
     break;
 
   case 197:
 #line 453 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LD, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_LD, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 198:
 #line 454 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LD" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LD" ); }
     break;
 
   case 199:
 #line 458 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDRF, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_LDRF, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 200:
 #line 459 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDRF" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDRF" ); }
     break;
 
   case 201:
 #line 463 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LNIL, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_LNIL, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 202:
 #line 464 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LNIL" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LNIL" ); }
     break;
 
   case 203:
 #line 468 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_ADD, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_ADD, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 204:
 #line 469 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "ADD" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "ADD" ); }
     break;
 
   case 205:
 #line 473 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_ADDS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_ADDS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 206:
 #line 474 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "ADDS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "ADDS" ); }
     break;
 
   case 207:
 #line 479 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_SUB, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_SUB, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 208:
 #line 480 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SUB" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SUB" ); }
     break;
 
   case 209:
 #line 484 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_SUBS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_SUBS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 210:
 #line 485 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SUBS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SUBS" ); }
     break;
 
   case 211:
 #line 489 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_MUL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_MUL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 212:
 #line 490 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "MUL" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "MUL" ); }
     break;
 
   case 213:
 #line 494 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_MULS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_MULS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 214:
 #line 495 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "MULS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "MULS" ); }
     break;
 
   case 215:
 #line 500 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_DIV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_DIV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 216:
 #line 501 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "DIV" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "DIV" ); }
     break;
 
   case 217:
 #line 505 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_DIVS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_DIVS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 218:
 #line 506 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "DIVS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "DIVS" ); }
     break;
 
   case 219:
 #line 510 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_MOD, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_MOD, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 220:
 #line 511 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "MOD" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "MOD" ); }
     break;
 
   case 221:
 #line 515 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_POW, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_POW, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 222:
 #line 516 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "POW" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "POW" ); }
     break;
 
   case 223:
 #line 521 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_EQ, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_EQ, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 224:
 #line 522 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "EQ" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "EQ" ); }
     break;
 
   case 225:
 #line 526 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_NEQ, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_NEQ, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 226:
 #line 527 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "NEQ" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "NEQ" ); }
     break;
 
   case 227:
 #line 531 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_GE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 228:
 #line 532 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GE" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GE" ); }
     break;
 
   case 229:
 #line 536 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_GT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 230:
 #line 537 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GT" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GT" ); }
     break;
 
   case 231:
 #line 541 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_LE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 232:
 #line 542 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LE" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LE" ); }
     break;
 
   case 233:
 #line 546 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_LT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 234:
 #line 547 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LT" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LT" ); }
     break;
 
   case 235:
 #line 551 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed(true); COMPILER->addInstr( P_TRY, (yyvsp[(2) - (2)])); ;}
+    { (yyvsp[(2) - (2)])->fixed(true); COMPILER->addInstr( P_TRY, (yyvsp[(2) - (2)])); }
     break;
 
   case 236:
 #line 552 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed(true); COMPILER->addInstr( P_TRY, (yyvsp[(2) - (2)])); ;}
+    { (yyvsp[(2) - (2)])->fixed(true); COMPILER->addInstr( P_TRY, (yyvsp[(2) - (2)])); }
     break;
 
   case 237:
 #line 553 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "TRY" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "TRY" ); }
     break;
 
   case 238:
 #line 557 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_INC, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_INC, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 239:
 #line 558 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "INC" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "INC" ); }
     break;
 
   case 240:
 #line 562 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_DEC, (yyvsp[(2) - (2)])  ); ;}
+    { COMPILER->addInstr( P_DEC, (yyvsp[(2) - (2)])  ); }
     break;
 
   case 241:
 #line 563 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "DEC" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "DEC" ); }
     break;
 
   case 242:
 #line 568 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_INCP, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_INCP, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 243:
 #line 569 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "INCP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "INCP" ); }
     break;
 
   case 244:
 #line 573 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_DECP, (yyvsp[(2) - (2)])  ); ;}
+    { COMPILER->addInstr( P_DECP, (yyvsp[(2) - (2)])  ); }
     break;
 
   case 245:
 #line 574 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "DECP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "DECP" ); }
     break;
 
   case 246:
 #line 579 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_NEG, (yyvsp[(2) - (2)])  ); ;}
+    { COMPILER->addInstr( P_NEG, (yyvsp[(2) - (2)])  ); }
     break;
 
   case 247:
 #line 580 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "NEG" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "NEG" ); }
     break;
 
   case 248:
 #line 584 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_NOT, (yyvsp[(2) - (2)])  ); ;}
+    { COMPILER->addInstr( P_NOT, (yyvsp[(2) - (2)])  ); }
     break;
 
   case 249:
 #line 585 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "NOT" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "NOT" ); }
     break;
 
   case 250:
 #line 589 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_CALL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_CALL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 251:
 #line 590 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_CALL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_CALL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 252:
 #line 591 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "CALL" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "CALL" ); }
     break;
 
   case 253:
 #line 595 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_INST, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_INST, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 254:
 #line 596 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_INST, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_INST, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 255:
 #line 597 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "INST" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "INST" ); }
     break;
 
   case 256:
 #line 601 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_UNPK, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_UNPK, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 257:
 #line 602 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "UNPK" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "UNPK" ); }
     break;
 
   case 258:
 #line 606 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_UNPS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_UNPS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 259:
 #line 607 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "UNPS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "UNPS" ); }
     break;
 
   case 260:
 #line 612 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addInstr( P_PUSH, (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addInstr( P_PUSH, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 261:
 #line 613 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_PSHN ); ;}
+    { COMPILER->addInstr( P_PSHN ); }
     break;
 
   case 262:
 #line 614 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PUSH" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PUSH" ); }
     break;
 
   case 263:
 #line 618 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_PSHR, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_PSHR, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 264:
 #line 619 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PSHR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PSHR" ); }
     break;
 
   case 265:
 #line 624 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addInstr( P_POP, (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addInstr( P_POP, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 266:
 #line 625 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "POP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "POP" ); }
     break;
 
   case 267:
 #line 629 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    {  COMPILER->addInstr( P_PEEK, (yyvsp[(2) - (2)]) ); ;}
+    {  COMPILER->addInstr( P_PEEK, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 268:
 #line 630 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PEEK" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PEEK" ); }
     break;
 
   case 269:
 #line 634 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_XPOP, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_XPOP, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 270:
 #line 635 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "XPOP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "XPOP" ); }
     break;
 
   case 271:
 #line 640 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_LDV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 272:
 #line 641 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_LDV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 273:
 #line 642 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDV" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDV" ); }
     break;
 
   case 274:
 #line 646 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDVT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_LDVT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 275:
 #line 647 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDVT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_LDVT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 276:
 #line 648 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDVT" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDVT" ); }
     break;
 
   case 277:
 #line 652 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_STV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 278:
 #line 653 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_STV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 279:
 #line 654 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STV" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STV" ); }
     break;
 
   case 280:
 #line 658 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STVR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_STVR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 281:
 #line 659 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STVR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_STVR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 282:
 #line 660 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STVR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STVR" ); }
     break;
 
   case 283:
 #line 664 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STVS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_STVS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 284:
 #line 665 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STVS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_STVS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 285:
 #line 666 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STVS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STVS" ); }
     break;
 
   case 286:
 #line 670 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDP, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_LDP, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 287:
 #line 671 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDP, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_LDP, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 288:
 #line 672 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDP" ); yyerrok; ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDP" ); yyerrok; }
     break;
 
   case 289:
 #line 676 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDPT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_LDPT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 290:
 #line 677 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDPT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_LDPT, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 291:
 #line 678 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDPT" ); yyerrok; ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDPT" ); yyerrok; }
     break;
 
   case 292:
 #line 682 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STP, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { COMPILER->addInstr( P_STP, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 293:
 #line 683 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STP, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { COMPILER->addInstr( P_STP, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 294:
 #line 684 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STP" ); }
     break;
 
   case 295:
 #line 688 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STPR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { COMPILER->addInstr( P_STPR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 296:
 #line 689 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STPR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { COMPILER->addInstr( P_STPR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 297:
 #line 690 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STPR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STPR" ); }
     break;
 
   case 298:
 #line 694 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STPS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_STPS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 299:
 #line 695 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STPS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_STPS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 300:
 #line 696 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STPS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STPS" ); }
     break;
 
   case 301:
 #line 700 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { (yyvsp[(2) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 302:
 #line 701 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { (yyvsp[(2) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAV, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 303:
 #line 702 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "TRAV" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "TRAV" ); }
     break;
 
   case 304:
 #line 706 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (6)])->fixed( true ); (yyvsp[(4) - (6)])->fixed( true ); (yyvsp[(6) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAN, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { (yyvsp[(2) - (6)])->fixed( true ); (yyvsp[(4) - (6)])->fixed( true ); (yyvsp[(6) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAN, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 305:
 #line 707 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (6)])->fixed( true ); (yyvsp[(4) - (6)])->fixed( true ); (yyvsp[(6) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAN, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { (yyvsp[(2) - (6)])->fixed( true ); (yyvsp[(4) - (6)])->fixed( true ); (yyvsp[(6) - (6)])->fixed( true ); COMPILER->addInstr( P_TRAN, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 306:
 #line 708 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "TRAN" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "TRAN" ); }
     break;
 
   case 307:
 #line 712 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_TRAL, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_TRAL, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 308:
 #line 713 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_TRAL, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_TRAL, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 309:
 #line 714 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "TRAL" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "TRAL" ); }
     break;
 
   case 310:
 #line 718 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_IPOP, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_IPOP, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 311:
 #line 719 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "IPOP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "IPOP" ); }
     break;
 
   case 312:
 #line 723 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_GENA, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_GENA, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 313:
 #line 724 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GENA" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GENA" ); }
     break;
 
   case 314:
 #line 728 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_GEND, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_GEND, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 315:
 #line 729 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GEND" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GEND" ); }
     break;
 
   case 316:
 #line 733 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GENR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); ;}
+    { COMPILER->addInstr( P_GENR, (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)])); }
     break;
 
   case 317:
 #line 734 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GENR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GENR" ); }
     break;
 
   case 318:
 #line 738 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GEOR, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_GEOR, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 319:
 #line 739 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GEOR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GEOR" ); }
     break;
 
   case 320:
 #line 743 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_RIS, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_RIS, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 321:
 #line 744 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "RIS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "RIS" ); }
     break;
 
   case 322:
 #line 748 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JMP, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JMP, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 323:
 #line 749 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JMP, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JMP, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 324:
 #line 750 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "JMP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "JMP" ); }
     break;
 
   case 325:
 #line 754 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BOOL, (yyvsp[(1) - (2)]) ); ;}
+    { COMPILER->addInstr( P_BOOL, (yyvsp[(1) - (2)]) ); }
     break;
 
   case 326:
 #line 755 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "BOOL" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "BOOL" ); }
     break;
 
   case 327:
 #line 759 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 328:
 #line 760 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFT, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 329:
 #line 761 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "IFT" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "IFT" ); }
     break;
 
   case 330:
 #line 765 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFF, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFF, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 331:
 #line 766 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFF, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_IFF, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 332:
 #line 767 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "IFF" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "IFF" ); }
     break;
 
   case 333:
 #line 772 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); (yyvsp[(4) - (4)])->fixed( true ); COMPILER->addInstr( P_FORK, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); (yyvsp[(4) - (4)])->fixed( true ); COMPILER->addInstr( P_FORK, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 334:
 #line 773 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); (yyvsp[(4) - (4)])->fixed( true ); COMPILER->addInstr( P_FORK, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); (yyvsp[(4) - (4)])->fixed( true ); COMPILER->addInstr( P_FORK, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 335:
 #line 774 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "FORK" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "FORK" ); }
     break;
 
   case 336:
 #line 778 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JTRY, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JTRY, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 337:
 #line 779 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JTRY, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_JTRY, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 338:
 #line 780 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "JTRY" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "JTRY" ); }
     break;
 
   case 339:
 #line 784 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_RET ); ;}
+    { COMPILER->addInstr( P_RET ); }
     break;
 
   case 340:
 #line 785 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "RET" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "RET" ); }
     break;
 
   case 341:
 #line 789 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_RETA ); ;}
+    { COMPILER->addInstr( P_RETA ); }
     break;
 
   case 342:
 #line 790 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "RETA" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "RETA" ); }
     break;
 
   case 343:
 #line 794 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_RETV, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_RETV, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 344:
 #line 795 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "RETV" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "RETV" ); }
     break;
 
   case 345:
 #line 799 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_NOP ); ;}
+    { COMPILER->addInstr( P_NOP ); }
     break;
 
   case 346:
 #line 800 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "NOP" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "NOP" ); }
     break;
 
   case 347:
 #line 804 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_PTRY, (yyvsp[(2) - (2)]) ); ;}
+    { (yyvsp[(2) - (2)])->fixed( true ); COMPILER->addInstr( P_PTRY, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 348:
 #line 805 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PTRY" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PTRY" ); }
     break;
 
   case 349:
 #line 809 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_END ); ;}
+    { COMPILER->addInstr( P_END ); }
     break;
 
   case 350:
 #line 810 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "END" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "END" ); }
     break;
 
   case 351:
 #line 814 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (6)])->fixed(true); COMPILER->write_switch( (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { (yyvsp[(2) - (6)])->fixed(true); COMPILER->write_switch( (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 352:
 #line 815 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SWCH" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SWCH" ); }
     break;
 
   case 353:
 #line 819 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (6)])->fixed(true); COMPILER->write_switch( (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); ;}
+    { (yyvsp[(2) - (6)])->fixed(true); COMPILER->write_switch( (yyvsp[(2) - (6)]), (yyvsp[(4) - (6)]), (yyvsp[(6) - (6)]) ); }
     break;
 
   case 354:
 #line 820 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SELE" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SELE" ); }
     break;
 
   case 355:
@@ -3751,7 +3751,7 @@
          psd->asList()->pushBack( (yyvsp[(1) - (3)]) );
          psd->asList()->pushBack( (yyvsp[(3) - (3)]) );
          (yyval) = psd;
-      ;}
+      }
     break;
 
   case 356:
@@ -3760,432 +3760,432 @@
          (yyvsp[(1) - (5)])->asList()->pushBack( (yyvsp[(3) - (5)]) );
          (yyvsp[(1) - (5)])->asList()->pushBack( (yyvsp[(5) - (5)]) );
          (yyval) = (yyvsp[(1) - (5)]);
-      ;}
+      }
     break;
 
   case 357:
 #line 842 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_ONCE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); COMPILER->addStatic(); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_ONCE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); COMPILER->addStatic(); }
     break;
 
   case 358:
 #line 843 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_ONCE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); COMPILER->addStatic(); ;}
+    { (yyvsp[(2) - (4)])->fixed( true ); COMPILER->addInstr( P_ONCE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); COMPILER->addStatic(); }
     break;
 
   case 359:
 #line 844 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "ONCE" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "ONCE" ); }
     break;
 
   case 360:
 #line 848 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 361:
 #line 849 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 362:
 #line 850 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 363:
 #line 851 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BAND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 364:
 #line 852 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "BAND" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "BAND" ); }
     break;
 
   case 365:
 #line 856 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 366:
 #line 857 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 367:
 #line 858 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 368:
 #line 859 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 369:
 #line 860 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "BOR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "BOR" ); }
     break;
 
   case 370:
 #line 864 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 371:
 #line 865 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 372:
 #line 866 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 373:
 #line 867 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_BXOR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 374:
 #line 868 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "BXOR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "BXOR" ); }
     break;
 
   case 375:
 #line 872 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BNOT, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_BNOT, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 376:
 #line 873 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_BNOT, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_BNOT, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 377:
 #line 874 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "BXOR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "BXOR" ); }
     break;
 
   case 378:
 #line 878 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_AND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_AND, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 379:
 #line 879 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "AND" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "AND" ); }
     break;
 
   case 380:
 #line 883 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_OR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_OR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 381:
 #line 884 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "OR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "OR" ); }
     break;
 
   case 382:
 #line 888 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_ANDS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_ANDS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 383:
 #line 889 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "ANDS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "ANDS" ); }
     break;
 
   case 384:
 #line 893 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_ORS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_ORS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 385:
 #line 894 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "ORS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "ORS" ); }
     break;
 
   case 386:
 #line 898 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_XORS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_XORS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 387:
 #line 899 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "XORS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "XORS" ); }
     break;
 
   case 388:
 #line 903 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_MODS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_MODS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 389:
 #line 904 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "MODS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "MODS" ); }
     break;
 
   case 390:
 #line 908 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_POWS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_POWS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 391:
 #line 909 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "POWS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "POWS" ); }
     break;
 
   case 392:
 #line 913 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_NOTS, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_NOTS, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 393:
 #line 914 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "NOTS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "NOTS" ); }
     break;
 
   case 394:
 #line 918 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_HAS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_HAS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 395:
 #line 919 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_HAS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_HAS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 396:
 #line 920 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "HAS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "HAS" ); }
     break;
 
   case 397:
 #line 924 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_HASN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_HASN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 398:
 #line 925 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_HASN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_HASN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 399:
 #line 926 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "HASN" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "HASN" ); }
     break;
 
   case 400:
 #line 930 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GIVE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_GIVE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 401:
 #line 931 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GIVE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_GIVE, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 402:
 #line 932 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GIVE" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GIVE" ); }
     break;
 
   case 403:
 #line 936 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GIVN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_GIVN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 404:
 #line 937 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_GIVN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_GIVN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 405:
 #line 938 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "GIVN" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "GIVN" ); }
     break;
 
   case 406:
 #line 943 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_IN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_IN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 407:
 #line 944 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "IN" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "IN" ); }
     break;
 
   case 408:
 #line 948 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_NOIN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_NOIN, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 409:
 #line 949 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "NOIN" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "NOIN" ); }
     break;
 
   case 410:
 #line 953 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_PROV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); ;}
+    { COMPILER->addInstr( P_PROV, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); }
     break;
 
   case 411:
 #line 954 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PROV" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PROV" ); }
     break;
 
   case 412:
 #line 958 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_PSIN, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_PSIN, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 413:
 #line 959 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PSIN" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PSIN" ); }
     break;
 
   case 414:
 #line 963 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_PASS, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_PASS, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 415:
 #line 964 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "PASS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "PASS" ); }
     break;
 
   case 416:
 #line 968 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_SHR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_SHR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 417:
 #line 969 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SHR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SHR" ); }
     break;
 
   case 418:
 #line 973 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_SHL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_SHL, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 419:
 #line 974 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SHL" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SHL" ); }
     break;
 
   case 420:
 #line 978 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_SHRS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_SHRS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 421:
 #line 979 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SHRS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SHRS" ); }
     break;
 
   case 422:
 #line 983 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_SHLS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_SHLS, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 423:
 #line 984 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "SHLS" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "SHLS" ); }
     break;
 
   case 424:
 #line 988 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDVR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_LDVR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 425:
 #line 989 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDVR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDVR" ); }
     break;
 
   case 426:
 #line 993 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LDPR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_LDPR, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 427:
 #line 994 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LDPR" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LDPR" ); }
     break;
 
   case 428:
 #line 998 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_LSB, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_LSB, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 429:
 #line 999 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "LSB" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "LSB" ); }
     break;
 
   case 430:
 #line 1003 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_INDI, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_INDI, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 431:
 #line 1004 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_INDI, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_INDI, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 432:
 #line 1005 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "INDI" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "INDI" ); }
     break;
 
   case 433:
 #line 1009 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STEX, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_STEX, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 434:
 #line 1010 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STEX, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_STEX, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 435:
 #line 1011 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError( Falcon::e_invop, "STEX" ); ;}
+    { COMPILER->raiseError( Falcon::e_invop, "STEX" ); }
     break;
 
   case 436:
 #line 1015 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_TRAC, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_TRAC, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 437:
 #line 1016 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError( Falcon::e_invop, "TRAC" ); ;}
+    { COMPILER->raiseError( Falcon::e_invop, "TRAC" ); }
     break;
 
   case 438:
 #line 1020 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_WRT, (yyvsp[(2) - (2)]) ); ;}
+    { COMPILER->addInstr( P_WRT, (yyvsp[(2) - (2)]) ); }
     break;
 
   case 439:
 #line 1021 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError( Falcon::e_invop, "WRT" ); ;}
+    { COMPILER->raiseError( Falcon::e_invop, "WRT" ); }
     break;
 
   case 440:
 #line 1026 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->addInstr( P_STO, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); ;}
+    { COMPILER->addInstr( P_STO, (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]) ); }
     break;
 
   case 441:
 #line 1027 "/home/gian/Progetti/falcon/core/engine/fasm_parser.yy"
-    { COMPILER->raiseError(Falcon::e_invop, "STO" ); ;}
+    { COMPILER->raiseError(Falcon::e_invop, "STO" ); }
     break;
 
 
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(revision 393)
+++ CMakeLists.txt	(working copy)
@@ -3,27 +3,165 @@
 #
 # CMake configuration file for Core falcon
 ####################################################################
-
+cmake_minimum_required(VERSION 2.4)
 PROJECT(Falcon_Core)
-SET(FALCON_PROJECT_BASE "core")
 
-#Check for environment
-IF($ENV{FALCON_DEVEL_TREE} STREQUAL "" )
+IF("$ENV{FALCON_DEVEL_TREE}" STREQUAL "")
    MESSAGE( FATAL_ERROR "Sorry, Falcon environment not correctly configured" )
-ENDIF($ENV{FALCON_DEVEL_TREE} STREQUAL "")
+ENDIF("$ENV{FALCON_DEVEL_TREE}" STREQUAL "")
 
-#Include falcon configuration
-INCLUDE("$ENV{FALCON_DEVEL_TREE}/config.cmake")
+#Set the default buid type to Debug
+IF(NOT CMAKE_BUILD_TYPE)
+   SET( CMAKE_BUILD_TYPE $ENV{FALCON_BUILD_TYPE} )
 
-#set common include directory
-FALCON_INCLUDE_SETTINGS()
+   #Still unset?
+   IF(NOT CMAKE_BUILD_TYPE)
+   SET(CMAKE_BUILD_TYPE Debug CACHE STRING
+      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+      FORCE)
+   ENDIF(NOT CMAKE_BUILD_TYPE)
+ENDIF(NOT CMAKE_BUILD_TYPE)
 
-FALCON_ADD_SUBDIRECTORY(engine)
-FALCON_ADD_SUBDIRECTORY(rtl)
-FALCON_ADD_SUBDIRECTORY(clt)
+# This is the "product version"
+SET(FALCON_VERSION_MAJOR      "$ENV{FALCON_VERSION_MAJOR}")
+SET(FALCON_VERSION_MINOR      "$ENV{FALCON_VERSION_MINOR}")
+SET(FALCON_VERSION_REVISION   "$ENV{FALCON_VERSION_REVISION}")
+SET(FALCON_VERSION_PATCH      "$ENV{FALCON_VERSION_PATCH}")
 
+SET(FALCON_VERSION_NAME "$ENV{FALCON_VERSION_NAME}")
+
+#SONAME and soversion (unix so library informations for engine)
+# Remember that SONAME never follows project versioning, but
+# uses a VERSION, REVISION, AGE format, where
+# VERSION: generational version of the project
+# REVISION: times this version has been touched
+# AGE: Number of version for which binary compatibility is granted
+# In eample, 1.12.5 means that this lib may be dynlinked against
+# every program using this lib versioned from 1.8 to 1.12.
+
+IF( NOT "$ENV{FALCON_SONAME_AGE}" STREQUAL "" )
+   SET(FALCON_SONAME_VERSION $ENV{FALCON_SONAME_VERSION})
+   SET(FALCON_SONAME_REVISION $ENV{FALCON_SONAME_REVISION})
+   SET(FALCON_SONAME_AGE $ENV{FALCON_SONAME_AGE})
+
+   # A couple of useful shortcuts
+   SET(FALCON_SONAME "${FALCON_SONAME_VERSION}.${FALCON_SONAME_REVISION}.${FALCON_SONAME_AGE}")
+   SET(FALCON_SONAME_REV "${FALCON_SONAME_VERSION}.${FALCON_SONAME_REVISION}")
+ENDIF( NOT "$ENV{FALCON_SONAME_AGE}" STREQUAL "" )
+
+#Automatically generated version info for RC scripts and sources
+#CMAKE is good at this, let's use this feature
+SET(FALCON_VERSION_RC   "${FALCON_VERSION_MAJOR}, ${FALCON_VERSION_MINOR}, ${FALCON_VERSION_REVISION}, ${FALCON_VERSION_PATCH}")
+SET(FALCON_VERSION_ID   "${FALCON_VERSION_MAJOR}.${FALCON_VERSION_MINOR}.${FALCON_VERSION_REVISION}.${FALCON_VERSION_PATCH}")
+
+#Import environment variables
+SET(FALCON_BUILD_NAME   $ENV{FALCON_BUILD_NAME})
+SET(FALCON_ACTIVE_TREE  $ENV{FALCON_ACTIVE_TREE})
+SET(FALCON_SRC_TREE     $ENV{FALCON_SRC_TREE})
+SET(FALCON_DEVEL_TREE   $ENV{FALCON_DEVEL_TREE})
+SET(FALCON_BUILD_TREE   $ENV{FALCON_BUILD_TREE})
+
+##############################################################################
+# Including specific build informations
+# This is a user-configurable script containing vars
+##############################################################################
+INCLUDE("${FALCON_DEVEL_TREE}/settings.cmake" OPTIONAL)
+
+#install will happen in FALCON_INSTALL_TREE (With optional FALCON_INSTALL_TREE_LIB)
+IF( "${FALCON_INSTALL_TREE}" STREQUAL "" )
+   SET( FALCON_INSTALL_TREE  "${FALCON_ACTIVE_TREE}" )
+ENDIF( "${FALCON_INSTALL_TREE}" STREQUAL "" )
+
+IF( "${FALCON_INSTALL_TREE_LIB}" STREQUAL "" )
+   SET( FALCON_INSTALL_TREE_LIB  "lib" )
+ENDIF( "${FALCON_INSTALL_TREE_LIB}" STREQUAL "" )
+
+#sets default installation target dirs.
+
+SET( FALCON_INC_DIR "${FALCON_INSTALL_TREE}/include" )
+SET( FALCON_BIN_DIR "${FALCON_INSTALL_TREE}/bin" )
+SET( FALCON_LIB_DIR "${FALCON_INSTALL_TREE}/${FALCON_INSTALL_TREE_LIB}" )
+IF(WIN32)
+   SET( FALCON_MOD_INSTALL "$ENV{FALCON_ACTIVE_TREE}/bin" )
+ELSE(WIN32)
+   SET( FALCON_MOD_INSTALL "${FALCON_LIB_DIR}/falcon" )
+ENDIF(WIN32)
+
+##############################################################################
+#  Other defaults
+##############################################################################
+INCLUDE(TestBigEndian)
+
+TEST_BIG_ENDIAN(falcon_big_endian)
+IF(falcon_big_endian)
+   SET(FALCON_LITTLE_ENDIAN 0)
+ELSE(falcon_big_endian)
+   SET(FALCON_LITTLE_ENDIAN 1)
+ENDIF(falcon_big_endian)
+
+
+#IMPORT final destination - the default install directory.
+IF("${FALCON_FINAL_DESTINATION}" STREQUAL "" )
+   #In windows, we normally install in c:\falcon
+   IF(WIN32)
+      IF($ENV{PRGORAMS})
+         SET(FALCON_FINAL_DESTINATION  "C:\\\\$ENV{PROGRAMS}\\\\falcon" )
+      ELSE($ENV{PRGORAMS})
+         SET(FALCON_FINAL_DESTINATION  "C:\\\\Program Files\\\\falcon" )
+      ENDIF($ENV{PRGORAMS})
+   ELSE(WIN32)
+      SET(FALCON_FINAL_DESTINATION  "/usr/local" )
+   ENDIF(WIN32)
+ENDIF("${FALCON_FINAL_DESTINATION}" STREQUAL "" )
+
+IF("${FALCON_FINAL_DESTINATION_LIB}" STREQUAL "" )
+   SET(FALCON_FINAL_DESTINATION_LIB  "${FALCON_INSTALL_TREE_LIB}" )
+ENDIF("${FALCON_FINAL_DESTINATION_LIB}" STREQUAL "" )
+
+#In windows, we normally install in c:\falcon
+IF(WIN32)
+   SET( FALCON_HOST_SYSTEM "WINDOWS" )
+   SET( FALCON_SYSTEM_WIN 1 )
+ELSE(WIN32)
+   IF(APPLE)
+      SET( FALCON_HOST_SYSTEM "MAC" )
+      SET( FALCON_SYSTEM_MAC 1 )
+   ELSEIF(UNIX)
+      SET( FALCON_HOST_SYSTEM "UNIX" )
+      SET( FALCON_SYSTEM_UNIX 1 )
+   ELSE(APPLE)
+      MESSAGE( "Sorry, can't determine system type" )
+   ENDIF(APPLE)
+ENDIF(WIN32)
+
+
+##############################################################################
+#  Used macro
+##############################################################################
+
+MACRO(FALCON_CONFIG itemlist)
+   FOREACH(item ${${itemlist}} )
+      MESSAGE( "Configuring ${item}.in into ${item}" )
+      CONFIGURE_FILE(
+         ${item}.in
+         ${item}
+         ESCAPE_QUOTES
+         @ONLY )
+   ENDFOREACH(item)
+ENDMACRO(FALCON_CONFIG)
+
+#include also from-source builds to allow compilation from source
+INCLUDE_DIRECTORIES(BEFORE ${FALCON_SRC_TREE}/core/include)
+INCLUDE_DIRECTORIES( BEFORE ${FALCON_BUILD_TREE}/core/include)
+LINK_DIRECTORIES( ${FALCON_BUILD_TREE}/core/engine )
+
+#We'll take cares of prefixes
+SET(CMAKE_INSTALL_PREFIX "")
+
+ADD_SUBDIRECTORY(engine)
+ADD_SUBDIRECTORY(rtl)
+ADD_SUBDIRECTORY(clt)
+ADD_SUBDIRECTORY(devtools)
+
 #also performs installation of the include directory
-FALCON_ADD_SUBDIRECTORY("include")
-
-#Setting project wide include directories.
-MESSAGE( "INCLUDING TARGET DIR  ${TARGET_DIR}" )
+ADD_SUBDIRECTORY("include")