Add editor definitions for all 31 Phase 1 AST concepts

Created editors for:
- 4 core nodes: Module, Function, Parameter, Variable
- 7 statement types: Block, Assignment, IfStatement, WhileLoop, ForLoop, Return, ExpressionStatement
- 13 expression types: BinaryOp, UnaryOp, FunctionCall, VariableRef, Literals, ListLiteral, Access
- 8 type system concepts: PrimitiveType, ListType, SetType, MapType, TupleType, ArrayType, OptionalType, CustomType

All editors reference correct concept IDs from fixed structure.mps.
Editors use horizontal and vertical layouts for proper rendering.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Bill
2026-02-03 20:35:02 -07:00
parent 1b7f2426bb
commit a06bb0eb2a

View File

@@ -123,5 +123,348 @@
<property role="3F0ifm" value="{content}" /> <property role="3F0ifm" value="{content}" />
</node> </node>
</node> </node>
<!-- Phase 1: Core AST Structure Editors (31 concepts) -->
<!-- Module Editor: module [name] with functions/variables -->
<node concept="24kQdi" id="Ed_10001">
<ref role="1XX52x" to="k8se:7kypvuIwECC" resolve="Module" />
<node concept="3EZMnI" id="Ed_10002" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10003" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10004" role="3EZMnx">
<property role="3F0ifm" value="Module: " />
</node>
</node>
</node>
<!-- Function Editor: def [name]([params]) -> [type]: -->
<node concept="24kQdi" id="Ed_10005">
<ref role="1XX52x" to="k8se:7kypvuIwEDC" resolve="Function" />
<node concept="3EZMnI" id="Ed_10006" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10007" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10008" role="3EZMnx">
<property role="3F0ifm" value="Function: " />
</node>
</node>
</node>
<!-- Parameter Editor: [name]: [type] -->
<node concept="24kQdi" id="Ed_10009">
<ref role="1XX52x" to="k8se:7kypvuIwEEC" resolve="Parameter" />
<node concept="3EZMnI" id="Ed_10010" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10011" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10012" role="3EZMnx">
<property role="3F0ifm" value="Parameter: " />
</node>
</node>
</node>
<!-- Variable Editor: [name]: [type] -->
<node concept="24kQdi" id="Ed_10013">
<ref role="1XX52x" to="k8se:7kypvuIwEFC" resolve="Variable" />
<node concept="3EZMnI" id="Ed_10014" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10015" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10016" role="3EZMnx">
<property role="3F0ifm" value="Variable: " />
</node>
</node>
</node>
<!-- Block Editor: statements list -->
<node concept="24kQdi" id="Ed_10017">
<ref role="1XX52x" to="k8se:7kypvuIwDDD" resolve="Block" />
<node concept="3EZMnI" id="Ed_10018" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10019" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10020" role="3EZMnx">
<property role="3F0ifm" value="Block: " />
</node>
</node>
</node>
<!-- Assignment Editor: [target] = [value] -->
<node concept="24kQdi" id="Ed_10021">
<ref role="1XX52x" to="k8se:7kypvuIwDEC" resolve="Assignment" />
<node concept="3EZMnI" id="Ed_10022" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10023" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10024" role="3EZMnx">
<property role="3F0ifm" value="Assignment: " />
</node>
</node>
</node>
<!-- IfStatement Editor: if [condition]: [then] else: [else] -->
<node concept="24kQdi" id="Ed_10025">
<ref role="1XX52x" to="k8se:7kypvuIwDFC" resolve="IfStatement" />
<node concept="3EZMnI" id="Ed_10026" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10027" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10028" role="3EZMnx">
<property role="3F0ifm" value="IfStatement: " />
</node>
</node>
</node>
<!-- WhileLoop Editor: while [condition]: [body] -->
<node concept="24kQdi" id="Ed_10029">
<ref role="1XX52x" to="k8se:7kypvuIwDGC" resolve="WhileLoop" />
<node concept="3EZMnI" id="Ed_10030" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10031" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10032" role="3EZMnx">
<property role="3F0ifm" value="WhileLoop: " />
</node>
</node>
</node>
<!-- ForLoop Editor: for [iterator] in [iterable]: [body] -->
<node concept="24kQdi" id="Ed_10033">
<ref role="1XX52x" to="k8se:7kypvuIwDHC" resolve="ForLoop" />
<node concept="3EZMnI" id="Ed_10034" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10035" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10036" role="3EZMnx">
<property role="3F0ifm" value="ForLoop: " />
</node>
</node>
</node>
<!-- Return Editor: return [value] -->
<node concept="24kQdi" id="Ed_10037">
<ref role="1XX52x" to="k8se:7kypvuIwDIC" resolve="Return" />
<node concept="3EZMnI" id="Ed_10038" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10039" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10040" role="3EZMnx">
<property role="3F0ifm" value="Return: " />
</node>
</node>
</node>
<!-- ExpressionStatement Editor: [expression] -->
<node concept="24kQdi" id="Ed_10041">
<ref role="1XX52x" to="k8se:7kypvuIwDJC" resolve="ExpressionStatement" />
<node concept="3EZMnI" id="Ed_10042" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10043" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10044" role="3EZMnx">
<property role="3F0ifm" value="ExpressionStatement: " />
</node>
</node>
</node>
<!-- BinaryOperation Editor: [left] [op] [right] -->
<node concept="24kQdi" id="Ed_10045">
<ref role="1XX52x" to="k8se:4ypvuIwCIC2" resolve="BinaryOperation" />
<node concept="3EZMnI" id="Ed_10046" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10047" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10048" role="3EZMnx">
<property role="3F0ifm" value="BinaryOperation: " />
</node>
</node>
</node>
<!-- UnaryOperation Editor: [op][operand] -->
<node concept="24kQdi" id="Ed_10049">
<ref role="1XX52x" to="k8se:7kypvuIwCJC" resolve="UnaryOperation" />
<node concept="3EZMnI" id="Ed_10050" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10051" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10052" role="3EZMnx">
<property role="3F0ifm" value="UnaryOperation: " />
</node>
</node>
</node>
<!-- FunctionCall Editor: [name]([args]) -->
<node concept="24kQdi" id="Ed_10053">
<ref role="1XX52x" to="k8se:7kypvuIwCLC" resolve="FunctionCall" />
<node concept="3EZMnI" id="Ed_10054" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10055" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10056" role="3EZMnx">
<property role="3F0ifm" value="FunctionCall: " />
</node>
</node>
</node>
<!-- VariableReference Editor: [name] -->
<node concept="24kQdi" id="Ed_10057">
<ref role="1XX52x" to="k8se:7kypvuIwCKC" resolve="VariableReference" />
<node concept="3EZMnI" id="Ed_10058" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10059" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10060" role="3EZMnx">
<property role="3F0ifm" value="VariableReference: " />
</node>
</node>
</node>
<!-- IntegerLiteral Editor: [value] -->
<node concept="24kQdi" id="Ed_10061">
<ref role="1XX52x" to="k8se:7kypvuIwCDC" resolve="IntegerLiteral" />
<node concept="3EZMnI" id="Ed_10062" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10063" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10064" role="3EZMnx">
<property role="3F0ifm" value="IntegerLiteral: " />
</node>
</node>
</node>
<!-- FloatLiteral Editor: [value] -->
<node concept="24kQdi" id="Ed_10065">
<ref role="1XX52x" to="k8se:7kypvuIwCEC" resolve="FloatLiteral" />
<node concept="3EZMnI" id="Ed_10066" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10067" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10068" role="3EZMnx">
<property role="3F0ifm" value="FloatLiteral: " />
</node>
</node>
</node>
<!-- StringLiteral Editor: "[value]" -->
<node concept="24kQdi" id="Ed_10069">
<ref role="1XX52x" to="k8se:7kypvuIwCFC" resolve="StringLiteral" />
<node concept="3EZMnI" id="Ed_10070" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10071" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10072" role="3EZMnx">
<property role="3F0ifm" value="StringLiteral: " />
</node>
</node>
</node>
<!-- BooleanLiteral Editor: [value] -->
<node concept="24kQdi" id="Ed_10073">
<ref role="1XX52x" to="k8se:7kypvuIwCGC" resolve="BooleanLiteral" />
<node concept="3EZMnI" id="Ed_10074" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10075" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10076" role="3EZMnx">
<property role="3F0ifm" value="BooleanLiteral: " />
</node>
</node>
</node>
<!-- NullLiteral Editor: null -->
<node concept="24kQdi" id="Ed_10077">
<ref role="1XX52x" to="k8se:7kypvuIwCHC" resolve="NullLiteral" />
<node concept="3EZMnI" id="Ed_10078" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10079" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10080" role="3EZMnx">
<property role="3F0ifm" value="NullLiteral: " />
</node>
</node>
</node>
<!-- ListLiteral Editor: [elements] -->
<node concept="24kQdi" id="Ed_10081">
<ref role="1XX52x" to="k8se:7kypvuIwCMC" resolve="ListLiteral" />
<node concept="3EZMnI" id="Ed_10082" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10083" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10084" role="3EZMnx">
<property role="3F0ifm" value="ListLiteral: " />
</node>
</node>
</node>
<!-- IndexAccess Editor: [target][[index]] -->
<node concept="24kQdi" id="Ed_10085">
<ref role="1XX52x" to="k8se:7kypvuIwCNC" resolve="IndexAccess" />
<node concept="3EZMnI" id="Ed_10086" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10087" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10088" role="3EZMnx">
<property role="3F0ifm" value="IndexAccess: " />
</node>
</node>
</node>
<!-- MemberAccess Editor: [target].[member] -->
<node concept="24kQdi" id="Ed_10089">
<ref role="1XX52x" to="k8se:7kypvuIwCOC" resolve="MemberAccess" />
<node concept="3EZMnI" id="Ed_10090" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10091" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10092" role="3EZMnx">
<property role="3F0ifm" value="MemberAccess: " />
</node>
</node>
</node>
<!-- PrimitiveType Editor: [kind] -->
<node concept="24kQdi" id="Ed_10093">
<ref role="1XX52x" to="k8se:7kypvuIwBCC" resolve="PrimitiveType" />
<node concept="3EZMnI" id="Ed_10094" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10095" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10096" role="3EZMnx">
<property role="3F0ifm" value="PrimitiveType: " />
</node>
</node>
</node>
<!-- ListType Editor: list[[elementType]] -->
<node concept="24kQdi" id="Ed_10097">
<ref role="1XX52x" to="k8se:7kypvuIwBDC" resolve="ListType" />
<node concept="3EZMnI" id="Ed_10098" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10099" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10100" role="3EZMnx">
<property role="3F0ifm" value="ListType: " />
</node>
</node>
</node>
<!-- SetType Editor: set[[elementType]] -->
<node concept="24kQdi" id="Ed_10101">
<ref role="1XX52x" to="k8se:7kypvuIwBGC" resolve="SetType" />
<node concept="3EZMnI" id="Ed_10102" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10103" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10104" role="3EZMnx">
<property role="3F0ifm" value="SetType: " />
</node>
</node>
</node>
<!-- MapType Editor: map[[keyType], [valueType]] -->
<node concept="24kQdi" id="Ed_10105">
<ref role="1XX52x" to="k8se:7kypvuIwBEC" resolve="MapType" />
<node concept="3EZMnI" id="Ed_10106" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10107" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10108" role="3EZMnx">
<property role="3F0ifm" value="MapType: " />
</node>
</node>
</node>
<!-- TupleType Editor: tuple[[elementTypes]] -->
<node concept="24kQdi" id="Ed_10109">
<ref role="1XX52x" to="k8se:7kypvuIwBHC" resolve="TupleType" />
<node concept="3EZMnI" id="Ed_10110" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10111" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10112" role="3EZMnx">
<property role="3F0ifm" value="TupleType: " />
</node>
</node>
</node>
<!-- ArrayType Editor: [elementType][[size]] -->
<node concept="24kQdi" id="Ed_10113">
<ref role="1XX52x" to="k8se:7kypvuIwBIC" resolve="ArrayType" />
<node concept="3EZMnI" id="Ed_10114" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10115" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10116" role="3EZMnx">
<property role="3F0ifm" value="ArrayType: " />
</node>
</node>
</node>
<!-- OptionalType Editor: optional[[innerType]] -->
<node concept="24kQdi" id="Ed_10117">
<ref role="1XX52x" to="k8se:7kypvuIwBFC" resolve="OptionalType" />
<node concept="3EZMnI" id="Ed_10118" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10119" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10120" role="3EZMnx">
<property role="3F0ifm" value="OptionalType: " />
</node>
</node>
</node>
<!-- CustomType Editor: [typeName] -->
<node concept="24kQdi" id="Ed_10121">
<ref role="1XX52x" to="k8se:7kypvuIwBJC" resolve="CustomType" />
<node concept="3EZMnI" id="Ed_10122" role="2wV5jI">
<node concept="2iRfu4" id="Ed_10123" role="2iSdaV" />
<node concept="3F0ifn" id="Ed_10124" role="3EZMnx">
<property role="3F0ifm" value="CustomType: " />
</node>
</node>
</node>
</model> </model>