From f1b4e4d64f0a0dc8e3b9da77120a324883698910 Mon Sep 17 00:00:00 2001 From: Hadrien Renaud Date: Fri, 22 Sep 2023 13:26:49 +0100 Subject: [PATCH] Pages from f2589ab89a6ade02159251bfae9623d40c5d5dd3 --- herdtools7/ASLRefREADME.html | 4 ++-- herdtools7/ASLTypingReference.html | 2 +- herdtools7/Asllib/Instrumentation/TypingRule/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/herdtools7/ASLRefREADME.html b/herdtools7/ASLRefREADME.html index 7e6bdc3c8..9fe2fe771 100644 --- a/herdtools7/ASLRefREADME.html +++ b/herdtools7/ASLRefREADME.html @@ -1,4 +1,4 @@ -ASLRefREADME (herdtools7.ASLRefREADME)

Getting started with ASLRef

Disclaimer

This material covers both ASLv0 (viz, the existing ASL pseudocode language which appears in the Arm Architecture Reference Manual) and ASLv1, a new, experimental, and as yet unreleased version of ASL.

This material is work in progress, more precisely at pre-Alpha quality as per Arm’s quality standards. In particular, this means that it would be premature to base any production tool development on this material.

However, any feedback, question, query and feature request would be most welcome; those can be sent to Arm’s Architecture Formal Team Lead Jade Alglave <jade.alglave@arm.com> or by raising issues or PRs to the herdtools7 github repository.

Installation

Pre-requisites

The following steps have been tested on Unix.

  1. Install ocaml and opam (ocaml package manager), see the manual. For example on MacOS:

    $ brew install opam
  2. Install dependencies:

    $ opam install dune menhir zarith

Building

  1. Clone herdtools7:

    $ git clone https://github.com/herd/herdtools7.git
  2. Build and install into a location $PREFIX:

    $ make build install PREFIX=$PREFIX

It's done!

Checking

If $PREFIX is in your $PATH, the following command should return a similar output:

$ aslref --version
+ASLRefREADME (herdtools7.ASLRefREADME)

Getting started with ASLRef

Disclaimer

This material covers both ASLv0 (viz, the existing ASL pseudocode language which appears in the Arm Architecture Reference Manual) and ASLv1, a new, experimental, and as yet unreleased version of ASL.

This material is work in progress, more precisely at pre-Alpha quality as per Arm’s quality standards. In particular, this means that it would be premature to base any production tool development on this material.

However, any feedback, question, query and feature request would be most welcome; those can be sent to Arm’s Architecture Formal Team Lead Jade Alglave <jade.alglave@arm.com> or by raising issues or PRs to the herdtools7 github repository.

Installation

Pre-requisites

The following steps have been tested on Unix.

  1. Install ocaml and opam (ocaml package manager), see the manual. For example on MacOS:

    $ brew install opam
  2. Install dependencies:

    $ opam install dune menhir zarith

Building

  1. Clone herdtools7:

    $ git clone https://github.com/herd/herdtools7.git
  2. Build and install into a location $PREFIX:

    $ make build install PREFIX=$PREFIX

It's done!

Checking

If $PREFIX is in your $PATH, the following command should return a similar output:

$ aslref --version
 aslref version 7.56+03 rev 7aa9d1f3cee2598ec64f14372f210e008ac5510f

Please note that building herdtools7 depends on the installation path $PREFIX. If you want to move your installation from $OLD_PREFIX to $NEW_PREFIX, please use:

make uninstall PREFIX=$OLD_PREFIX
-make build install PREFIX=$NEW_PREFIX

Running

Basics

If my-test.asl contains a valid ASL program returning 0, the tool aslref does not print anything and exit with code 0.

$ aslref my-test.asl

Version and type-checking flags

For a complete reference of arguments, see aslref --help.

ASL Version

To use the ASLv0 parser, use the -0 flag.

The default parser is the ASLv1, but you can still specify it with -1.

Type-checking

There are currently three possible type-checking settings, listed here from the strongest to the weakest:

  1. --type-check-strict fails on the first error encountered while type-checking the program. This is the default setting for ASLv1.
  2. --type-check-warn logs every error on the standard error output, but does not fail on any of them. The program might not be able to run through the interpreter if the type-checking phase failed.
  3. --no-type-check only performs minimal type-inference. Tries to fail as little as possible. This is the default for ASLv0.

Examples

You can find examples of ASLv1 programs that aslref supports in herdtools7/asllib/tests/asl/required.

\ No newline at end of file +make build install PREFIX=$NEW_PREFIX

Running

Basics

If my-test.asl contains a valid ASL program returning 0, the tool aslref does not print anything and exit with code 0.

$ aslref my-test.asl

Version and type-checking flags

For a complete reference of arguments, see aslref --help.

ASL Version

To use the ASLv0 parser, use the -0 flag.

The default parser is the ASLv1, but you can still specify it with -1.

Type-checking

There are currently three possible type-checking settings, listed here from the strongest to the weakest:

  1. --type-check-strict fails on the first error encountered while type-checking the program. This is the default setting for ASLv1.
  2. --type-check-warn logs every error on the standard error output, but does not fail on any of them. The program might not be able to run through the interpreter if the type-checking phase failed.
  3. --no-type-check only performs minimal type-inference. Tries to fail as little as possible. This is the default for ASLv0.

Examples

You can find examples of ASLv1 programs that aslref supports in herdtools7/asllib/tests/asl/required.

Building HTML pages locally from .mld files

In the directory herdtools7/:

  1. Run:

    $ dune build @doc
  1. Open _build/default/_doc/_html/herdtools7/aslref.html
\ No newline at end of file diff --git a/herdtools7/ASLTypingReference.html b/herdtools7/ASLTypingReference.html index e3514a05c..612c26b8b 100644 --- a/herdtools7/ASLTypingReference.html +++ b/herdtools7/ASLTypingReference.html @@ -1,2 +1,2 @@ -ASLTypingReference (herdtools7.ASLTypingReference)

ASL Typing Reference

Disclaimer

This material covers both ASLv0 (viz, the existing ASL pseudocode language which appears in the Arm Architecture Reference Manual) and ASLv1, a new, experimental, and as yet unreleased version of ASL.

This material is work in progress, more precisely at pre-Alpha quality as per Arm’s quality standards. In particular, this means that it would be premature to base any production tool development on this material.

However, any feedback, question, query and feature request would be most welcome; those can be sent to Arm’s Architecture Formal Team Lead Jade Alglave <jade.alglave@arm.com> or by raising issues or PRs to the herdtools7 github repository.

Typing

Typing a program is typing its main function. Constructively, typing a program requires following its Abstract Syntax Tree and typing each of its components.

Formally, the types of a program are given by applying a set of annotate_<object> functions. Each annotate_<object> function describes how to annotate a specific object, as follows.

Checking Compatibility of operators

Typing of Expressions

annotate_expr specifies how to annotate an expression e in an environment env. Formally, the result of annotating the expression e in env is t,new_e and one of the following applies:

TypingRule.Lit

Rule

All of the following applies:

Example

TypingRule.TypedExpr

Rule

All of the following applies:

Example

TypingRule.ELocalVarConstant

Rule

All of the following applies:

Example

TypingRule.ELocalVar

Rule

All of the following applies:

Example

TypingRule.EGlobalVarConstantVal

Rule

All of the following applies:

Example

TypingRule.EGlobalVar

Rule

All of the following applies:

Example

TypingRule.EUndefIdent

Rule

All of the following applies:

Example

TypingRule.Binop

Rule

All of the following applies:

Example

TypingRule.Unop

Rule

All of the following applies:

Example

TypingRule.ECond

Rule

All of the following applies:

Example

TypingRule.ETuple

Rule

All of the following applies:

Example

TypingRule.EConcatEmpty

Rule

All of the following applies:

Example

TypingRule.EConcat

Rule

All of the following applies:

Example

TypingRule.ERecordNotARecord

Rule

All of the following applies:

Example

TypingRule.ERecordMissingField

Rule

All of the following applies:

Example

TypingRule.ERecord

Rule

All of the following applies:

Example

TypingRule.ECall

Rule

All of the following applies:

Example

TypingRule.EUnknown

Rule

All of the following applies:

Example

TypingRule.ESlice

Rule

All of the following applies:

Example

TypingRule.EGetArray

Rule

All of the following applies:

Example

TypingRule.EGetRecordField

Rule

All of the following applies:

Example

TypingRule.EGetBadBitField

Rule

All of the following applies:

Example

TypingRule.EGetBitField

Rule

All of the following applies:

Example

TypingRule.EGetBitFieldNested

Rule

All of the following applies:

Example

TypingRule.EGetBitFieldTyped

Rule

All of the following applies:

Example

TypingRule.EGetBitFields

Rule

<description>

Example

<minimal example>

TypingRule.EPattern

Rule

All of the following applies:

Example

Typing of Left-Hand-Side Expressions

annotate_lexpr version env le t_e is new_le and one of the following applies:

TypingRule.LEIgnore

Rule

All of the following applies:

Example

TypingRule.LELocalVar

Rule

All of the following applies:

Example

TypingRule.LEGlobalVar

Rule
Example

TypingRule.LETuple

Rule

All of the following applies:

Example

TypingRule.LESlice

Rule
Example

TypingRule.LESetArray

Rule
Example

TypingRule.LESetField

Rule
Example

TypingRule.LESetFields

Rule

<description>

Example

<minimal example>

Typing of Local Declarations

annotate_local_decl_item loc env ty ldk ldi is new_env, new_ldi and one of the following applies:

TypingRule.LDIgnoreNone

Rule

All of the following applies:

Example

TypingRule.LDIgnoreSome

Rule

All of the following applies:

Example

TypingRule.LDVar

Rule

All of the following applies:

Example

TypingRule.LDUninitialisedTypedTuple

Rule

All of the following applies:

Example

TypingRule.LDTuple

Rule
Example

TypingRule.LDTypedTuple

Rule
Example

Typing of Statements

annotate_stmt env s is <description> and one of the following applies:

TypingRule.SPass

Rule
Example

TypingRule.SAssign

Rule
Example

TypingRule.SReturnNone

Rule
Example

TypingRule.SReturnOne

Rule
Example

TypingRule.SReturnSome

Rule
Example

TypingRule.SThen

Rule
Example

TypingRule.SCall

Rule
Example

TypingRule.SCond

Rule
Example

TypingRule.SCase

Rule

<description>

Example

TypingRule.SAssert

Rule
Example

TypingRule.SWhile

Rule
Example

TypingRule.SRepeat

Rule
Example

TypingRule.SFor

Rule
Example

TypingRule.SThrowNone

Rule
Example

TypingRule.SThrowSome

Rule
Example

<minimal example>

TypingRule.STry

Rule
Example

TypingRule.SDeclSome

Rule
Example

TypingRule.SDeclNone

Rule
Example

TypingRule.SDebug

Rule
Example

<minimal example>

Typing of Slices

annotate_slices env slices is <description> Formally, one of the following applies:

TypingRule.SliceLength

Rule
Example

TypingRule.SliceSingle

Rule
Example

TypingRule.SliceRange

Rule
Example

TypingRule.SliceStar

Rule
Example

Typing of Patterns

annotate_pattern env pos v p is <description>. Formally, one of the following applies:

TypingRule.PAll

Rule
Example

TypingRule.PAny

Rule
Example

TypingRule.PNot

Rule
Example

TypingRule.PSingle

Rule
Example

TypingRule.PGeq

Rule
Example

TypingRule.PLeq

Rule
Example

TypingRule.PRange

Rule
Example

TypingRule.PMask

Rule
Example

TypingRule.PTuple

Rule
Example

Typing of Blocks

TypingRule.Block

Rule

annotate_block env stm is <description>.

Example

<minimal example>

Typing of Catchers

annotate_catchers env catchers otherwise_opt s_m

TypingRule.Catcher

Rule

<description>

Example

<minimal example>

Typing of Function Calls

annotate_call pos name env args named_args annotates the call to function name with arguments args and parameters named_args.

TypingRule.FCall

Rule

<description>

Example

At the begining of a program, the interpreter annotates the function "main".

Typing of Functions

annotate_func genv name pos actual_args params annotates the function named name <description> and one of the following applies:

TypingRule.Func

Rule
Example
\ No newline at end of file +ASLTypingReference (herdtools7.ASLTypingReference)

ASL Typing Reference

Disclaimer

This material covers both ASLv0 (viz, the existing ASL pseudocode language which appears in the Arm Architecture Reference Manual) and ASLv1, a new, experimental, and as yet unreleased version of ASL.

This material is work in progress, more precisely at pre-Alpha quality as per Arm’s quality standards. In particular, this means that it would be premature to base any production tool development on this material.

However, any feedback, question, query and feature request would be most welcome; those can be sent to Arm’s Architecture Formal Team Lead Jade Alglave <jade.alglave@arm.com> or by raising issues or PRs to the herdtools7 github repository.

Typing

Typing a program is typing its main function. Constructively, typing a program requires following its Abstract Syntax Tree and typing each of its components.

Formally, the types of a program are given by applying a set of annotate_<object> functions. Each annotate_<object> function describes how to annotate a specific object, as follows.

Checking Compatibility of operators

Typing of Expressions

annotate_expr specifies how to annotate an expression e in an environment env. Formally, the result of annotating the expression e in env is t,new_e and one of the following applies:

TypingRule.Lit

Rule

All of the following applies:

Example

TypingRule.TypedExpr

Rule

All of the following applies:

Example

TypingRule.ELocalVarConstant

Rule

All of the following applies:

Example

TypingRule.ELocalVar

Rule

All of the following applies:

Example

TypingRule.EGlobalVarConstantVal

Rule

All of the following applies:

Example

TypingRule.EGlobalVar

Rule

All of the following applies:

Example

TypingRule.EUndefIdent

Rule

All of the following applies:

Example

TypingRule.Binop

Rule

All of the following applies:

Example

TypingRule.Unop

Rule

All of the following applies:

Example

TypingRule.ECond

Rule

All of the following applies:

Example

TypingRule.ETuple

Rule

All of the following applies:

Example

TypingRule.EConcatEmpty

Rule

All of the following applies:

Example

TypingRule.EConcat

Rule

All of the following applies:

Example

TypingRule.ERecordNotARecord

Rule

All of the following applies:

Example

TypingRule.ERecordMissingField

Rule

All of the following applies:

Example

TypingRule.ERecord

Rule

All of the following applies:

Example

TypingRule.ECall

Rule

All of the following applies:

Example

TypingRule.EUnknown

Rule

All of the following applies:

Example

TypingRule.ESlice

Rule

All of the following applies:

Example

TypingRule.EGetArray

Rule

All of the following applies:

Example

TypingRule.EGetRecordField

Rule

All of the following applies:

Example

TypingRule.EGetBadRecordField

Rule

All of the following applies:

Example

TypingRule.EGetBadBitField

Rule

All of the following applies:

Example

TypingRule.EGetBadField

Rule

All of the following applies:

Example

TypingRule.EGetBitField

Rule

All of the following applies:

Example

TypingRule.EGetBitFieldNested

Rule

All of the following applies:

Example

TypingRule.EGetBitFieldTyped

Rule

All of the following applies:

Example

TypingRule.EGetBitFields

Rule

<description>

Example

<minimal example>

TypingRule.EPattern

Rule

All of the following applies:

Example

Typing of Left-Hand-Side Expressions

annotate_lexpr version env le t_e is new_le and one of the following applies:

TypingRule.LEIgnore

Rule

All of the following applies:

Example

TypingRule.LELocalVar

Rule

All of the following applies:

Example

TypingRule.LEGlobalVar

Rule
Example

TypingRule.LETuple

Rule

All of the following applies:

Example

TypingRule.LESlice

Rule

All of the following applies:

Example

TypingRule.LESetArray

Rule

All of the following applies:

Example

TypingRule.LESetBadRecordField

Rule

All of the following applies:

Example

TypingRule.LESetRecordField

Rule

All of the following applies:

Example

TypingRule.LESetBadBitField

Rule

All of the following applies:

Example

TypingRule.LESetBitField

Rule

All of the following applies:

Example

TypingRule.LESetBitFieldNested

Rule

All of the following applies:

Example

TypingRule.LESetBitFieldTyped

Rule

All of the following applies:

Example

TypingRule.LESetBadField

Rule

All of the following applies:

Example

TypingRule.LESetFields

Rule
Example

TypingRule.LEConcat

Rule
Example

Typing of Local Declarations

annotate_local_decl_item loc env ty ldk ldi is new_env, new_ldi and one of the following applies:

TypingRule.LDIgnoreNone

Rule

All of the following applies:

Example

TypingRule.LDIgnoreSome

Rule

All of the following applies:

Example

TypingRule.LDVar

Rule

All of the following applies:

Example

TypingRule.LDUninitialisedTypedTuple

Rule

All of the following applies:

Example

TypingRule.LDTuple

Rule
Example

TypingRule.LDTypedTuple

Rule
Example

Typing of Statements

annotate_stmt env s is <description> and one of the following applies:

TypingRule.SPass

Rule
Example

TypingRule.SAssign

Rule
Example

TypingRule.SReturnNone

Rule
Example

TypingRule.SReturnOne

Rule
Example

TypingRule.SReturnSome

Rule
Example

TypingRule.SThen

Rule
Example

TypingRule.SCall

Rule
Example

TypingRule.SCond

Rule
Example

TypingRule.SCase

Rule

<description>

Example

TypingRule.SAssert

Rule
Example

TypingRule.SWhile

Rule
Example

TypingRule.SRepeat

Rule
Example

TypingRule.SFor

Rule
Example

TypingRule.SThrowNone

Rule
Example

TypingRule.SThrowSome

Rule
Example

<minimal example>

TypingRule.STry

Rule
Example

TypingRule.SDeclSome

Rule
Example

TypingRule.SDeclNone

Rule
Example

TypingRule.SDebug

Rule
Example

<minimal example>

Typing of Slices

annotate_slices env slices is <description> Formally, one of the following applies:

TypingRule.SliceLength

Rule
Example

TypingRule.SliceSingle

Rule
Example

TypingRule.SliceRange

Rule
Example

TypingRule.SliceStar

Rule
Example

Typing of Patterns

annotate_pattern env pos v p is <description>. Formally, one of the following applies:

TypingRule.PAll

Rule
Example

TypingRule.PAny

Rule
Example

TypingRule.PNot

Rule
Example

TypingRule.PSingle

Rule
Example

TypingRule.PGeq

Rule
Example

TypingRule.PLeq

Rule
Example

TypingRule.PRange

Rule
Example

TypingRule.PMask

Rule
Example

TypingRule.PTuple

Rule
Example

Typing of Blocks

TypingRule.Block

Rule

annotate_block env stm is <description>.

Example

<minimal example>

Typing of Catchers

annotate_catchers env catchers otherwise_opt s_m

TypingRule.Catcher

Rule

<description>

Example

<minimal example>

Typing of Function Calls

annotate_call pos name env args named_args annotates the call to function name with arguments args and parameters named_args.

TypingRule.FCall

Rule

<description>

Example

At the begining of a program, the interpreter annotates the function "main".

Typing of Functions

annotate_func genv name pos actual_args params annotates the function named name <description> and one of the following applies:

TypingRule.Func

Rule
Example
\ No newline at end of file diff --git a/herdtools7/Asllib/Instrumentation/TypingRule/index.html b/herdtools7/Asllib/Instrumentation/TypingRule/index.html index e575558de..ef2ccc436 100644 --- a/herdtools7/Asllib/Instrumentation/TypingRule/index.html +++ b/herdtools7/Asllib/Instrumentation/TypingRule/index.html @@ -1,2 +1,2 @@ -TypingRule (herdtools7.Asllib.Instrumentation.TypingRule)

Module Instrumentation.TypingRule

type t =
  1. | Lit
  2. | TypedExpr
  3. | ELocalVarConstant
  4. | ELocalVar
  5. | EGlobalVarConstantVal
  6. | EGlobalVarConstantNoVal
  7. | EGlobalVar
  8. | EUndefIdent
  9. | Binop
  10. | Unop
  11. | ECondSimple
  12. | ECond
  13. | ESlice
  14. | ECall
  15. | EGetArray
  16. | ERecord
  17. | ERecordMissingField
  18. | ERecordNotARecord
  19. | EGetRecordField
  20. | EGetBitField
  21. | EGetBadBitField
  22. | EGetBitFieldNested
  23. | EGetBitFieldTyped
  24. | EGetBitFields
  25. | EConcatEmpty
  26. | EConcat
  27. | ETuple
  28. | EUnknown
  29. | EPattern
  30. | LEIgnore
  31. | LELocalVar
  32. | LEGlobalVar
  33. | LEUndefIdentV0
  34. | LEUndefIdentV1
  35. | LESlice
  36. | LESetArray
  37. | LESetField
  38. | LESetFields
  39. | LETuple
  40. | PAll
  41. | PAny
  42. | PGeq
  43. | PLeq
  44. | PNot
  45. | PRange
  46. | PSingle
  47. | PMask
  48. | PTuple
  49. | LDIgnoreNone
  50. | LDIgnoreSome
  51. | LDUninitialisedVar
  52. | LDUninitialisedTypedVar
  53. | LDVar
  54. | LDTypedVar
  55. | LDUninitialisedTuple
  56. | LDUninitialisedTypedTuple
  57. | LDTuple
  58. | LDTypedTuple
  59. | SPass
  60. | SAssignCall
  61. | SAssignTuple
  62. | SAssign
  63. | SReturnOne
  64. | SReturnSome
  65. | SReturnNone
  66. | SThen
  67. | SCall
  68. | SCond
  69. | SCase
  70. | SAssert
  71. | SWhile
  72. | SRepeat
  73. | SFor
  74. | SThrowNone
  75. | SThrowSomeTyped
  76. | SThrowSome
  77. | STry
  78. | SDeclSome
  79. | SDeclNone
  80. | SDebug
  81. | FUndefIdent
  82. | FPrimitive
  83. | FBadArity
  84. | FCall
  85. | Block
  86. | Loop
  87. | For
  88. | SliceLength
  89. | SliceSingle
  90. | SliceRange
  91. | SliceStar
  92. | Catcher
  93. | Func
val to_string : t -> string
val pp : Stdlib.Format.formatter -> t -> unit
val all : t list
val all_nb : int
val index : t -> int
val of_string : string -> t
\ No newline at end of file +TypingRule (herdtools7.Asllib.Instrumentation.TypingRule)

Module Instrumentation.TypingRule

type t =
  1. | Lit
  2. | TypedExpr
  3. | ELocalVarConstant
  4. | ELocalVar
  5. | EGlobalVarConstantVal
  6. | EGlobalVarConstantNoVal
  7. | EGlobalVar
  8. | EUndefIdent
  9. | Binop
  10. | Unop
  11. | ECondSimple
  12. | ECond
  13. | ESlice
  14. | ECall
  15. | EGetArray
  16. | ERecord
  17. | ERecordMissingField
  18. | ERecordNotARecord
  19. | EGetRecordField
  20. | EGetBitField
  21. | EGetBadField
  22. | EGetBadBitField
  23. | EGetBadRecordField
  24. | EGetBitFieldNested
  25. | EGetBitFieldTyped
  26. | EGetBitFields
  27. | EConcatEmpty
  28. | EConcat
  29. | ETuple
  30. | EUnknown
  31. | EPattern
  32. | LEIgnore
  33. | LELocalVar
  34. | LEGlobalVar
  35. | LEUndefIdentV0
  36. | LEUndefIdentV1
  37. | LETuple
  38. | LESlice
  39. | LESetArray
  40. | LESetBadRecordField
  41. | LESetRecordField
  42. | LESetBadBitField
  43. | LESetBitField
  44. | LESetBitFieldNested
  45. | LESetBitFieldTyped
  46. | LESetBadField
  47. | LESetFields
  48. | LEConcat
  49. | PAll
  50. | PAny
  51. | PGeq
  52. | PLeq
  53. | PNot
  54. | PRange
  55. | PSingle
  56. | PMask
  57. | PTuple
  58. | LDIgnoreNone
  59. | LDIgnoreSome
  60. | LDUninitialisedVar
  61. | LDUninitialisedTypedVar
  62. | LDVar
  63. | LDTypedVar
  64. | LDUninitialisedTuple
  65. | LDUninitialisedTypedTuple
  66. | LDTuple
  67. | LDTypedTuple
  68. | SPass
  69. | SAssignCall
  70. | SAssignTuple
  71. | SAssign
  72. | SReturnOne
  73. | SReturnSome
  74. | SReturnNone
  75. | SThen
  76. | SCall
  77. | SCond
  78. | SCase
  79. | SAssert
  80. | SWhile
  81. | SRepeat
  82. | SFor
  83. | SThrowNone
  84. | SThrowSomeTyped
  85. | SThrowSome
  86. | STry
  87. | SDeclSome
  88. | SDeclNone
  89. | SDebug
  90. | FUndefIdent
  91. | FPrimitive
  92. | FBadArity
  93. | FCall
  94. | Block
  95. | Loop
  96. | For
  97. | SliceLength
  98. | SliceSingle
  99. | SliceRange
  100. | SliceStar
  101. | Catcher
  102. | Func
val to_string : t -> string
val pp : Stdlib.Format.formatter -> t -> unit
val all : t list
val all_nb : int
val index : t -> int
val of_string : string -> t
\ No newline at end of file