Module: Finitio::Syntax

Defined in:
lib/finitio/syntax.rb,
lib/finitio/syntax/expr.rb,
lib/finitio/syntax/node.rb,
lib/finitio/syntax/import.rb,
lib/finitio/syntax/system.rb,
lib/finitio/syntax/imports.rb,
lib/finitio/syntax/literal.rb,
lib/finitio/syntax/definitions.rb,
lib/finitio/syntax/expr/fn_call.rb,
lib/finitio/syntax/expr/literal.rb,
lib/finitio/syntax/expr/oo_call.rb,
lib/finitio/syntax/literal/real.rb,
lib/finitio/syntax/type/ad_type.rb,
lib/finitio/syntax/type/heading.rb,
lib/finitio/syntax/expr/arith_op.rb,
lib/finitio/syntax/type/any_type.rb,
lib/finitio/syntax/type/contract.rb,
lib/finitio/syntax/type/metadata.rb,
lib/finitio/syntax/type/seq_type.rb,
lib/finitio/syntax/type/set_type.rb,
lib/finitio/syntax/type/sub_type.rb,
lib/finitio/syntax/type/type_def.rb,
lib/finitio/syntax/type/type_ref.rb,
lib/finitio/syntax/expr/logic_not.rb,
lib/finitio/syntax/literal/string.rb,
lib/finitio/syntax/type/attribute.rb,
lib/finitio/syntax/type/main_type.rb,
lib/finitio/syntax/expr/comparison.rb,
lib/finitio/syntax/expr/identifier.rb,
lib/finitio/syntax/literal/boolean.rb,
lib/finitio/syntax/literal/integer.rb,
lib/finitio/syntax/type/expression.rb,
lib/finitio/syntax/type/tuple_type.rb,
lib/finitio/syntax/type/union_type.rb,
lib/finitio/syntax/type/constraints.rb,
lib/finitio/syntax/type/inline_pair.rb,
lib/finitio/syntax/type/lambda_expr.rb,
lib/finitio/syntax/type/struct_type.rb,
lib/finitio/syntax/expr/logic_dyadic.rb,
lib/finitio/syntax/type/builtin_type.rb,
lib/finitio/syntax/expr/parenthesized.rb,
lib/finitio/syntax/type/external_pair.rb,
lib/finitio/syntax/type/heading_extra.rb,
lib/finitio/syntax/type/metadata_attr.rb,
lib/finitio/syntax/type/relation_type.rb,
lib/finitio/syntax/expr/unary_minus_op.rb,
lib/finitio/syntax/type/constraint_def.rb,
lib/finitio/syntax/type/high_order_vars.rb,
lib/finitio/syntax/type/named_constraint.rb,
lib/finitio/syntax/type/unnamed_constraint.rb,
lib/finitio/syntax/type/high_order_type_instantiation.rb

Defined Under Namespace

Modules: AdType, AnyType, Attribute, BuiltinType, ConstraintDef, Constraints, Contract, Definitions, Expr, Expression, ExternalPair, Heading, HeadingExtra, HighOrderTypeInstantiation, HighOrderVars, Import, Imports, InlinePair, LambdaExpr, Literal, MainType, Metadata, MetadataAttr, NamedConstraint, Node, RelationType, SeqType, SetType, StructType, SubType, System, TupleType, TypeDef, TypeRef, UnionType, UnnamedConstraint

Class Method Summary collapse

Class Method Details

.ast(source) ⇒ Object



23
24
25
# File 'lib/finitio/syntax.rb', line 23

def self.ast(source)
  parse(source, root: "system").to_ast
end

.compile(source, cpl = nil) ⇒ Object



27
28
29
30
31
# File 'lib/finitio/syntax.rb', line 27

def self.compile(source, cpl = nil)
  cpl = Compilation.coerce(cpl, source)
  parse(source, root: "system").compile(cpl)
  cpl.resolve_proxies
end

.compile_type(source, cpl = nil) ⇒ Object



33
34
35
36
# File 'lib/finitio/syntax.rb', line 33

def self.compile_type(source, cpl = nil)
  cpl = Compilation.coerce(cpl, source)
  parse(source, root: "type").compile(cpl)
end

.parse(source, *args, &bl) ⇒ Object



18
19
20
21
# File 'lib/finitio/syntax.rb', line 18

def self.parse(source, *args, &bl)
  source = File.read(source) if source.respond_to?(:to_path)
  Parser.parse(source, *args, &bl)
end