ometa Vhdl <: Parser{ keyword :xs = token(xs) ~letterOrDigit -> xs, name = spaces firstAndRest(`letter, `letterOrDigit):cs -> cs.join(''), entitydecl = name:e ?(e != 'end'), entity = keyword(#entity) name:n space "is" (entitydecl*):e 'end' -> n// ';' ->[`Entity, n, e], } e="entity Hallo is j klj jkl klj kljk ljdec end" Vhdl.matchAll(e,"entity") [ ⟨generic declaration ⟩ ] [ ⟨port declaration ⟩ ] [ ⟨local declarations⟩ ] [ begin normalerweise nicht benutzt ⟨passive statements⟩ ] end [ entity ] [ ⟨entityId ⟩ ] ; ⟨generic declaration ⟩ ::= Parameter generic ( ⟨generic list ⟩ : ⟨typeId ⟩ [ := ⟨expression ⟩ ] { ; ⟨generic list ⟩ : ⟨typeId ⟩ [ := ⟨expression ⟩ ] } ); ⟨port declaration ⟩ ::= Ein- und Ausg ¨ ange port ( ⟨port list ⟩ : [ ⟨mode⟩ ] ⟨typeId ⟩ [ := ⟨expression ⟩ ] { ; ⟨port list ⟩ : [ mode] typeId [ := expression ] ); ⟨mode⟩ ::= in | out | inout | buffer