syntax = "proto3"; package semantic; enum Language {Go = 0; Haskell = 1; JavaScript = 2; JSON = 3; JSX = 4; Markdown = 5; Python = 6; Ruby = 7; TypeScript = 8; PHP = 9;} message Blob { bytes blobSource = 1; string blobPath = 2; Language blobLanguage = 3; } message Pos { int64 posLine = 1; int64 posColumn = 2; } message Span { Pos spanStart = 1; Pos spanEnd = 2; } message Array { repeated Term arrayElements = 1; } message Boolean { bool booleanContent = 1; } message Hash { repeated Term hashElements = 1; } message Float { bytes floatContent = 1; } message KeyValue { Term key = 1; Term value = 2; } message Null { } message TextElement { bytes textElementContent = 1; } message Term { oneof syntax {Array array = 1; Boolean boolean = 2; Hash hash = 3; Float float = 4; KeyValue keyValue = 5; Null null = 6; TextElement textElement = 7;} }