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. C/C++ typings
       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. Regular definitions
             5.16.5.1. Abstract Type
             5.16.5.2. Union Binding
             5.16.5.3. Struct Binding
             5.16.5.4. Abstract Constant Binding
             5.16.5.5. Binding Header Definition
             5.16.5.6. Inline C++ Code Definition
             5.16.5.7. Type Alias
             5.16.5.8. Export
             5.16.5.9. Open
             5.16.5.10. Macro Definition
             5.16.5.11. Function and Procedure Definition
             5.16.5.12. Object
             5.16.5.13. Assert
             5.16.5.14. Goto and Label
             5.16.5.15. Read Statement
             5.16.5.16. Module Definition
             5.16.5.17. Variable and Constant Declaration
             5.16.5.18. Function or Procedure Return
             5.16.5.19. Procedure Call
             5.16.5.20. Place Holder
             5.16.5.21. Conditional Statements
             5.16.5.22. Regular expression matching
             5.16.5.23. Pattern Matching
                5.16.5.23.1. Patterns
          5.16.6. Type match
          5.16.7. Grammar Expressions
          5.16.8. 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. Desugaring
       5.32. Build Symbol tables
       5.33. Meta typing and Beta reduction
       5.34. The type registry
       5.35. Generic support
       5.36. overload resolution
       5.37. Name Lookup
       5.38. Name Binding
       5.39. Bind executable statements
       5.40. Name Binding
       5.41. Axiom Check
       5.42. label management
       5.43. Control Flow
       5.44. Optimisation stuff
       5.45. Elide unused entries
       5.46. Inlining
       5.47. Make stack calls
       5.48. Elide unused entries
       5.49. Thread frame pointer required detector
       5.50. Elide unused entries
       5.51. The back end
       5.52. Type generator
       5.53. Code fragment inliner
       5.54. DFA
       5.55. Lexer generator
       5.56. Expression unraveller
       5.57. Display calcs
       5.58. GC shape object generator
       5.59. C++ Code generator
       5.60. Get options
       5.61. Stub mainline
    6. Stub mainline
       6.1. Tools
    7. Documentation generator
       7.1. Misc