summary refs log tree commit diff stats
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/advopt.txt14
-rw-r--r--data/ast.yml59
-rw-r--r--data/basicopt.txt13
-rw-r--r--data/changes.txt22
-rw-r--r--data/magic.yml35
-rw-r--r--data/messages.yml12
-rw-r--r--data/readme.txt7
7 files changed, 75 insertions, 87 deletions
diff --git a/data/advopt.txt b/data/advopt.txt
index 626a000e4..4d9dda7c2 100644
--- a/data/advopt.txt
+++ b/data/advopt.txt
@@ -4,21 +4,17 @@ Advanced commands::
   gen_depend                generate a DOT file containing the
                             module dependency graph
   list_def                  list all defined conditionals and exit
-  rst2html                  converts a reStructuredText file to HTML
   check                     checks the project for syntax and semantic
   parse                     parses a single file (for debugging Nimrod)
-  scan                      tokenizes a single file (for debugging Nimrod)
-  debugtrans                for debugging the transformation pass
 Advanced options:
   -w, --warnings:on|off     warnings ON|OFF
   --warning[X]:on|off       specific warning X ON|OFF
   --hints:on|off            hints ON|OFF
   --hint[X]:on|off          specific hint X ON|OFF
-  --cc:C_COMPILER           set the C/C++ compiler to use
   --lib:PATH                set the system library path
   -c, --compile_only        compile only; do not assemble or link
   --no_linking              compile but do not link
-  --gen_script              generate a compile script (in the 'rod_gen'
+  --gen_script              generate a compile script (in the 'nimcache'
                             subdirectory named 'compile_$project$scriptext')
   --os:SYMBOL               set the target operating system (cross-compilation)
   --cpu:SYMBOL              set the target processor (cross-compilation)
@@ -27,17 +23,13 @@ Advanced options:
   -l, --passl:OPTION        pass an option to the linker
   --gen_mapping             generate a mapping file containing
                             (Nimrod, mangled) identifier pairs
-  --merge_output            generate only one C output file
   --line_dir:on|off         generation of #line directive ON|OFF
   --checkpoints:on|off      turn on|off checkpoints; for debugging Nimrod
   --skip_cfg                do not read the general configuration file
   --skip_proj_cfg           do not read the project's configuration file
   --import:MODULE_FILE      import the given module implicitly for each module
-  --maxerr:NUMBER           stop compilation after NUMBER errors; broken!
-  --ast_cache:on|off        caching of ASTs ON|OFF (default: OFF)
-  --c_file_cache:on|off     caching of generated C files ON|OFF (default: OFF)
   --index:FILE              use FILE to generate a documenation index file
   --putenv:key=value        set an environment variable
   --list_cmd                list the commands used to execute external programs
-  -v, --verbose             show what Nimrod is doing
-  --version                 show detailed version information
+  --verbosity:0|1|2|3       set Nimrod's verbosity level (0 is default)
+  -v, --version             show detailed version information
diff --git a/data/ast.yml b/data/ast.yml
index 72a1b02b5..6bbffae3f 100644
--- a/data/ast.yml
+++ b/data/ast.yml
@@ -8,61 +8,52 @@
 #
 
 {
-'SymFlag': [          # already 32 flags!
-  'sfTypeCheck',      # wether macro parameters should be type checked
+'SymFlag': [          # already 26 flags!
+  'sfUsed',           # read access of sym (for warnings) or simply used
+  'sfStar',           # symbol has * visibility
+  'sfMinus',          # symbol has - visibility
+  'sfInInterface',    # symbol is in interface section declared
+  'sfFromGeneric',    # symbol is instantiation of a generic; this is needed 
+                      # for symbol file generation; such symbols should always
+                      # be written into the ROD file
+  'sfGlobal',         # symbol is at global scope
+
   'sfForward',        # symbol is forward directed
   'sfImportc',        # symbol is external; imported
   'sfExportc',        # symbol is exported (under a specified name)
   'sfVolatile',       # variable is volatile
-  'sfUsed',           # read access of sym (for warnings) or simply used
-  'sfWrite',          # write access of variable (for hints)
   'sfRegister',       # variable should be placed in a register
   'sfPure',           # object is "pure" that means it has no type-information
-  'sfCodeGenerated',  # wether we have already code generated for the proc
-  'sfPrivate',        # symbol should be made private after module compilation
-  'sfGlobal',         # symbol is at global scope
+  
   'sfResult',         # variable is 'result' in proc
   'sfNoSideEffect',   # proc has no side effects
   'sfMainModule',     # module is the main module
   'sfSystemModule',   # module is the system module
   'sfNoReturn',       # proc never returns (an exit proc)
   'sfAddrTaken',      # the variable's address is taken (ex- or implicitely)
-  'sfInInterface',    # symbol is in interface section declared
-  'sfNoStatic',       # symbol is used within an iterator (needed for codegen)
-                      # so it cannot be 'static' in the C code
-                      # this is called 'nostatic' in the pragma section
   'sfCompilerProc',   # proc is a compiler proc, that is a C proc that is
                       # needed for the code generator
-  'sfCppMethod',      # proc is a C++ method
+  'sfCppMethod',      # proc is a C++ method (not implemented yet)
   'sfDiscriminant',   # field is a discriminant in a record/object
   'sfDeprecated',     # symbol is deprecated
   'sfInClosure',      # variable is accessed by a closure
-  'sfIsCopy',         # symbol is a copy; needed for proper name mangling
-  'sfStar',           # symbol has * visibility
-  'sfMinus'           # symbol has - visibility
+  'sfTypeCheck',      # wether macro parameters should be type checked
+  'sfCompileTime',    # proc can be evaluated at compile time
+  'sfThreadVar',      # variable is a thread variable
+  'sfMerge',          # proc can be merged with itself
 ],
 
 'TypeFlag': [
-  'tfIsDistinct',     # better use this flag to make it easier for accessing
-                      # typeKind in the code generators
-  'tfGeneric',        # type is a generic one
-  'tfExternal',       # type is external
-  'tfImported',       # type is imported from C
-  'tfInfoGenerated',  # whether we have generated type information for this type
-  'tfSemChecked',     # used to mark types that's semantic has been checked;
-                      # used to prevend endless loops during semantic checking
-  'tfHasOutParams',   # for a proc or iterator p:
-                      # it indicates that p has out or in out parameters: this
-                      # is used to speed up semantic checking a bit
-  'tfEnumHasWholes',  # enum cannot be mapped into a range
   'tfVarargs',        # procedure has C styled varargs
-  'tfFinal'           # is the object final?
+  'tfFinal',          # is the object final?
+  'tfAcyclic',        # type is acyclic (for GC optimization)
+  'tfEnumHasWholes'   # enum cannot be mapped into a range
 ],
 
 'TypeKind': [        # order is important!
                      # Don't forget to change hti.nim if you make a change here
   'tyNone', 'tyBool', 'tyChar',
-  'tyEmptySet', 'tyArrayConstr', 'tyNil', 
+  'tyEmpty', 'tyArrayConstr', 'tyNil', 
   'tyGeneric',
   'tyGenericInst', # instantiated generic type
   'tyGenericParam',
@@ -89,7 +80,9 @@
   'nfBase2', # nfBase10 is default, so not needed
   'nfBase8',
   'nfBase16',
-  'nfAllConst' # used to mark complex expressions constant
+  'nfAllConst', # used to mark complex expressions constant
+  'nfTransf',   # node has been transformed
+  'nfSem',      # node has been checked for semantics
 ],
 
 'NodeKind': [  # these are pure nodes
@@ -223,6 +216,8 @@
   'nkBlockExpr',          # a statement block ending in an expr; this is used
                           # to allowe powerful multi-line templates that open a
                           # temporary scope
+  'nkStmtListType',       # a statement list ending in a type; for macros
+  'nkBlockType',          # a statement block ending in a type; for macros
   'nkVm',                 # indicates a virtual instruction; integer field is
                           # used for the concrete opcode
 
@@ -264,6 +259,8 @@
   'skEnumField',          # an identifier in an enum
   'skForVar',             # a for loop variable
   'skModule',             # module identifier
-  'skLabel'               # a label (for block statement)
+  'skLabel',              # a label (for block statement)
+  'skStub'                # symbol is a stub and not yet loaded from the ROD
+                          # file (it is loaded on demand, which may mean: never)
 ]
 }
diff --git a/data/basicopt.txt b/data/basicopt.txt
index dff49c3e8..7ff8ef136 100644
--- a/data/basicopt.txt
+++ b/data/basicopt.txt
@@ -1,12 +1,10 @@
 Usage::
   nimrod command [options] inputfile [arguments]
 Command::
-  compile                   compile project with default code generator (C)
-  compile_to_c              compile project with C code generator
-  compile_to_cpp            compile project with C++ code generator
-  compile_to_ecmascript     compile project to ECMAScript code (experimental)
-  doc                       generate the documentation for inputfile;
-                            with --run switch opens it with $BROWSER
+  compile, c                compile project with default code generator (C)
+  compile_to_c, cc          compile project with C code generator
+  doc                       generate the documentation for inputfile
+  rst2html                  converts a reStructuredText file to HTML
 Arguments:
   arguments are passed to the program being run (if --run option is selected)
 Options:
@@ -14,7 +12,8 @@ Options:
   -o, --out:FILE            set the output filename
   -d, --define:SYMBOL       define a conditional symbol
   -u, --undef:SYMBOL        undefine a conditional symbol
-  -b, --force_build         force rebuilding of all modules
+  -f, --force_build         force rebuilding of all modules
+  --symbol_files:on|off     use symbol files to speed up compilation (buggy!)
   --stack_trace:on|off      code generation for stack trace ON|OFF
   --line_trace:on|off       code generation for line trace ON|OFF
   --debugger:on|off         turn Embedded Nimrod Debugger ON|OFF
diff --git a/data/changes.txt b/data/changes.txt
deleted file mode 100644
index a449b7a62..000000000
--- a/data/changes.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-0.1.0
-* new config system
-* new build system
-* source renderer
-* pas2nim integrated
-* support for C++
-* local variables are always initialized
-* Rod file reader and writer
-* new --out, -o command line options
-* fixed bug in nimconf.pas: we now have several
-  string token types
-* changed nkIdentDef to nkIdentDefs
-* added type(expr) in the parser and the grammer
-* added template
-* added command calls
-* added case in records/objects
-* added --skip_proj_cfg switch for nim.dpr
-* added missing features to pasparse
-* rewrote the source generator
-* ``addr`` and ``cast`` are now keywords; grammar updated
-* implemented ` notation; grammar updated
-* specification replaced by a manual
diff --git a/data/magic.yml b/data/magic.yml
index 519505eab..9c03028be 100644
--- a/data/magic.yml
+++ b/data/magic.yml
@@ -3,16 +3,20 @@
 [
 'None',
 'Defined',
-'New',
-'NewFinalize',
 'Low',
 'High',
 'SizeOf',
-'RegisterFinalizer',
+'Is',
 'Succ',
 'Pred',
 'Inc',
 'Dec',
+'Ord',
+
+'New',
+'NewFinalize',
+'NewSeq',
+'RegisterFinalizer',
 'LengthOpenArray',
 'LengthStr',
 'LengthArray',
@@ -20,8 +24,9 @@
 'Incl',
 'Excl',
 'Card',
-'Ord',
 'Chr',
+'GCref',
+'GCunref',
 
 # binary arithmetic with and without overflow checking:
 'AddI',
@@ -161,7 +166,6 @@
 'AppendSeqSeq',
 'InRange',
 'InSet',
-'Is',
 'Asgn',
 'Repr',
 'Exit',
@@ -170,15 +174,34 @@
 'Assert',
 'Swap',
 'IsNil',
+'ArrToSeq',
 
-# magic type constructors:
+# magic types:
 'Array',
 'OpenArray',
 'Range',
 'Set',
 'Seq',
+'Int',
+'Int8',
+'Int16',
+'Int32',
+'Int64',
+'Float',
+'Float32',
+'Float64',
+'Bool',
+'Char',
+'String',
+'Cstring',
+'Pointer', 
+'AnyEnum',
+'EmptySet',
+'IntSetBaseType',
+'Nil',
 
 # magic constants:
+'IsMainModule',
 'CompileDate',
 'CompileTime',
 'NimrodVersion',
diff --git a/data/messages.yml b/data/messages.yml
index 8892b2c3f..a90f9e4a8 100644
--- a/data/messages.yml
+++ b/data/messages.yml
@@ -153,7 +153,8 @@
 {'errSizeTooBig': "computing the type's size produced an overflow"},
 {'errSetTooBig': 'set is too large'},
 {'errBaseTypeMustBeOrdinal': 'base type of a set must be an ordinal'},
-{'errInheritanceOnlyWithNonFinalObjects': 'inheritance only works non-final objects'},
+{'errInheritanceOnlyWithNonFinalObjects':
+  'inheritance only works with non-final objects'},
 {'errInheritanceOnlyWithEnums': 'inheritance only works with an enum'},
 {'errIllegalRecursionInTypeX': "illegal recursion in type '$1'"},
 {'errCannotInstantiateX': "cannot instantiate: '$1'"},
@@ -278,16 +279,17 @@
 
 # hints:
 {'hintSuccess': 'operation successful'},
+{'hintSuccessX': 'operation successful ($1 lines compiled; $2 sec total)'},
 {'hintLineTooLong': 'line too long'},
 {'hintXDeclaredButNotUsed': "'$1' is declared but not used"},
 {'hintConvToBaseNotNeeded': 'conversion to base object is not needed'},
 {'hintConvFromXtoItselfNotNeeded': 'conversion from $1 to itself is pointless'},
 {'hintExprAlwaysX': "expression evaluates always to '$1'"},
-{'hintMo2FileInvalid': "mo2 file '$1' is invalid"},
-{'hintModuleHasChanged': "module '$1' has been changed"},
-{'hintCannotOpenMo2File': "mo2 file '$1' does not exist"},
 {'hintQuitCalled': "quit() called"},
-{'hintProcessing': "processing"},
+{'hintProcessing': "processing $1"},
+{'hintCodeBegin': "generated code listing:"},
+{'hintCodeEnd': "end of listing"},
+{'hintConf': "used config file '$1'"},
 
 # user hint message:
 {'hintUser': '$1'}
diff --git a/data/readme.txt b/data/readme.txt
index 9cea8806a..b72016d6e 100644
--- a/data/readme.txt
+++ b/data/readme.txt
@@ -1,5 +1,2 @@
-This directory contains data files in a format called YAML_. These files
-are required for building Nimrod.
-
-
-.. _YAML: http://www.yaml.org/
+This directory contains data files in Python or ordinary text format. These
+files are required for building Nimrod.