Table of Contents

    . 1. The Felix Compiler
    . 2. Purpose
    . 3. Language
    . 4. The tutorial
    - 5. The Felix Compiler
       . 5.1. Configuration loader
       . 5.2. Version control
       . 5.3. The front end
       . 5.4. System dependent path handling
       - 5.5. Felix specific Utilities
          . 5.5.1. Terminal Error handler
       . 5.6. Utilities
       - 5.7. AST
          . 5.7.1. Source Reference
          - 5.7.2. Abstract Syntax Tree
             . 5.7.2.1. Names
             . 5.7.2.2. Type sublanguage
             . 5.7.2.3. Literals
             . 5.7.2.4. Expressions
             . 5.7.2.5. Pattern
             . 5.7.2.6. Statements
       - 5.8. Types
          . 5.8.1. Generic partial ordering comparison result
          - 5.8.2. Version identification kit
             . 5.8.2.1. Pattern extractor
       . 5.9. Mappings
       . 5.10. Routines to extract source reference from terms
       . 5.11. Print module
       . 5.12. Compile time exceptions
       . 5.13. Charset
       . 5.14. Elide unused entries
       . 5.15. Unification
       - 5.16. Parser
          . 5.16.1. Header
          . 5.16.2. Tokens
          . 5.16.3. Compilation Unit
          . 5.16.4. Statement
          . 5.16.5. C parse hack
          . 5.16.6. Decl name
          - 5.16.7. Regular definitions
             . 5.16.7.1. Abstract Type
             . 5.16.7.2. Union Binding
             . 5.16.7.3. Struct Binding
             . 5.16.7.4. Abstract Constant Binding
             . 5.16.7.5. Binding Header Definition
             . 5.16.7.6. Inline C++ Code Definition
             . 5.16.7.7. Type Alias
             . 5.16.7.8. Export
             . 5.16.7.9. Open
             . 5.16.7.10. Macro Definition
             . 5.16.7.11. Function and Procedure Definition
             . 5.16.7.12. Object
             . 5.16.7.13. Assert
             . 5.16.7.14. Goto and Label
             . 5.16.7.15. Read Statement
             . 5.16.7.16. Module Definition
             . 5.16.7.17. Variable and Constant Declaration
             . 5.16.7.18. Function or Procedure Return
             . 5.16.7.19. Procedure Call
             . 5.16.7.20. Place Holder
             . 5.16.7.21. Conditional Statements
             . 5.16.7.22. Regular expression matching
             - 5.16.7.23. Pattern Matching
                . 5.16.7.23.1. Patterns
          . 5.16.8. Type match
          . 5.16.9. Grammar Expressions
          . 5.16.10. Executable Expressions
       . 5.17. Parser object
       . 5.18. Parser test harness
       . 5.19. String handling
       . 5.20. Internationalised Identifier support
       . 5.21. Keywords
       . 5.22. Lexer
       . 5.23. Pre token filters
       . 5.24. Pre token printer
       . 5.25. Tokeniser
       . 5.26. Lexer test harness
       . 5.27. Pattern matching utilities
       . 5.28. Constant folding
       - 5.29. Macro Expansion
          . 5.29.1. Notes
          . 5.29.2. Implementation
       . 5.30. C format string
       . 5.31. Cil to Felix
       . 5.32. Desugaring
       . 5.33. Build Symbol tables
       . 5.34. Meta typing and Beta reduction
       . 5.35. The type registry
       . 5.36. Generic support
       . 5.37. overload resolution
       . 5.38. Name Lookup
       . 5.39. Name Binding
       . 5.40. Bind executable statements
       . 5.41. Name Binding
       . 5.42. Downgrade Abstract types
       . 5.43. Typeclass checker
       . 5.44. Axiom Check
       . 5.45. label management
       . 5.46. Control Flow
       . 5.47. Optimisation stuff
       . 5.48. Elide unused entries
       . 5.49. Inline exes
       . 5.50. Reparenting
       . 5.51. Reductions
       . 5.52. Fold vars
       . 5.53. Inlining
       . 5.54. Monomorphisation
       . 5.55. Make stack calls
       . 5.56. Elide unused entries
       . 5.57. Thread frame pointer required detector
       . 5.58. Elide unused entries
       . 5.59. The back end
       . 5.60. Type generator
       . 5.61. Code fragment inliner
       . 5.62. DFA
       . 5.63. Lexer generator
       . 5.64. Expression unraveller
       . 5.65. Display calcs
       . 5.66. GC shape object generator
       . 5.67. C++ Code generator
       . 5.68. Why interface
       . 5.69. C++ Code generator
       . 5.70. Get options
       . 5.71. Stub mainline
    - 6. Stub mainline
       . 6.1. Tools
    - 7. Documentation generator
       . 7.1. Misc