Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 80 additions & 46 deletions src/v4/extdeps/languages/java.dag
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,11 @@ import v4.compiler.tokenize {
SequencePattern,
TokenRule
}
import v4.std.collection { List, Set, list_append, list_snoc_item }
import v4.std.collection { List, Map, Set, list_append, list_snoc_item }
import v4.std.model_core {
EffectSemanticsDecl,
ModelCore,
PartialitySemanticsDecl,
PrimitiveFactAxisBinding,
PrimitiveFactBundle,
primitive_fact_axis_encoding,
primitive_fact_axis_overflow_disposition,
Expand Down Expand Up @@ -995,51 +994,90 @@ fn java_language_model_canonical_symbols() -> Set<Symbol> {
}
}

fn java_primitive_axis_binding(axis: Symbol, fact: Node) -> PrimitiveFactAxisBinding {
PrimitiveFactAxisBinding { axis: axis, fact: fact }
fn java_primitive_fact_map_4(
axis0: Symbol,
fact0: Node,
axis1: Symbol,
fact1: Node,
axis2: Symbol,
fact2: Node,
axis3: Symbol,
fact3: Node
) -> Map<Symbol, Node> {
map_insert(
map_insert(
map_insert(
map_insert(empty_map(), axis0, fact0),
axis1,
fact1
),
axis2,
fact2
),
axis3,
fact3
)
}

fn java_primitive_fact_map_3(
axis0: Symbol,
fact0: Node,
axis1: Symbol,
fact1: Node,
axis2: Symbol,
fact2: Node
) -> Map<Symbol, Node> {
map_insert(
map_insert(
map_insert(empty_map(), axis0, fact0),
axis1,
fact1
),
axis2,
fact2
)
}

fn java_primitive_fact_map_2(
axis0: Symbol,
fact0: Node,
axis1: Symbol,
fact1: Node
) -> Map<Symbol, Node> {
map_insert(
map_insert(empty_map(), axis0, fact0),
axis1,
fact1
)
}

fn java_primitive_bundle_from_integer_facts(facts: JavaIntegerPrimitiveFacts) -> PrimitiveFactBundle {
PrimitiveFactBundle {
substrate_carrier: java_integer_facts_node(facts: facts),
spec_facts: [
java_primitive_axis_binding(
axis: primitive_fact_axis_surface_spelling,
fact: java_inhabitant_atom(id: facts.surface_spelling)
),
java_primitive_axis_binding(
axis: primitive_fact_axis_width,
fact: java_int_width_node(width: facts.width)
),
java_primitive_axis_binding(
axis: primitive_fact_axis_signedness,
fact: java_int_kind_node(kind: facts.signedness)
),
java_primitive_axis_binding(
axis: primitive_fact_axis_encoding,
fact: java_integer_encoding_fact(facts: facts)
)
]
spec_facts: java_primitive_fact_map_4(
axis0: primitive_fact_axis_surface_spelling,
fact0: java_inhabitant_atom(id: facts.surface_spelling),
axis1: primitive_fact_axis_width,
fact1: java_int_width_node(width: facts.width),
axis2: primitive_fact_axis_signedness,
fact2: java_int_kind_node(kind: facts.signedness),
axis3: primitive_fact_axis_encoding,
fact3: java_integer_encoding_fact(facts: facts)
)
}
}

fn java_primitive_bundle_from_float_facts(facts: JavaFloatPrimitiveFacts) -> PrimitiveFactBundle {
PrimitiveFactBundle {
substrate_carrier: java_float_facts_node(facts: facts),
spec_facts: [
java_primitive_axis_binding(
axis: primitive_fact_axis_surface_spelling,
fact: java_inhabitant_atom(id: facts.surface_spelling)
),
java_primitive_axis_binding(
axis: primitive_fact_axis_width,
fact: java_float_width_node(width: facts.width)
),
java_primitive_axis_binding(
axis: primitive_fact_axis_encoding,
fact: java_inhabitant_atom(id: facts.ieee754_binary)
)
]
spec_facts: java_primitive_fact_map_3(
axis0: primitive_fact_axis_surface_spelling,
fact0: java_inhabitant_atom(id: facts.surface_spelling),
axis1: primitive_fact_axis_width,
fact1: java_float_width_node(width: facts.width),
axis2: primitive_fact_axis_encoding,
fact2: java_inhabitant_atom(id: facts.ieee754_binary)
)
}
}

Expand All @@ -1048,16 +1086,12 @@ fn java_primitive_bundle_from_noninteger_facts(
) -> PrimitiveFactBundle {
PrimitiveFactBundle {
substrate_carrier: java_noninteger_facts_node(facts: facts),
spec_facts: [
java_primitive_axis_binding(
axis: primitive_fact_axis_surface_spelling,
fact: java_inhabitant_atom(id: facts.surface_spelling)
),
java_primitive_axis_binding(
axis: primitive_fact_axis_encoding,
fact: java_inhabitant_atom(id: facts.representation)
)
]
spec_facts: java_primitive_fact_map_2(
axis0: primitive_fact_axis_surface_spelling,
fact0: java_inhabitant_atom(id: facts.surface_spelling),
axis1: primitive_fact_axis_encoding,
fact1: java_inhabitant_atom(id: facts.representation)
)
}
}

Expand Down
186 changes: 120 additions & 66 deletions src/v4/extdeps/languages/kotlin.dag
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,11 @@ module v4.extdeps.languages.kotlin

import v4.compiler.parse { Grammar, VoidGrammar }
import v4.compiler.tokenize { LexRules, VoidLexRules }
import v4.std.collection { List, Set, list_append, list_snoc_item }
import v4.std.collection { List, Map, Set, list_append, list_snoc_item }
import v4.std.model_core {
EffectSemanticsDecl,
ModelCore,
PartialitySemanticsDecl,
PrimitiveFactAxisBinding,
PrimitiveFactBundle,
primitive_fact_axis_overflow_disposition,
primitive_fact_axis_signedness,
Expand Down Expand Up @@ -416,8 +415,91 @@ fn kotlin_nonnumeric_facts_node(facts: KotlinNonNumericPrimitiveFacts) -> Node {
}
}

fn kotlin_primitive_axis_binding(axis: Symbol, fact: Node) -> PrimitiveFactAxisBinding {
PrimitiveFactAxisBinding { axis: axis, fact: fact }
fn kotlin_primitive_fact_map_6(
axis0: Symbol,
fact0: Node,
axis1: Symbol,
fact1: Node,
axis2: Symbol,
fact2: Node,
axis3: Symbol,
fact3: Node,
axis4: Symbol,
fact4: Node,
axis5: Symbol,
fact5: Node
) -> Map<Symbol, Node> {
map_insert(
map_insert(
map_insert(
map_insert(
map_insert(
map_insert(empty_map(), axis0, fact0),
axis1,
fact1
),
axis2,
fact2
),
axis3,
fact3
),
axis4,
fact4
),
axis5,
fact5
)
}

fn kotlin_primitive_fact_map_5(
axis0: Symbol,
fact0: Node,
axis1: Symbol,
fact1: Node,
axis2: Symbol,
fact2: Node,
axis3: Symbol,
fact3: Node,
axis4: Symbol,
fact4: Node
) -> Map<Symbol, Node> {
map_insert(
map_insert(
map_insert(
map_insert(
map_insert(empty_map(), axis0, fact0),
axis1,
fact1
),
axis2,
fact2
),
axis3,
fact3
),
axis4,
fact4
)
}

fn kotlin_primitive_fact_map_3(
axis0: Symbol,
fact0: Node,
axis1: Symbol,
fact1: Node,
axis2: Symbol,
fact2: Node
) -> Map<Symbol, Node> {
map_insert(
map_insert(
map_insert(empty_map(), axis0, fact0),
axis1,
fact1
),
axis2,
fact2
)
}

fn kotlin_nonnumeric_value_fact_field(value_fact: KotlinNonNumericValueFact) -> Symbol {
Expand Down Expand Up @@ -480,60 +562,38 @@ fn kotlin_primitive_bundle_from_integer_facts(
) -> PrimitiveFactBundle {
PrimitiveFactBundle {
substrate_carrier: kotlin_integer_facts_node(facts: facts),
spec_facts: [
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_surface_spelling,
fact: kotlin_atom(id: facts.surface_spelling)
),
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_width,
fact: kotlin_int_width_node(width: facts.width)
),
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_signedness,
fact: kotlin_atom(id: kotlin_tag_signed)
),
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_overflow_disposition,
fact: kotlin_overflow_node(overflow: facts.overflow)
),
kotlin_primitive_axis_binding(
axis: kotlin_primitive_fact_axis_runtime_representation,
fact: kotlin_runtime_representation_node(representation: facts.representation)
),
kotlin_primitive_axis_binding(
axis: kotlin_primitive_fact_axis_scalar_classifier,
fact: kotlin_scalar_node(scalar: IntScalar { width: facts.width })
)
]
spec_facts: kotlin_primitive_fact_map_6(
axis0: primitive_fact_axis_surface_spelling,
fact0: kotlin_atom(id: facts.surface_spelling),
axis1: primitive_fact_axis_width,
fact1: kotlin_int_width_node(width: facts.width),
axis2: primitive_fact_axis_signedness,
fact2: kotlin_atom(id: kotlin_tag_signed),
axis3: primitive_fact_axis_overflow_disposition,
fact3: kotlin_overflow_node(overflow: facts.overflow),
axis4: kotlin_primitive_fact_axis_runtime_representation,
fact4: kotlin_runtime_representation_node(representation: facts.representation),
axis5: kotlin_primitive_fact_axis_scalar_classifier,
fact5: kotlin_scalar_node(scalar: IntScalar { width: facts.width })
)
}
}

fn kotlin_primitive_bundle_from_float_facts(facts: KotlinFloatPrimitiveFacts) -> PrimitiveFactBundle {
PrimitiveFactBundle {
substrate_carrier: kotlin_float_facts_node(facts: facts),
spec_facts: [
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_surface_spelling,
fact: kotlin_atom(id: facts.surface_spelling)
),
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_width,
fact: kotlin_float_width_node(width: facts.width)
),
kotlin_primitive_axis_binding(
axis: kotlin_primitive_fact_axis_value_format,
fact: kotlin_float_value_format_node(value_format: facts.value_format)
),
kotlin_primitive_axis_binding(
axis: kotlin_primitive_fact_axis_runtime_representation,
fact: kotlin_runtime_representation_node(representation: facts.representation)
),
kotlin_primitive_axis_binding(
axis: kotlin_primitive_fact_axis_scalar_classifier,
fact: kotlin_scalar_node(scalar: FloatScalar { width: facts.width })
)
]
spec_facts: kotlin_primitive_fact_map_5(
axis0: primitive_fact_axis_surface_spelling,
fact0: kotlin_atom(id: facts.surface_spelling),
axis1: primitive_fact_axis_width,
fact1: kotlin_float_width_node(width: facts.width),
axis2: kotlin_primitive_fact_axis_value_format,
fact2: kotlin_float_value_format_node(value_format: facts.value_format),
axis3: kotlin_primitive_fact_axis_runtime_representation,
fact3: kotlin_runtime_representation_node(representation: facts.representation),
axis4: kotlin_primitive_fact_axis_scalar_classifier,
fact4: kotlin_scalar_node(scalar: FloatScalar { width: facts.width })
)
}
}

Expand All @@ -542,20 +602,14 @@ fn kotlin_primitive_bundle_from_nonnumeric_facts(
) -> PrimitiveFactBundle {
PrimitiveFactBundle {
substrate_carrier: kotlin_nonnumeric_facts_node(facts: facts),
spec_facts: [
kotlin_primitive_axis_binding(
axis: primitive_fact_axis_surface_spelling,
fact: kotlin_atom(id: facts.surface_spelling)
),
kotlin_primitive_axis_binding(
axis: kotlin_nonnumeric_value_fact_axis(value_fact: facts.value_fact),
fact: kotlin_nonnumeric_value_fact_node(value_fact: facts.value_fact)
),
kotlin_primitive_axis_binding(
axis: kotlin_primitive_fact_axis_scalar_classifier,
fact: kotlin_scalar_node(scalar: facts.scalar)
)
]
spec_facts: kotlin_primitive_fact_map_3(
axis0: primitive_fact_axis_surface_spelling,
fact0: kotlin_atom(id: facts.surface_spelling),
axis1: kotlin_nonnumeric_value_fact_axis(value_fact: facts.value_fact),
fact1: kotlin_nonnumeric_value_fact_node(value_fact: facts.value_fact),
axis2: kotlin_primitive_fact_axis_scalar_classifier,
fact2: kotlin_scalar_node(scalar: facts.scalar)
)
}
}

Expand Down
Loading
Loading