X-Git-Url: http://nitlanguage.org diff --git a/src/parser_util.nit b/src/parser_util.nit index f23ccda..ff97a78 100644 --- a/src/parser_util.nit +++ b/src/parser_util.nit @@ -83,6 +83,20 @@ redef class ToolContext return nexpr end + # Parse a super class declaration + # Fatal error if the `string` is not a syntactically correct super class declaration + fun parse_superclass(string: String): ASuperclass + do + var mod_string = "class Dummy\nsuper {string}\nend" + var nclassdef = parse_classdef(mod_string).as(AStdClassdef) + var nsuperclasses = nclassdef.n_superclasses + if nsuperclasses.length != 1 then + self.fatal_error(null, "Fatal Error: not a super class declaration") + abort + end + return nsuperclasses.first + end + # Try to parse the `string` as something # # Returns the first possible syntacticaly correct type among: @@ -234,7 +248,7 @@ class InjectedLexer end redef class ANode - # Return an array of tokens that match a given text + # Do a deep search and return an array of tokens that match a given text fun collect_tokens_by_text(text: String): Array[Token] do var v = new CollectTokensByTextVisitor(text) @@ -242,7 +256,7 @@ redef class ANode return v.result end - # Return an array of node that are annotated + # Do a deep search and return an array of node that are annotated # The attached node can be retrieved by two invocation of parent fun collect_annotations_by_name(name: String): Array[AAnnotation] do