[Ooc-checkins] ooc2/src/H2O Parser.Mod,1.15,1.16
Brought to you by:
mva
From: Stewart G. <sgr...@us...> - 2005-01-24 03:27:28
|
Update of /cvsroot/ooc/ooc2/src/H2O In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6067 Modified Files: Parser.Mod Log Message: Added CSTRING variant. Index: Parser.Mod =================================================================== RCS file: /cvsroot/ooc/ooc2/src/H2O/Parser.Mod,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- Parser.Mod 19 Jan 2005 08:21:05 -0000 1.15 +++ Parser.Mod 24 Jan 2005 03:27:20 -0000 1.16 @@ -49,6 +49,7 @@ configArray = 10006; configPointer = 10007; configDefault = 10008; + configCstring = 10009; CONST varargs = 0; @@ -96,6 +97,7 @@ parserOptions- : Option.Options; parserOutputDeclarations : Option.Boolean; + parserOutputDependencies : Option.Boolean; PROCEDURE FindType(types : INTEGER; name : STRING) : T.Type; VAR obj : T.Object; @@ -126,8 +128,6 @@ VAR obj : T.Object; BEGIN - Log.Object("Install", name); - Log.Object("InModule", mod.name); IF T.FindObjectModule(mod, {scope}, name, obj) THEN IF T.AllowedRedefinition(new, obj.type) THEN obj.type := new; @@ -138,7 +138,9 @@ T.Bind(scope, name, 0, new, mod, tail); END; new.Depend(depend); - IF depend.size > 0 THEN ShowDepend(name, depend) END; + IF parserOutputDependencies.value THEN + IF depend.size > 0 THEN ShowDepend(name, depend) END; + END; mod.AddImports(depend); mod.AddDefinition(); END Install; @@ -153,6 +155,16 @@ RETURN process.in.GetModule(); END GetModule; +PROCEDURE MakeName(name : STRING; t : T.Type; mod : T.Module) : T.Type; +VAR + n : T.Type; +BEGIN + n := T.NewType(T.tName, t, t.size, {}); + n.name := name; + n.module := mod; + RETURN n; +END MakeName; + PROCEDURE NewNamedType* (class : SHORTINT; name : STRING) : T.Type; VAR new : T.Type; @@ -273,7 +285,7 @@ > EnumDecl ::= "enum" [ ident ] [ "{" Element { "," Element } "}" ]. *) VAR - tag : STRING; + tag, name : STRING; t : T.Type; id : LONGINT; PROCEDURE Element; @@ -389,7 +401,7 @@ END; ELSE err.Error("Missing tag in struct/union declaration"); - t := NewNamedType(class, tag); + t := NewNamedType(class, "error"); END; RETURN t; END StructDecl; @@ -1165,9 +1177,7 @@ END ELSE IF class = T.scTypedef THEN - t := T.NewType(T.tName, type, type.size, {}); - t.name := name; - t.module := GetModule(); + t := MakeName(name, type, mod); InstallType(T.typedefs, mod, name, t); ELSE Install(T.vars, mod, "Object", name, type, TRUE); @@ -1349,6 +1359,7 @@ CASE token.sym OF | configArray: GetSym; RETURN Variant.array; | configPointer: GetSym; RETURN Variant.pointer; + | configCstring: GetSym; RETURN Variant.cstring; | configDefault: GetSym; RETURN Variant.default; | configVar: GetSym; RETURN Variant.var; | configSet: GetSym; RETURN Variant.set; @@ -1449,7 +1460,6 @@ GetSym; WHILE token.sym # Scanner.endFile DO EvalExpr(result); - Log.Object("result", result); Expect(Scanner.semicolon); END; END Evaluate; @@ -1526,6 +1536,7 @@ Scanner.AddKeyWord(configKeyWords, "ARRAY", configArray); Scanner.AddKeyWord(configKeyWords, "POINTER", configPointer); Scanner.AddKeyWord(configKeyWords, "DEFAULT", configDefault); + Scanner.AddKeyWord(configKeyWords, "CSTRING", configCstring); END AddConfigKeyWords; PROCEDURE AddKeyWords; @@ -1608,6 +1619,7 @@ BEGIN parserOptions := NEW(Option.Options); parserOutputDeclarations := parserOptions.Boolean("ParserOutputDeclarations", FALSE); + parserOutputDependencies := parserOptions.Boolean("ParserOutputDependencies", FALSE); END InitOptions; BEGIN |