Module: Finitio::Syntax

Defined in:
lib/finitio/syntax.rb,
lib/finitio/syntax/system.rb,
lib/finitio/syntax/ad_type.rb,
lib/finitio/syntax/heading.rb,
lib/finitio/syntax/support.rb,
lib/finitio/syntax/any_type.rb,
lib/finitio/syntax/contract.rb,
lib/finitio/syntax/seq_type.rb,
lib/finitio/syntax/set_type.rb,
lib/finitio/syntax/sub_type.rb,
lib/finitio/syntax/type_def.rb,
lib/finitio/syntax/type_ref.rb,
lib/finitio/syntax/attribute.rb,
lib/finitio/syntax/expression.rb,
lib/finitio/syntax/tuple_type.rb,
lib/finitio/syntax/union_type.rb,
lib/finitio/syntax/constraints.rb,
lib/finitio/syntax/definitions.rb,
lib/finitio/syntax/inline_pair.rb,
lib/finitio/syntax/lambda_expr.rb,
lib/finitio/syntax/builtin_type.rb,
lib/finitio/syntax/external_pair.rb,
lib/finitio/syntax/relation_type.rb,
lib/finitio/syntax/constraint_def.rb,
lib/finitio/syntax/named_constraint.rb,
lib/finitio/syntax/unnamed_constraint.rb

Defined Under Namespace

Modules: AdType, AnyType, Attribute, BuiltinType, ConstraintDef, Constraints, Contract, Definitions, Expression, ExternalPair, Heading, InlinePair, LambdaExpr, NamedConstraint, RelationType, SeqType, SetType, SubType, Support, System, TupleType, TypeDef, TypeRef, UnionType, UnnamedConstraint

Class Method Summary collapse

Class Method Details

.ast(source) ⇒ Object



37
38
39
# File 'lib/finitio/syntax.rb', line 37

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

.compile(source, system = Finitio::System.new) ⇒ Object



41
42
43
# File 'lib/finitio/syntax.rb', line 41

def self.compile(source, system = Finitio::System.new)
  parse(source, root: "system").compile(system)
end

.compile_type(source) ⇒ Object



45
46
47
# File 'lib/finitio/syntax.rb', line 45

def self.compile_type(source)
  parse(source, root: "type").compile(TypeFactory.new)
end

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



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

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